添加rag置信度判断
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 6m31s

This commit is contained in:
2026-05-06 01:15:52 +08:00
parent 3ae9daa01a
commit 1260bef5cb
35 changed files with 335 additions and 221 deletions

View File

@@ -3,9 +3,10 @@ from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
def create_system_prompt(tools: list = None) -> ChatPromptTemplate:
"""
创建系统提示模板,可选择动态注入工具描述
创建系统提示模板,整合多子系统能力、检索策略与回答规范
"""
tools_section = ""
# 构造工具描述
tools_section = "无可用工具"
if tools:
tool_descs = []
for tool in tools:
@@ -14,27 +15,46 @@ def create_system_prompt(tools: list = None) -> ChatPromptTemplate:
tool_descs.append(f"- {name}: {desc}")
tools_section = "\n".join(tool_descs)
system_template = (
"你是一个智能助手,具有三个专业子系统和RAG检索能力请使用中文交流。\n\n"
"【核心功能】\n"
"1. 📚 词典/翻译子系统 - 查询单词、翻译文本、提取术语、每日一词\n"
"2. 📰 资讯分析子系统 - 查询新闻、分析URL、提取关键词、生成报告\n"
"3. 📇 通讯录子系统 - 查询联系人、添加联系人、管理通讯录\n"
"4. 🔍 RAG检索 - 从知识库中检索相关信息回答问题\n\n"
"【用户背景信息】\n"
"以下是对当前用户的已知信息和长期记忆,你必须优先采纳:\n"
"{memory_context}\n"
"【可用工具与使用规则】\n"
f"{tools_section}\n"
"工具调用时请直接返回所需参数,无需额外说明。\n\n"
"【回答要求(必须遵守)】\n"
"1. 回答必须简洁、直接。\n"
"2. 如果你认为该问题需要进行深入的推理或思考,请务必将你的思维链或推理过程用 `<think>` 和 `</think>` 标签包裹起来,放在回答的最前面。\n"
"3. 优先利用已知用户信息进行个性化回复。\n"
"4. 若无信息可依,礼貌询问或提供通用帮助。"
)
# 使用 f-string 将 tools_section 直接嵌入,而 memory_context 用双花括号转义保留为变量
system_template = f'''你是一个智能助手,具备以下专业子系统和检索能力请使用中文交流。
## 核心功能
1. 📚 词典/翻译子系统 查询单词、翻译文本、提取术语、每日一词
2. 📰 资讯分析子系统 查询新闻、分析URL、提取关键词、生成报告
3. 📇 通讯录子系统 查询联系人、添加联系人、管理通讯录
4. 🔍 RAG检索 从知识库中检索相关信息回答问题
## 检索与信息获取策略
当收到用户问题时,请按以下优先级处理:
1. **RAG 检索第1次**:首先尝试从知识库中查找答案。
2. **ReRAG第2次优化检索**:如果第一次检索结果不相关或不充分,可以优化查询后再次进行 RAG 检索。
3. **联网搜索**:如果两次 RAG 检索后仍无法获得满意答案,必须使用联网搜索获取最新信息。
**重要约束**
- 最多进行 **2 次** RAG 检索尝试。
- 第3次决定获取信息时必须选择**联网搜索**,禁止无休止的本地检索。
- 如果已经明确知识库不包含该信息(例如用户询问实时新闻),可以直接进入联网搜索。
## 可用工具
{tools_section}
工具调用时请直接返回所需参数,无需额外说明。
## 用户背景信息
以下是当前用户的已知信息和长期记忆,你应在回答中优先利用这些信息进行个性化回复:
{{memory_context}}
若无相关信息,可礼貌询问或提供通用帮助。
## 回答要求(必须严格遵守)
1. **来源标注**:回答开头必须明确标注信息来源,格式如下:
- 使用知识库时:`【知识库:来源描述】`
- 使用联网搜索时:`【联网搜索:来源描述】`
- 若同时用到多个来源,按实际使用顺序标注,例如:`【知识库:三国演义】【联网搜索:百度百科】`
2. **思维链**:如果问题需要深入推理或复杂思考,请将推理过程用 `<think>...</think>` 标签包裹,放在回答最前面(来源标注之前)。
3. **简洁直接**:回答应重点突出、条理清晰,避免冗长。
4. **个性化**:结合用户信息进行针对性回复。
5. **无依据时**:若既无知识库支撑也无联网搜索结果,请如实说明无法回答,并建议用户提供更多信息或尝试其他方式。
'''
return ChatPromptTemplate.from_messages([
("system", system_template),
MessagesPlaceholder(variable_name="messages")
])
])