diff --git a/docSite/content/docs/workflow/examples/fixingEvidence.md b/docSite/content/docs/workflow/examples/fixingEvidence.md index 4ba2d52b0f0..be059c13f16 100644 --- a/docSite/content/docs/workflow/examples/fixingEvidence.md +++ b/docSite/content/docs/workflow/examples/fixingEvidence.md @@ -114,24 +114,12 @@ weight: 401 "value": "gpt-3.5-turbo", "list": [ { - "label": "FastGPT-4k", + "label": "FastGPT", "value": "gpt-3.5-turbo" }, - { - "label": "FastGPT-16k", - "value": "gpt-3.5-turbo-16k" - }, - { - "label": "文心一言", - "value": "ERNIE-Bot" - }, { "label": "FastGPT-Plus", "value": "gpt-4" - }, - { - "label": "glm2(演示娱乐)", - "value": "glm2-6b" } ], "connected": true diff --git a/projects/app/src/components/Markdown/index.tsx b/projects/app/src/components/Markdown/index.tsx index e8eb3b67f22..4bbc3602edd 100644 --- a/projects/app/src/components/Markdown/index.tsx +++ b/projects/app/src/components/Markdown/index.tsx @@ -48,7 +48,7 @@ const Markdown = ({ source, isChatting = false }: { source: string; isChatting?: ); const formatSource = source - .replace(/\\n/g, '\n ') + .replace(/\\n\W/g, '\n ') .replace(/(http[s]?:\/\/[^\s,。]+)([。,])/g, '$1 $2') .replace(/\n*(\[QUOTE SIGN\]\(.*\))/g, '$1'); diff --git a/projects/app/src/global/core/prompt/AIChat.ts b/projects/app/src/global/core/prompt/AIChat.ts index ea2a18f809d..4570772c636 100644 --- a/projects/app/src/global/core/prompt/AIChat.ts +++ b/projects/app/src/global/core/prompt/AIChat.ts @@ -10,12 +10,14 @@ export const Prompt_QuoteTemplateList: PromptTemplateItem[] = [ { title: '问答模板', desc: '适合 QA 问答结构的知识库,可以让AI较为严格的按预设内容回答', - value: ` + value: ` +<问题> {{q}} {{a}} -` + +` }, { title: '标准严格模板', @@ -26,12 +28,14 @@ export const Prompt_QuoteTemplateList: PromptTemplateItem[] = [ { title: '严格问答模板', desc: '在问答模板基础上,对模型的回答做更严格的要求。', - value: ` + value: ` +<问题> {{q}} {{a}} -` + +` } ]; @@ -39,7 +43,7 @@ export const Prompt_QuotePromptList: PromptTemplateItem[] = [ { title: '标准模板', desc: '', - value: `使用 标记中的内容作为你的知识: + value: `使用 标记中的内容作为你的知识: {{quote}} @@ -47,8 +51,8 @@ export const Prompt_QuotePromptList: PromptTemplateItem[] = [ 回答要求: - 如果你不清楚答案,你需要澄清。 -- 避免提及你是从 获取的知识。 -- 保持答案与 中描述的一致。 +- 避免提及你是从 获取的知识。 +- 保持答案与 中描述的一致。 - 使用 Markdown 语法优化回答格式。 - 使用与问题相同的语言回答。 @@ -57,37 +61,39 @@ export const Prompt_QuotePromptList: PromptTemplateItem[] = [ { title: '问答模板', desc: '', - value: `使用 标记中的问答对进行回答。 + value: `Use the Q&A pairs within tags for responses. {{quote}} -回答要求: -- 选择其中一个或多个问答对进行回答。 -- 回答的内容应尽可能与 <答案> 中的内容一致。 -- 如果没有相关的问答对,你需要澄清。 -- 避免提及你是从 QA 获取的知识,只需要回复答案。 - -问题:"""{{question}}"""` +Answer Requirements: +- Choose one or more Q&A pairs to respond to. +- Ensure that the response closely aligns with the content within . +- Clarify if there are no relevant Q&A pairs. +- Avoid mentioning that knowledge comes from Q&A pairs unless the user mentions +- All Mathematical symbols and formulas must be expressed in the following LaTex format. Inline format $g_{\\mu\\nu}$ and display format: +$$ +i\\hbar \\frac{\\partial}{\\partial t}\\left|\\Psi(t)\\right>=H\\left|\\Psi(t)\\right> +$$ + +Question:"""{{question}}"""` }, { title: '标准严格模板', desc: '', - value: `忘记你已有的知识,仅使用 标记中的内容作为你的知识: + value: `忘记你已有的知识,仅使用 标记中的内容作为你的知识: - {{quote}} - 思考流程: -1. 判断问题是否与 标记中的内容有关。 +1. 判断问题是否与 标记中的内容有关。 2. 如果有关,你按下面的要求回答。 3. 如果无关,你直接拒绝回答本次问题。 回答要求: -- 避免提及你是从 获取的知识。 -- 保持答案与 中描述的一致。 +- 避免提及你是从 获取的知识。 +- 保持答案与 中描述的一致。 - 使用 Markdown 语法优化回答格式。 - 使用与问题相同的语言回答。 @@ -98,9 +104,7 @@ export const Prompt_QuotePromptList: PromptTemplateItem[] = [ desc: '', value: `忘记你已有的知识,仅使用 标记中的问答对进行回答。 - {{quote}} -} 思考流程: 1. 判断问题是否与 标记中的内容有关。 diff --git a/projects/app/src/global/core/prompt/agent.ts b/projects/app/src/global/core/prompt/agent.ts index 5e8efa9ca8f..dacedb1b5c1 100644 --- a/projects/app/src/global/core/prompt/agent.ts +++ b/projects/app/src/global/core/prompt/agent.ts @@ -1,14 +1,21 @@ export const Prompt_AgentQA = { - description: ` 标记中是一段文本,学习和分析它,并整理学习成果: -- 提出问题并给出每个问题的答案。 -- 答案需详细完整,尽可能保留原文描述。 -- 答案可以包含普通文字、链接、代码、表格、公示、媒体链接等 Markdown 元素。 -- 最多提出 30 个问题。 + description: `As a theoretical physicist, you are familiar with both the core and advanced courses (QFT, GR, etc). Mathematics courses are also covered. Your style is to understand physics from mathematics, because the use of mathematical language and concepts makes the problem clear. + +## Your task is +- The content in the tag is part of the academic paper in LaTeX source code form. Study and analyze it. Notice: the content may be incomplete, you try to complete +- Understand the content, recall relevant knowledge or examples in your mind, then think step by step +- According to the paper, pose at least 5 questions and their answers (Q&A pairs) + +## Q&A pairs should +- Keep Q&A complete +- Professional answer. Provide in-depth explanations and mathematical derivations +- Equations should be expained +- All Mathematical symbols and formulas must be expressed in the following LaTex format. Inline format $g_{\\mu\\nu}$ and display format: +$$ +i\\hbar \\frac{\\partial}{\\partial t}\\left|\\Psi(t)\\right>=H\\left|\\Psi(t)\\right> +$$ `, - fixedText: `请按以下格式整理学习成果: - -文本 - + fixedText: `最后,你需要按下面的格式返回多个问题和答案: Q1: 问题。 A1: 答案。 Q2: @@ -20,43 +27,44 @@ A2: {{text}} - + ` }; -export const Prompt_ExtractJson = `你可以从 <对话记录> 中提取指定 JSON 信息,你仅需返回 JSON 字符串,无需回答问题。 -<提取要求> +export const Prompt_ExtractJson = `You can extract specified JSON information from records. Please return the JSON string without answering questions. + {{description}} - + <字段说明> 1. 下面的 JSON 字符串均按照 JSON Schema 的规则描述。 -2. key 代表字段名;description 代表字段的描述;enum 是可选值,代表可选的 value。 -3. 如果没有可提取的内容,忽略该字段。 -4. 本次需提取的JSON Schema:{{json}} +2. key 代表字段名;description 代表字段的描述;required 代表字段是否必须;enum 是可选值,代表可选的 value。 +3. 如果字段内容为空,你可以返回空字符串。 + +{{json}} -<对话记录> + {{text}} - + `; -export const Prompt_CQJson = `我会给你几个问题类型,请参考背景知识(可能为空)和对话记录,判断我“本次问题”的类型,并返回一个问题“类型ID”: -<问题类型> +export const Prompt_CQJson = `I will provide you with several question types. Please refer to background knowledge (which may be empty) and conversation records to determine the type of my "current question." Return a question "type ID" accordingly: + {{typeList}} - + -<背景知识> + {{systemPrompt}} - + -<对话记录> + {{history}} - + -Human:"{{question}}" +Human: "{{question}}" -类型ID= +Type ID= `; -export const Prompt_QuestionGuide = `我不太清楚问你什么问题,请帮我生成 3 个问题,引导我继续提问。问题的长度应小于20个字符,按 JSON 格式返回: ["问题1", "问题2", "问题3"]`; +export const Prompt_QuestionGuide = `I'm not sure what questions to ask you. Please help me generate 3 questions to guide further inquiries. The length of each question should be less than 20 characters. Return in JSON format: ["Question1", "Question2", "Question3"]`; diff --git a/projects/app/src/service/events/generateQA.ts b/projects/app/src/service/events/generateQA.ts index 4053b3b417a..028ca963ad2 100644 --- a/projects/app/src/service/events/generateQA.ts +++ b/projects/app/src/service/events/generateQA.ts @@ -175,7 +175,7 @@ ${replaceVariable(Prompt_AgentQA.fixedText, { text })}`; * 检查文本是否按格式返回 */ function formatSplitText(text: string, rawText: string) { - text = text.replace(/\\n/g, '\n'); // 将换行符替换为空格 + text = text.replace(/\\n\W/g, '\n'); // 将换行符替换为空格 const regex = /Q\d+:(\s*)(.*)(\s*)A\d+:(\s*)([\s\S]*?)(?=Q\d|$)/g; // 匹配Q和A的正则表达式 const matches = text.matchAll(regex); // 获取所有匹配到的结果 diff --git a/projects/app/src/service/moduleDispatch/chat/oneapi.ts b/projects/app/src/service/moduleDispatch/chat/oneapi.ts index b074b46394e..f0b89765943 100644 --- a/projects/app/src/service/moduleDispatch/chat/oneapi.ts +++ b/projects/app/src/service/moduleDispatch/chat/oneapi.ts @@ -140,7 +140,7 @@ export const dispatchChatCompletion = async (props: ChatProps): Promise new Promise<{ buffer?: Uint8Array }>(async (resolve, reject) => { - text = text.replace(/\\n/g, '\n'); + text = text.replace(/\\n\W/g, '\n'); try { // tts play if (audio && ttsConfig && ttsConfig?.type === TTSTypeEnum.model) {