iconsulting/docs/AGENT_THREE_LAYER_ARCHITECT...

12 KiB
Raw Blame History

iConsulting Agent 三层架构设计

问题背景

当前 AI 回复存在以下问题:

  • 回复过于冗长,没有抓住用户核心需求
  • 重复性表达多,效率低
  • 缺乏对用户意图的准确理解
  • 没有自我评估机制

设计目标

作为 Agent应该做到

  1. 准确理解用户意图 - 基于对话上下文、历史经验判断用户当前需要什么
  2. 自我评估 - 判断 AI 是否已经给出用户想要的答案
  3. 主动行动 - 如果未达到用户需求,主动调用工具寻找解决方案
  4. 简洁高效 - 回答抓住重点,简短有效

三层架构

┌─────────────────────────────────────────────────────────────┐
│                      用户消息输入                            │
└─────────────────────────┬───────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                   第一层:意图分类器                         │
│  IntentClassifier                                            │
│  ┌─────────────────────────────────────────────────────────┐│
│  │ • 分析用户意图类型(简单查询/深度咨询/需要行动/闲聊)   ││
│  │ • 确定建议的最大回复长度                                ││
│  │ • 识别是否需要调用工具                                  ││
│  │ • 检测是否为后续问题                                    ││
│  │ • 提取关键实体(签证类型、职业等)                      ││
│  └─────────────────────────────────────────────────────────┘│
│  输出IntentResult { type, maxResponseLength, needsTools } │
└─────────────────────────┬───────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                   第二层ReAct Agent                        │
│  Claude API + Tool Loop                                      │
│  ┌─────────────────────────────────────────────────────────┐│
│  │ 思考 (Thought)                                          ││
│  │   └─► 分析用户真实需求                                  ││
│  │   └─► 评估当前信息是否足够                              ││
│  │   └─► 决定是否需要调用工具                              ││
│  │                                                          ││
│  │ 行动 (Action)                                           ││
│  │   └─► 调用合适的工具获取信息                            ││
│  │   └─► 支持最多10轮工具调用                              ││
│  │                                                          ││
│  │ 观察 (Observation)                                      ││
│  │   └─► 分析工具返回结果                                  ││
│  │   └─► 决定是否需要继续行动                              ││
│  │                                                          ││
│  │ 生成 (Generate)                                         ││
│  │   └─► 根据意图分类结果控制回复长度                      ││
│  │   └─► 聚焦用户核心问题                                  ││
│  └─────────────────────────────────────────────────────────┘│
│  输出AI 回复文本                                          │
└─────────────────────────┬───────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                   第三层:回复质量门控                        │
│  ResponseGate                                                │
│  ┌─────────────────────────────────────────────────────────┐│
│  │ 质量检查:                                              ││
│  │   • 长度检查 - 是否超过建议长度                         ││
│  │   • 相关性检查 - 是否回答了用户问题                     ││
│  │   • 冗余检查 - 是否包含重复/冗余表达                    ││
│  │   • 完整性检查 - 是否包含必要信息                       ││
│  │   • 语气检查 - 是否符合场景要求                         ││
│  │                                                          ││
│  │ 优化处理:                                              ││
│  │   • 裁剪过长回复(在句子边界处裁剪)                    ││
│  │   • 移除冗余表达                                        ││
│  └─────────────────────────────────────────────────────────┘│
│  输出:优化后的最终回复                                     │
└─────────────────────────┬───────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                      最终回复输出                            │
└─────────────────────────────────────────────────────────────┘

第一层:意图分类器 (IntentClassifier)

意图类型

类型 说明 建议长度 需要工具
SIMPLE_QUERY 简单查询,直接回答 300字
DEEP_CONSULTATION 深度咨询,需要知识库 800字
ACTION_NEEDED 需要执行操作 500字
CHAT 闲聊寒暄 100字
CLARIFICATION 需要追问澄清 150字
CONFIRMATION 确认/否定 200字

