From af29716571317a7dcd4d4365a241c7d3770c9135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?= Date: Fri, 28 Nov 2025 12:06:23 +0800 Subject: [PATCH] custom preamble --- routes/chat.py | 3 ++- utils/fastapi_utils.py | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/routes/chat.py b/routes/chat.py index e88d8e9..2b13eb6 100644 --- a/routes/chat.py +++ b/routes/chat.py @@ -230,8 +230,9 @@ async def enhanced_generate_stream_response( chat_history = format_messages_to_chat_history(messages) # 创建preamble_text生成任务 + preamble_text, system_prompt = get_preamble_text(language, system_prompt) preamble_task = asyncio.create_task( - call_preamble_llm(chat_history, query_text, get_preamble_text(language), language, model_name, api_key, model_server) + call_preamble_llm(chat_history, query_text, preamble_text, language, model_name, api_key, model_server) ) # 创建guideline分析和agent创建任务 diff --git a/utils/fastapi_utils.py b/utils/fastapi_utils.py index 23f67e0..fd9455b 100644 --- a/utils/fastapi_utils.py +++ b/utils/fastapi_utils.py @@ -421,7 +421,19 @@ def get_language_text(language: str): } return language_map.get(language.lower(), '') -def get_preamble_text(language: str): +def get_preamble_text(language: str, system_prompt: str): + # 首先检查system_prompt中是否有preamble代码块 + if system_prompt: + preamble_pattern = r'```preamble\s*\n(.*?)\n```' + preamble_matches = re.findall(preamble_pattern, system_prompt, re.DOTALL) + if preamble_matches: + # 提取preamble内容 + preamble_content = preamble_matches[0].strip() + # 从system_prompt中删除preamble代码块 + cleaned_system_prompt = re.sub(preamble_pattern, '', system_prompt, flags=re.DOTALL) + return preamble_content, cleaned_system_prompt + + # 如果没有找到preamble代码块,使用默认的preamble选择 if language == "jp": language = "ja" preamble_choices_map = { @@ -465,14 +477,15 @@ def get_preamble_text(language: str): "お待たせしました。", "対応いたします。", "わかりましたね。", - "承知しました。", + "承知いたしました。", "確認させてください。", "少々お待ちいただけますか。", "お調べいたします。", "対応いたしますね。" ] }; - return "\n".join(preamble_choices_map.get(language.lower(), [])) + default_preamble = "\n".join(preamble_choices_map.get(language.lower(), [])) + return default_preamble, system_prompt # 返回默认preamble和原始system_prompt async def call_preamble_llm(chat_history: str, last_message: str, preamble_choices_text: str, language: str, model_name: str, api_key: str, model_server: str) -> str: