From c58b20e56f2867fd2bb4e40989dfa135385c6469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?= Date: Thu, 4 Dec 2025 13:50:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9guideline=5Fprompt=EF=BC=9A?= =?UTF-8?q?=E5=8F=AA=E9=9C=80=E8=A6=81=E5=88=97=E5=87=BA=E8=AF=A6=E7=BB=86?= =?UTF-8?q?=E7=9A=84=E5=B7=A5=E5=85=B7=E8=B0=83=E7=94=A8=E6=AD=A5=E9=AA=A4?= =?UTF-8?q?=E5=8D=B3=E5=8F=AF=EF=BC=8C=E4=B8=8D=E9=9C=80=E8=A6=81=E8=80=83?= =?UTF-8?q?=E8=99=91=E5=9B=9E=E5=A4=8D=E7=94=A8=E6=88=B7=E7=9A=84=E8=AF=9D?= =?UTF-8?q?=E6=9C=AF=EF=BC=8C=E6=AD=A5=E9=AA=A4=E6=95=B0=E9=87=8F=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E5=AE=9E=E9=99=85=E9=9C=80=E6=B1=82=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prompt/guideline_prompt.md | 2 +- routes/chat.py | 30 +++++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/prompt/guideline_prompt.md b/prompt/guideline_prompt.md index 3964a6b..ee0f1e5 100644 --- a/prompt/guideline_prompt.md +++ b/prompt/guideline_prompt.md @@ -18,7 +18,7 @@ - **优先级排序**: 确定任务执行顺序 ### 3. 计划阶段 (Planning) -- **步骤制定**: 详细的执行步骤,步骤数量根据实际需求调整,每个步骤应具体可执行 +- **步骤制定**: 只需要列出详细的工具调用步骤即可,不需要考虑回复用户的话术,步骤数量根据实际需求调整。 --- diff --git a/routes/chat.py b/routes/chat.py index 1379722..12910f7 100644 --- a/routes/chat.py +++ b/routes/chat.py @@ -57,6 +57,25 @@ def append_user_last_message(messages: list, content: str) -> bool: messages[-1]['content'] += content return messages +def append_assistant_last_message(messages: list, content: str) -> bool: + """向最后一条用户消息追加内容 + + Args: + messages: 消息列表 + content: 要追加的内容 + condition: 可选条件,如果提供则检查消息角色是否匹配此条件 + + Returns: + bool: 是否成功追加内容 + """ + if not messages or len(messages) == 0: + return messages + last_message = messages[-1] + if last_message and last_message.get('role') == 'assistant': + messages[-1]['content'] += content + else: + messages.append({"role":"assistant","content":content}) + return messages async def process_guidelines_and_terms( @@ -243,12 +262,12 @@ async def enhanced_generate_stream_response( # 准备最终的消息 final_messages = messages.copy() - final_messages = append_user_last_message(final_messages, f"\n\nlanguage:{get_language_text(language)}") - if guideline_reasoning: # 用###分割guideline_reasoning,取最后一段作为Guidelines guidelines_text = guideline_reasoning.split('###')[-1].strip() if guideline_reasoning else "" - final_messages = append_user_last_message(final_messages, f"\n\nGuidelines:\n{guidelines_text}\nPlease follow these guidelines step by step.") + final_messages = append_assistant_last_message(final_messages, f"language:{get_language_text(language)}\n\nGuidelines:\n{guidelines_text}\n I will follow these guidelines step by step.") + else: + final_messages = append_assistant_last_message(final_messages, f"\n\nlanguage:{get_language_text(language)}") # 第三阶段:agent响应流式传输 logger.info(f"Starting agent stream response") @@ -359,13 +378,14 @@ async def create_agent_and_generate_response( # 准备最终的消息 final_messages = messages.copy() - final_messages = append_user_last_message(final_messages, f"\n\nlanguage:{get_language_text(language)}") pre_message_list = [] if guideline_reasoning: # 用###分割guideline_reasoning,取最后一段作为Guidelines guidelines_text = guideline_reasoning.split('###')[-1].strip() if guideline_reasoning else "" - final_messages = append_user_last_message(final_messages, f"\n\nGuidelines:\n{guidelines_text}\nPlease follow these guidelines step by step.") + final_messages = append_assistant_last_message(final_messages, f"language:{get_language_text(language)}\n\nGuidelines:\n{guidelines_text}\n I will follow these guidelines step by step.") pre_message_list.append({"role": "assistant","reasoning_content": guideline_reasoning+ "\n"}) + else: + final_messages = append_assistant_last_message(final_messages, f"\n\nlanguage:{get_language_text(language)}") # 非流式响应 agent_responses = agent.run_nonstream(final_messages)