分类规则

  1. 关键词匹配 - 快速识别意图模式
  2. 上下文分析 - 判断是否为后续问题
  3. 实体提取 - 识别签证类型、职业等关键信息
  4. 工具推荐 - 根据意图推荐合适的工具

代码位置

packages/services/conversation-service/src/infrastructure/claude/intent-classifier.ts

第二层ReAct Agent

ReAct 思维框架

在 System Prompt 中注入 ReAct 思维模式:

<thinking_framework>
在回答用户问题时,请遵循以下思维框架:

1. 理解 (Understand)
   - 用户的核心问题是什么?
   - 用户的真实需求是什么?
   - 这是后续问题还是新问题?

2. 评估 (Evaluate)
   - 我当前掌握的信息是否足够?
   - 是否需要调用工具获取更多信息?
   - 之前的对话是否已经回答过类似问题?

3. 行动 (Act)
   - 如果信息不足,调用合适的工具
   - 优先使用:知识库搜索 > 经验召回 > 网络搜索

4. 生成 (Generate)
   - 直接回答核心问题
   - 避免冗余的开场白和结束语
   - 控制回复长度,抓住重点
</thinking_framework>

工具循环

  • 最多支持 10 轮工具调用
  • 每轮:思考 → 调用工具 → 观察结果 → 决定下一步
  • 当信息足够时停止调用,生成最终回复

代码位置

packages/services/conversation-service/src/infrastructure/claude/prompts/system-prompt.ts

第三层:回复质量门控 (ResponseGate)

检查项

检查项 说明 未通过处理
length 长度是否超标 裁剪至建议长度
relevance 是否与问题相关 标记警告
redundancy 是否有冗余表达 移除冗余
completeness 是否信息完整 标记警告
tone 语气是否合适 标记警告

冗余表达清单

- "根据我的了解"
- "让我来帮您"
- "非常感谢您的咨询"
- "希望以上信息对您有所帮助"
- "如果您还有其他问题"
- ...

代码位置

packages/services/conversation-service/src/infrastructure/claude/response-gate.ts

集成流程

// claude-agent.service.ts 伪代码

async sendMessage(message, history) {
  // 第一层:意图分类
  const intent = intentClassifier.classify(message, history);

  // 构建带 ReAct 框架的 System Prompt
  const systemPrompt = buildSystemPrompt({
    ...config,
    intentHint: intent,  // 注入意图信息
  });

  // 第二层ReAct Agent 处理
  const response = await this.claudeClient.chat({
    systemPrompt,
    messages: history,
    tools: intent.needsTools ? this.getTools() : [],
    maxTokens: this.calculateMaxTokens(intent),
  });

  // 第三层:回复质量门控
  const gateResult = responseGate.check(response, intent, message);

  // 返回优化后的回复
  return gateResult.optimizedResponse || response;
}

预期效果

改进前

用户189签证要多少分

AI非常感谢您的咨询关于澳大利亚189独立技术移民签证
这是一个非常重要的移民类别。让我来为您详细解答。

首先189签证是一种打分制签证需要达到一定的分数才能获邀。
根据目前的政策...以下省略500字

希望以上信息对您有所帮助!如果您还有其他问题,欢迎继续咨询。

改进后

用户189签证要多少分

AI189签证需要至少65分才能提交EOI。
目前获邀分数线约为85-95分具体取决于职业。

主要加分项:年龄、英语、工作经验、学历、州担保等。

文件清单

文件 状态 说明
intent-classifier.ts 已创建 意图分类器
response-gate.ts 已创建 回复质量门控
system-prompt.ts 🔄 待更新 加入 ReAct 框架
claude-agent.service.ts 🔄 待更新 集成三层架构

后续优化方向

  1. 机器学习分类 - 用训练数据替代规则分类
  2. 动态长度调整 - 根据反馈自动调整建议长度
  3. 个性化门控 - 根据用户偏好调整检查规则
  4. A/B 测试 - 对比优化前后的用户满意度