Skip to content

MrRobot2658/aibot-wecom

Repository files navigation

LangGraph Agent 企业微信智能机器人

基于 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

📡 API 接口

企业微信回调接口

  • 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 - 搜索知识库

🔧 核心组件

1. 豆包模型集成 (models/doubao_llm.py)

  • 支持流式和非流式调用
  • 自动处理消息格式转换
  • 错误处理和重试机制

2. VikingDB 向量数据库 (database/vikingdb.py)

  • 基于 MongoDB 的向量搜索
  • 使用 Sentence Transformers 进行文本嵌入
  • 支持相似度搜索和文档管理

3. MCP 工具集成 (tools/mcp_tools.py)

  • 网页搜索工具
  • 文件读写工具
  • 数据库查询工具
  • 可扩展的工具框架

4. LangGraph Agent (agent/langgraph_agent.py)

  • 基于状态图的 Agent 系统
  • 支持多步骤推理
  • 工具调用和知识库搜索
  • 流式处理能力

🎯 使用示例

1. 基本对话

用户发送文本消息,Agent 会:

  1. 分析用户意图
  2. 搜索相关知识库
  3. 调用相关工具(如需要)
  4. 生成回复

2. 工具调用

当用户需要外部信息时,Agent 会自动调用相应工具:

  • 网页搜索:获取最新信息
  • 文件操作:读取或写入文件
  • 数据库查询:获取结构化数据

3. 知识库管理

  • 自动保存对话到知识库
  • 支持手动添加知识
  • 相似度搜索相关知识点

🔍 监控和调试

健康检查

curl http://localhost/health

查看可用工具

curl http://localhost/api/tools

搜索知识库

curl "http://localhost/api/knowledge/search?query=你的问题&limit=5"

🛠️ 开发指南

添加新工具

  1. tools/mcp_tools.py 中创建新的工具类
  2. 继承 MCPTool 基类
  3. 实现 _run 方法
  4. MCPToolManager 中注册工具

扩展知识库

  1. 使用 agent_manager.add_knowledge() 添加知识
  2. 支持自定义元数据
  3. 自动向量化和索引

自定义 Agent 行为

  1. 修改 agent/langgraph_agent.py 中的节点逻辑
  2. 调整系统提示词
  3. 添加新的条件分支

📊 性能优化

  • 使用连接池管理数据库连接
  • 实现工具调用的缓存机制
  • 优化向量搜索的索引策略
  • 支持并发处理多个请求

🔒 安全考虑

  • 所有企业微信通信都经过加密
  • API 密钥通过环境变量管理
  • 输入验证和错误处理
  • 日志记录和审计

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支
  3. 提交更改
  4. 发起 Pull Request

📄 许可证

MIT License

📞 支持

如有问题,请提交 Issue 或联系开发团队。

About

企业微信智能聊天机器人

Resources

License

Stars

Watchers

Forks

Releases

No releases published