logo
0
0
WeChat Login
feat: 新增多智能体协同案例

🤖 多智能体系统演示

基于 LangChain.js + LangGraph 实现的多智能体协作系统。

📋 系统架构

智能体组成

本系统模拟一个客服团队,包含三个智能体:

  1. 👋 接待员 (Receptionist)

    • 职责:接收用户问题,分析并路由到合适的部门
    • 能力:问题分类、路由决策
  2. 🔧 技术支持 (Tech Support)

    • 职责:处理技术问题、故障排查、使用指导
    • 能力:技术问题解答、步骤指导
  3. 💼 销售顾问 (Sales)

    • 职责:处理产品咨询、价格询问、购买建议
    • 能力:产品介绍、价格咨询、购买建议

工作流程

用户问题 ↓ [接待员] 分析问题类型 ↓ 决策路由 ↓ ┌─────┴─────┐ ↓ ↓ [技术支持] [销售顾问] ↓ ↓ 技术解答 销售咨询 ↓ ↓ └─────┬─────┘ ↓ 最终回复

🚀 快速开始

1. 启动服务

# 开发模式 yarn start:dev # 生产模式 yarn build NODE_ENV=production yarn start

2. 访问演示页面

打开浏览器访问:http://localhost:3000/multi-agent

3. 测试 API

# 测试聊天接口 curl -X POST http://localhost:3000/api/multi-agent/chat \ -H "Content-Type: application/json" \ -d '{"question": "你们的产品多少钱?"}' # 健康检查 curl http://localhost:3000/api/multi-agent/health # 获取工作流信息 curl http://localhost:3000/api/multi-agent/workflow

📁 项目结构

src/agents/multi-agent/ ├── types.ts # 类型定义 ├── orchestrator.ts # 智能体协调器 (LangGraph) ├── multi-agent.service.ts # NestJS 服务 ├── multi-agent.controller.ts # API 控制器 ├── multi-agent.module.ts # NestJS 模块 └── agents/ # 智能体实现 ├── receptionist.agent.ts # 接待员智能体 ├── tech-support.agent.ts # 技术支持智能体 └── sales.agent.ts # 销售顾问智能体

🎯 核心技术

LangGraph 状态图

使用 LangGraph 的 StateGraph 编排智能体协作:

const workflow = new StateGraph<AgentState>({ channels: { messages: {...}, userQuestion: {...}, currentAgent: {...}, // ...更多状态通道 }, }); // 添加智能体节点 workflow.addNode('receptionist', receptionistHandler); workflow.addNode('tech_support', techSupportHandler); workflow.addNode('sales', salesHandler); // 定义流转规则 workflow.addEdge(START, 'receptionist'); workflow.addConditionalEdges('receptionist', routingDecision, {...}); workflow.addEdge('tech_support', END); workflow.addEdge('sales', END);

状态管理

所有智能体共享同一个状态对象 AgentState

interface AgentState { messages: Message[]; // 消息历史 userQuestion: string; // 用户问题 currentAgent?: AgentType; // 当前智能体 finalAnswer?: string; // 最终答案 routingReason?: string; // 路由原因 processingSteps: Step[]; // 处理步骤 }

路由决策

接待员智能体使用 LLM 进行智能路由:

// 接待员分析用户问题 const decision = await receptionistAgent.routeQuestion(userQuestion); // 返回路由决策 { targetAgent: 'tech_support' | 'sales', reason: '路由原因', confidence: 0.0-1.0 }

📊 API 接口

POST /api/multi-agent/chat

处理用户问题(一次性返回完整结果)

请求:

{ "question": "你们的产品多少钱?" }

响应:

{ "success": true, "data": { "answer": "最终答案", "processingSteps": [...], "messages": [...], "routingReason": "路由原因", "workflowInfo": {...} }, "timestamp": 1234567890 }

POST /api/multi-agent/stream

流式处理用户问题(Server-Sent Events)

请求:

{ "question": "我的账号登录不上去了" }

响应: SSE 流式数据

GET /api/multi-agent/health

健康检查

GET /api/multi-agent/workflow

获取工作流信息

🎨 示例问题

销售类问题

  • "你们的产品多少钱?"
  • "我想了解企业版有什么功能"
  • "有什么优惠活动吗?"
  • "如何购买你们的产品?"

技术类问题

  • "我的账号登录不上去了"
  • "如何重置密码?"
  • "系统报错了怎么办?"
  • "支持哪些浏览器?"

🔧 自定义智能体

添加新智能体

  1. agents/ 目录下创建新智能体:
export class CustomAgent { constructor(private llm: ChatOpenAI) {} async handleQuestion(question: string): Promise<AgentResponse> { // 实现你的逻辑 } }
  1. types.ts 中添加智能体类型:
export enum AgentType { // ...existing CUSTOM = 'custom', }
  1. orchestrator.ts 中注册节点:
workflow.addNode('custom', async (state: AgentState) => { const response = await customAgent.handleQuestion(state.userQuestion); return { /* 状态更新 */ }; });

🎓 学习要点

本演示系统展示了以下核心概念:

  1. 多智能体协作 - 如何让多个 AI 协同工作
  2. 状态管理 - 使用共享状态在智能体间传递信息
  3. 路由决策 - 基于 LLM 的智能路由
  4. 工作流编排 - 使用 LangGraph 构建状态图
  5. 流式响应 - 支持 SSE 流式返回处理过程

🚀 进阶方向

  1. 添加更多智能体 - 客户关系、订单管理等
  2. 实现对话记忆 - 支持多轮对话上下文
  3. 工具集成 - 为智能体添加外部工具(搜索、数据库等)
  4. 人工介入 - 当智能体无法处理时转人工
  5. 性能优化 - 并行执行、缓存策略等

📝 注意事项

  1. 确保已配置有效的 API 密钥(支持 OpenAI/DeepSeek 等)
  2. 本演示使用简化的路由逻辑,生产环境需要更复杂的决策
  3. 建议先在开发环境测试,确认无误后再部署到生产
  4. 流式接口需要服务器支持 SSE(Server-Sent Events)

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT