From b8bd7d7eb27aaaadae728599f64a0874f66196ea Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 12 Jan 2025 15:31:30 +0000 Subject: feat: Support customizing the summarization prompt. Fixes #731 --- packages/shared/prompts.ts | 6 +++++- packages/shared/types/prompts.ts | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'packages/shared') diff --git a/packages/shared/prompts.ts b/packages/shared/prompts.ts index 82c9ba6e..40e706b2 100644 --- a/packages/shared/prompts.ts +++ b/packages/shared/prompts.ts @@ -53,11 +53,15 @@ You must respond in JSON with the key "tags" and the value is an array of string export function buildSummaryPrompt( lang: string, + customPrompts: string[], content: string, contextLength: number, ) { const constructPrompt = (c: string) => ` - Summarize the following content in 3-4 sentences in ${lang}, responding ONLY with the summary: + Summarize the following content responding ONLY with the summary. You MUST follow the following rules: +- Summary must be in 3-4 sentences. +- The summary language must be in ${lang}. +${customPrompts && customPrompts.map((p) => `- ${p}`).join("\n")} ${c}`; const promptSize = calculateNumTokens(constructPrompt("")); diff --git a/packages/shared/types/prompts.ts b/packages/shared/types/prompts.ts index 71a7ee02..e02208e7 100644 --- a/packages/shared/types/prompts.ts +++ b/packages/shared/types/prompts.ts @@ -2,7 +2,12 @@ import { z } from "zod"; const MAX_PROMPT_TEXT_LENGTH = 500; -export const zAppliesToEnumSchema = z.enum(["all", "text", "images"]); +export const zAppliesToEnumSchema = z.enum([ + "all_tagging", + "text", + "images", + "summary", +]); export const zPromptSchema = z.object({ id: z.string(), -- cgit v1.2.3-70-g09d2