From 207e5b7e356070b2a6c434495551cd080f3c3d69 Mon Sep 17 00:00:00 2001 From: xiejiayu <> Date: Mon, 11 Aug 2025 12:22:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0SOP=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E5=92=8Cprompt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bisheng_langchain/linsight/prompt.py | 95 ++++++++++--------- .../linsight/react_prompt.py | 4 +- 2 files changed, 54 insertions(+), 45 deletions(-) diff --git a/src/backend/bisheng_langchain/linsight/prompt.py b/src/backend/bisheng_langchain/linsight/prompt.py index 585025f04..6af0823ff 100644 --- a/src/backend/bisheng_langchain/linsight/prompt.py +++ b/src/backend/bisheng_langchain/linsight/prompt.py @@ -1,75 +1,84 @@ # 生成sop的prompt模板, variables -> query: 用户问题;sop:参考sop; tools_str: 已有工具字符串;file_list_str: 用户上传的文件名列表 # knowledge_list_str: 用户有权限的知识库列表 -SopPrompt = """基于以下信息创建一个标准操作流程(SOP): -请基于用户需求的生成SOP: -1. SOP指的是通过哪些标准步骤能指导大模型解决用户的问题。 -需要包含以下内容: -2. 问题概述 - 简要描述问题和目标,需要体现本SOP的适用范围 -3. 所需的工具和资源 - 列出解决此类问题所需的工具、库或资源(需要是已有可获取的),以及使用工具的最佳实践。 -4. 步骤说明 - 提供清晰的步骤指导,最后一个步骤一定要是交付与汇报,在这个步骤里明确描述出交付物是什么。 - 4.1 由于每个步骤是不同的Agent来进行处理,不同的Agent之间可传递的信息不宜过多,所以阅读原文和分析必须包含在一个步骤中。 - 4.2 因此拆分任务的需求,需要先用一个步骤列出所有需要分步处理内容(例如生成目录,或生成文件名),然后下一个步骤针对此步骤进行处理,所有的具体处理应该都放在一个步骤里面,如果需要写入文件,需要在此步骤说明是每判断一个追加写入文件。 -5. 如果用户意图需要输出很长的内容,推荐使用写文档的工具,写文档的工具需要先拆解需要写的目录结构,然后给定一个文件名,然后一步一步的完成,每一步都写入同一个文件。 -6. 你需要先输出思考过程,说清楚你生成SOP的逻辑,然后再输出SOP。思考和SOP之间必须使用来进行分割。 -7. 使用@来说明使用什么工具,文件以及知识库,必须遵循以下格式: -工具的表示方法:@{{工具名}}@ -文件的表示方法:@{{文件名}}的文件储存信息:{{'文件储存在语义检索库中的id':'{{id}}','文件储存地址':'{{文件路径}}'}}@ -知识库的表示方法:@{{知识库名}}的储存信息:{{'知识库储存在语义检索库中的id':'{{id}}'}}@ +SopPrompt = """<背景>你需要根据用户需求创建一个指导手册(SOP),指导手册指的是通过标准步骤指导大模型解决用户的需求。 + +<指导手册包含内容> +1. 问题概述 - 简要描述问题和目标,需要体现本指导手册的适用范围 +2. 所需的工具和资源 - 列出解决此类问题所需的工具、库或资源(需要是已有可获取的),以及使用工具的最佳实践。 +3. 步骤说明 - 提供清晰的步骤指导,最后一个步骤一定要是交付与汇报,在这个步骤里明确描述出交付物是什么。 + 3.1 由于每个步骤是不同的Agent来进行处理,不同的Agent之间可传递的信息不宜过多,通过写入中间文件然后读取的方式来传递大量信息。 +4. 你需要先输出思考过程,说清楚你生成指导手册的逻辑,然后再输出指导手册。思考和指导手册之间必须使用来进行分割。 +5. 使用@来说明使用什么工具,文件以及知识库,必须遵循以下格式: +<格式要求> +工具的表示方法:@工具名@ +用户上传文件的表示方法:@文件名的文件储存信息:{{'文件储存在语义检索库中的id':'{{id}}','文件储存地址':'{{文件路径}}'}}@ +知识库的表示方法:@知识库名的储存信息:{{'知识库储存在语义检索库中的id':'{{id}}'}}@ +输出文件的表示方法:文件名 + + {file_list_str} {knowledge_list_str} -已有工具: +<已有工具列表> {tools_str} + -模仿以下SOP的格式: +<参考指导手册> {sop} + -用户需求: +<用户需求> {query} + -输出应当是Markdown格式,便于阅读和理解。请确保SOP是实用的,可以帮助用户解决类似问题。 -你需要先思考,然后再输出SOP。使用来分割思考和SOP。 +输出应当是Markdown格式,便于阅读和理解。请确保指导手册是实用的,可以帮助用户解决类似问题。 +你需要先思考,然后再输出指导手册。使用来分割思考和指导手册。 思考过程:""" # 调整sop时的反馈prompt模板, variables -> query: 用户问题;sop:参考sop;feedback:用户反馈; history_summary: 历史执行过程 # variables -> tools_str: 已有工具字符串; file_list_str: 用户上传的文件名列表; knowledge_list_str: 用户有权限的知识库列表 -FeedBackSopPrompt = """基于以下信息创建一个标准操作流程(SOP): +FeedBackSopPrompt = """基于以下信息创建一个指导手册(SOP): {file_list_str} {knowledge_list_str} -已有工具: +<已有工具列表> {tools_str} + -用户需求: {query} - -解决问题的执行过程: -{history_summary} +<用户需求> +{query} + +<待优化指导手册> {sop} + -用户对以上执行过程,SOP和结果的反馈: +用户对指导手册的反馈: {feedback} -请基于以上内容和反馈创建一个清晰、结构化,且更好满足用户需求的SOP文档: -需要包含以下内容: -1. 问题概述 - 简要描述问题和目标,需要体现本SOP的适用范围 +请基于以上内容和反馈创建一个清晰、结构化,且更好满足用户需求的指导手册: +<指导手册包含内容> +1. 问题概述 - 简要描述问题和目标,需要体现本指导手册的适用范围 2. 所需的工具和资源 - 列出解决此类问题所需的工具、库或资源(需要是已有可获取的),以及使用工具的最佳实践。 3. 步骤说明 - 提供清晰的步骤指导,最后一个步骤一定要是交付与汇报,在这个步骤里明确描述出交付物是什么。 - 3.1 由于每个步骤是不同的Agent来进行处理,不同的Agent之间可传递的信息不宜过多,所以阅读原文和分析必须包含在一个步骤中。 - 3.2 因此拆分任务的需求,需要先用一个步骤列出所有需要分步处理内容(例如生成目录,或生成文件名),然后下一个步骤针对此步骤进行处理,所有的具体处理应该都放在一个步骤里面,如果需要写入文件,需要在此步骤说明是每判断一个追加写入文件。 -4. 如果用户意图需要输出很长的内容,推荐使用写文档的工具,写文档的工具需要先拆解需要写的目录结构,然后给定一个文件名,然后一步一步的完成,每一步都写入同一个文件。 -5. 你需要先输出思考过程,说清楚你生成SOP的逻辑,然后再输出SOP。思考和SOP之间必须使用来进行分割。 -7. 使用@来说明使用什么工具,文件以及知识库,必须遵循以下格式: -工具的表示方法:@{{工具名}}@ -文件的表示方法:@{{文件名}}的文件储存信息:{{'文件储存在语义检索库中的id':'{{id}}','文件储存地址':'{{文件路径}}'}}@ -知识库的表示方法:@{{知识库名}}的储存信息:{{'知识库储存在语义检索库中的id':'{{id}}'}}@ + 3.1 由于每个步骤是不同的Agent来进行处理,不同的Agent之间可传递的信息不宜过多,通过写入中间文件然后读取的方式来传递大量信息。 +4. 你需要先输出思考过程,说清楚你生成指导手册的逻辑,然后再输出指导手册。思考和指导手册之间必须使用来进行分割。 +5. 使用@来说明使用什么工具,文件以及知识库,必须遵循以下格式: +<格式要求> +工具的表示方法:@工具名@ +用户上传文件的表示方法:@文件名的文件储存信息:{{'文件储存在语义检索库中的id':'{{id}}','文件储存地址':'{{文件路径}}'}}@ +知识库的表示方法:@知识库名的储存信息:{{'知识库储存在语义检索库中的id':'{{id}}'}}@ +输出文件的表示方法:文件名 + + -输出应当是Markdown格式,便于阅读和理解。请确保SOP是实用的,可以帮助用户解决类似问题。 -输出内容应该简练""" +输出应当是Markdown格式,便于阅读和理解。请确保指导手册是实用的,可以帮助用户解决类似问题。 +你需要先思考,然后再输出指导手册。使用来分割思考和指导手册。 +思考过程:""" # 生成一级子任务的prompt模板, variables -> current_time: 当前时间;file_dir: 用户上传的文件路径;sop: 用户SOP;query: 用户问题 GenerateTaskPrompt = """<背景资料> @@ -146,7 +155,7 @@ SingleAgentPrompt = """你是一个强大的{profile},可以使用提供的工 用户最终问题: "{query}" -用户提供的完整SOP: +用户提供的完整指导手册(SOP): {sop} 这是任务整体规划: @@ -160,7 +169,7 @@ SingleAgentPrompt = """你是一个强大的{profile},可以使用提供的工 {target} 当你完成了阶段目标,应该结束执行。 -当前应该遵守的SOP: +当前应该遵守的指导手册(SOP): {single_sop} 注意事项: @@ -195,7 +204,7 @@ LoopAgentSplitPrompt = """你是一名专业的流程拆解专家,请根据用 用户最终问题: {query} -用户提供的完整SOP: +用户提供的完整指导手册(SOP): {sop} 这是任务整体规划: diff --git a/src/backend/bisheng_langchain/linsight/react_prompt.py b/src/backend/bisheng_langchain/linsight/react_prompt.py index 4e9ee05ac..2e08ed755 100644 --- a/src/backend/bisheng_langchain/linsight/react_prompt.py +++ b/src/backend/bisheng_langchain/linsight/react_prompt.py @@ -62,7 +62,7 @@ ReactSingleAgentPrompt = """你是一个强大的{profile},可以使用以下 用户最终问题: "{query}" -用户提供的完整SOP: +用户提供的完整指导手册(SOP): {sop} 这是任务整体规划: @@ -76,7 +76,7 @@ ReactSingleAgentPrompt = """你是一个强大的{profile},可以使用以下 {target} 当你完成了当前目标,应该结束执行。 -当前应该遵守的SOP: +当前应该遵守的指导手册(SOP): {single_sop} 已经执行的步骤: