基于 LangGraph、豆包模型、VikingDB 向量数据库和 MCP 工具的企业微信智能机器人系统。
- 智能对话: 基于豆包大模型的自然语言对话
- 工具调用: 集成 MCP 工具,支持网页搜索、文件操作、数据库查询等
- 知识库: VikingDB 向量数据库存储和检索知识
- 流式响应: 支持流式消息处理
- 企业微信集成: 完整的企业微信机器人回调接口
- 健康监控: 系统健康检查和状态监控
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 企业微信客户端 │ │ FastAPI 服务器 │ │ LangGraph Agent │
│ │◄──►│ │◄──►│ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ 豆包模型 API │ │ VikingDB │
│ │ │ 向量数据库 │
└─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ MCP 工具服务 │ │ 知识库管理 │
│ │ │ │
└─────────────────┘ └─────────────────┘
pip install -r requirements.txt
创建 .env
文件并配置以下环境变量:
# 企业微信配置
Token=your_wechat_token
EncodingAESKey=your_encoding_aes_key
# 豆包模型配置
DASHSCOPE_API_KEY=your_dashscope_api_key
# VikingDB 配置
MONGODB_URI=mongodb://localhost:27017
MONGODB_DATABASE=vikingdb
MONGODB_COLLECTION=documents
# MCP 工具配置
MCP_SERVER_URL=http://localhost:3000
MCP_API_KEY=your_mcp_api_key
# 应用配置
CACHE_DIR=/tmp/llm_demo_cache
MAX_STEPS=10
python agent_server.py
uvicorn agent_server:app --host 0.0.0.0 --port 80 --workers 4
GET /ai-bot/callback/demo/{botid}
- URL 验证POST /ai-bot/callback/demo/{botid}
- 消息处理
GET /health
- 健康检查GET /api/tools
- 获取可用工具列表POST /api/knowledge
- 添加知识到知识库GET /api/knowledge/search
- 搜索知识库
- 支持流式和非流式调用
- 自动处理消息格式转换
- 错误处理和重试机制
- 基于 MongoDB 的向量搜索
- 使用 Sentence Transformers 进行文本嵌入
- 支持相似度搜索和文档管理
- 网页搜索工具
- 文件读写工具
- 数据库查询工具
- 可扩展的工具框架
- 基于状态图的 Agent 系统
- 支持多步骤推理
- 工具调用和知识库搜索
- 流式处理能力
用户发送文本消息,Agent 会:
- 分析用户意图
- 搜索相关知识库
- 调用相关工具(如需要)
- 生成回复
当用户需要外部信息时,Agent 会自动调用相应工具:
- 网页搜索:获取最新信息
- 文件操作:读取或写入文件
- 数据库查询:获取结构化数据
- 自动保存对话到知识库
- 支持手动添加知识
- 相似度搜索相关知识点
curl http://localhost/health
curl http://localhost/api/tools
curl "http://localhost/api/knowledge/search?query=你的问题&limit=5"
- 在
tools/mcp_tools.py
中创建新的工具类 - 继承
MCPTool
基类 - 实现
_run
方法 - 在
MCPToolManager
中注册工具
- 使用
agent_manager.add_knowledge()
添加知识 - 支持自定义元数据
- 自动向量化和索引
- 修改
agent/langgraph_agent.py
中的节点逻辑 - 调整系统提示词
- 添加新的条件分支
- 使用连接池管理数据库连接
- 实现工具调用的缓存机制
- 优化向量搜索的索引策略
- 支持并发处理多个请求
- 所有企业微信通信都经过加密
- API 密钥通过环境变量管理
- 输入验证和错误处理
- 日志记录和审计
- Fork 项目
- 创建功能分支
- 提交更改
- 发起 Pull Request
MIT License
如有问题,请提交 Issue 或联系开发团队。