feat(chatter): 整合工具使用并增强主聊天流程中的上下文

此提交为聊天系统引入了若干重大增强,以提高回应质量、上下文感知能力和角色一致性。

**Kokoro 流程中的工具整合:**
- 在主聊天提示中新增了一个 `tool_info` 上下文块。
- `KFCContextBuilder` 现在通过 `ToolExecutor` 执行工具后再生成回复,使聊天模型能够感知实时信息和操作。

**以角色为驱动的用户画像:**
- `update_user_profile` 工具被重构为两阶段过程。工具使用模型提供一个简单的“印象提示”,专门的 `relationship_tracker` 模型将其扩展为丰富且符合角色的一致印象。
- 工具使用提示已更新,明确指示模型在生成工具参数时保持机器人的角色。

**记忆系统改进:**
- 记忆检索判定提示已更新,更加主动地获取长期记忆,目标是为了提供更丰富的上下文。- 记忆查询现在从最近的一组消息中生成,而不是单条消息,从而提高检索的相关性。**其他更改:** - 在上下文构建过程中添加了性能时间日志,以识别瓶颈。- 在响应过滤中进行了小修复,以清理特定前缀,如“,说:”。
This commit is contained in:
tt-P607
2025-12-03 14:04:29 +08:00
parent 9a5ae357b5
commit 39c52490d9
9 changed files with 345 additions and 48 deletions

View File

@@ -333,8 +333,9 @@ class UnifiedMemoryManager:
prompt = f"""你是一个记忆检索评估专家。你的任务是判断当前检索到的“感知记忆”(即时对话)和“短期记忆”(结构化信息)是否足以支撑一次有深度、有上下文的回复。
**核心原则:**
- **不要轻易检索长期记忆** 只有在当前对话需要深入探讨、回忆过去复杂事件或需要特定背景知识时,才认为记忆不足
- **闲聊、简单问候、表情互动或无特定主题的对话,现有记忆通常是充足的。** 频繁检索长期记忆会拖慢响应速度
- **适当检索长期记忆有助于提升回复质量。** 当对话涉及到特定话题、人物、事件或需要回忆过去的经历时,应该检索长期记忆
- **简单的闲聊和打招呼通常不需要长期记忆。** 如"你好""哈哈"、纯表情互动等
- **如果用户在讨论某个具体话题,即使现有记忆有一些相关信息,也可以检索长期记忆来补充更多背景。**
**用户查询:**
{query}
@@ -346,13 +347,12 @@ class UnifiedMemoryManager:
{short_term_desc or '(无)'}
**评估指南:**
1. **分析用户意图**:用户在闲聊还是在讨论一个需要深入挖掘的话题?
2. **检查现有记忆**当前的感知和短期记忆是否已经包含了足够的信息来回应用户的查询?
- 对于闲聊(如“你好”、“哈哈”、“[表情]”),现有记忆总是充足的 (`"is_sufficient": true`)。
- 对于需要回忆具体细节、深入探讨个人经历或专业知识的查询,如果现有记忆中没有相关信息,则可能不充足。
3. **决策**
- 如果记忆充足,设置 `"is_sufficient": true`
- 如果确实需要更多信息才能进行有意义的对话,设置 `"is_sufficient": false`,并提供具体的补充查询。
1. **分析用户意图**:用户在聊什么?是简单闲聊还是有具体话题?
2. **检查现有记忆**
- 如果是纯闲聊("你好""哈哈"、表情)→ 现有记忆充足
- 如果涉及具体话题(人物、事件、知识)→ 考虑检索长期记忆
- 如果用户提到过去的经历或需要回忆 → 需要检索长期记忆
3. **倾向于检索**:当不确定时,倾向于设置 `is_sufficient: false`,让系统检索长期记忆以提供更丰富的上下文
**输出格式JSON**
```json
@@ -365,7 +365,7 @@ class UnifiedMemoryManager:
}}
```
严格按照上述原则进行判断,并输出JSON"""
请输出JSON"""
# 调用记忆裁判模型
from src.config.config import model_config