CRM聊天机器人MCP - 可扩展的FastAPI架构
  ](https://www.docker.com/) 
集成Claude AI的企业级CRM聊天机器人,采用可扩展的FastAPI架构构建
🎯 概述
CRM Chatbot MCP是一款集成了Claude AI的智能电商聊天机器人,其设计采用了可扩展的架构,以实现生产就绪的部署。
✨ 主要特点
- 🤖 机器人 Claude AI集成 - 带有情感分析和意图检测的智能聊天
- 🛍️ 表示购物或购物袋的意思,可以翻译为“购物”或“购物袋”。 已做好电子商务准备 - 产品目录、购物车、结账、订单追踪
- 📊(表格/数据图表) CRM集成 - 客户管理、票务管理、数据分析
- 🔄 旋转/循环 后台任务 - 异步处理以实现最佳性能
- 🐳 表示“海豚”,也可以用来表达“出海”或“航海”的意思。 Docker 准备就绪 - 使用docker-compose实现全容器化
- 📈 上涨趋势 可扩展架构 - 模块化设计,便于扩展
- 🔐(锁形符号,常用于表示保密、安全或密码等含义) 生产就绪 - 安全最佳实践、健康检查、监控
📁 项目结构
crm-chatbot-mcp/
├── app/ # Main application
│ ├── main.py # FastAPI entry point
│ ├── api/v1/ # API endpoints (versioned)
│ │ ├── endpoints/ # Route handlers
│ │ │ ├── chat.py # Chat endpoints
│ │ │ ├── products.py # Product endpoints
│ │ │ ├── sessions.py # Session management
│ │ │ ├── tools.py # MCP tools
│ │ │ └── health.py # Health checks
│ │ └── router.py # Main router
│ ├── core/ # Core functionality
│ │ ├── config.py # Settings (Pydantic)
│ │ └── logging.py # Logging setup
│ ├── schemas/ # Pydantic models
│ ├── services/ # Business logic
│ │ ├── chat_service.py # Chat processing
│ │ ├── claude_service.py # Claude AI
│ │ └── mcp_tools.py # MCP tools
│ ├── integrations/ # External APIs
│ │ ├── crm.py # CRM client
│ │ ├── n8n.py # N8N workflows
│ │ └── product_api.py # Product catalog
│ ├── db/ # Database layer
│ │ ├── redis.py # Redis client
│ │ └── session.py # Session manager
│ └── tasks/ # Background tasks
│ └── analytics.py # Analytics logging
├── tests/ # Test suite
├── scripts/ # Utility scripts
├── Dockerfile # Docker image
├── docker-compose.yml # Docker orchestration
├── Makefile # Common commands
└── requirements.txt # Dependencies🚀 快速入门
先决条件
- Python 3.11及以上版本
- Redis 7+(或 Redis 7及以上版本)
- Docker & Docker Compose(可选)
选项1:Docker(推荐)🐳
# 1. Setup environment
cp .env.example .env
# Edit .env with your credentials
# 2. Start services
docker-compose up -d
# 3. View logs
docker-compose logs -f api
# 4. Test API
curl http://localhost:8000/api/v1/health✅ 完成! API运行于http://localhost:8000
选项2:本地开发 💻
# 1. Clone repository
git clone
cd crm-chatbot-mcp
# 2. Create virtual environment
python -m venv venv
# Windows:
.\venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# 3. Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt # For testing
# 4. Setup environment
cp .env.example .env
# Edit .env with your credentials
# 5. Start Redis (in another terminal)
redis-server
# 6. Run application
python -m app.main
# or
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000选项3:使用Makefile
# Development mode
make dev
# Production mode
make run
# Docker
make docker-up🔑 配置
环境变量在 .env:
# API Configuration
API_HOST=0.0.0.0
API_PORT=8000
# Redis
REDIS_URL=redis://localhost:6379/0
REDIS_SESSION_TTL=86400
# Claude API (⚠️ REQUIRED)
ANTHROPIC_API_KEY=sk-ant-xxx
CLAUDE_MODEL=claude-3-5-sonnet-latest
CLAUDE_MAX_TOKENS=4096
# External APIs
CRM_API_URL=https://your-crm.com/api/v1
CRM_API_KEY=your-crm-key
PRODUCT_API_URL=https://dummyjson.com/products
N8N_WEBHOOK_URL=http://localhost:5678/webhook
# Logging
LOG_LEVEL=INFO📡 API 端点
基本URL: http://localhost:8000/api/v1
聊天
POST /api/v1/chat
{
"user_id": "user123",
"message": "Halo, saya ingin melihat produk laptop",
"channel": "web"
}产品
GET /api/v1/products # List products
GET /api/v1/products/{id} # Product detail
GET /api/v1/products/categories # Categories
GET /api/v1/products/category/{category} # By category会议/时段
GET /api/v1/session/{session_id} # Get session
DELETE /api/v1/session/{session_id} # Clear session工具
POST /api/v1/tools/{tool_name} # Call MCP tool健康
GET /api/v1/health # Health check📚 API 文档
启动应用程序后,访问:
- Swagger UIhttp://localhost:8000/docs 翻译为中文是:“本地主机8000端口的文档页面”。不过,通常在技术语境中,我们可能会直接说“http://localhost:8000/docs”(即本地主机8000端口的文档页面),因为网址本身已经具有一定的可读性,不需要完全翻译成中文。但如果要给出一个更贴近中文表达习惯的描述,可以是上述翻译
- ReDoc(注:这是一个专有名词,通常指一个用于自动生成API文档的工具或框架,直接翻译为“ReDoc”即可,无需额外解释其含义,除非上下文需要。)http://localhost:8000/redoc 翻译为中文是:“http://本地主机:8000/redoc” 或者更简洁地表达为 “本地8000端口的Redoc页面”。不过,在中文语境中,我们通常会直接保留网址的格式,因为网址本身具有国际通用性,翻译时更多是解释其含义而非直接转换语言。所以,也可以直接说这个网址指向的是“本地8000端口的Redoc文档界面”
你可以:
- ✅ 查看所有终端节点
- ✅ 直接在浏览器中测试API
- ✅ 查看请求/响应模式
🏗️ 建筑学
分层架构
- API层 (
app/api/v1/endpoints/) - HTTP请求/响应处理 - 服务层 (
app/services/) - 业务逻辑 - 集成层 (
app/integrations/外部API客户端 - 数据库层 (
app/db/- 数据持久性
请求流程
HTTP Request
↓
API Endpoint (validation)
↓
Service Layer (business logic)
↓
Integration Layer (external APIs)
↓
Database Layer (persistence)
↓
HTTP Response关键设计模式
- ✅ 依赖注入 - FastAPI依赖注入,打造简洁代码
- ✅ 表示“正确”或“确认”。 仓储模式(或存储库模式) - 数据库抽象
- ✅(对号,表示正确、确认或同意) 服务模式 - 业务逻辑分离
- ✅ 工厂模式 - 客户端实例化
- ✅ 单例模式 - 共享资源
后台任务
异步处理用于:
- 分析日志记录
- 通知
- 个人资料更新
- 工作流触发器
🧪 测试
安装测试依赖项
pip install -r requirements-dev.txt运行测试
# Run all tests
pytest
# With coverage
pytest --cov=app tests/
# Specific test
pytest tests/test_api/test_chat.py
# Verbose
pytest -v
# Alternative: Use Python module
python -m pytest
python -m pytest --cov=app tests/🐳 Docker 部署
(本地)开发
# Start all services with hot reload
docker-compose up
# Start in background
docker-compose up -d
# View logs
docker-compose logs -f api
# Restart
docker-compose restart api# Build
docker-compose build
# Deploy
docker-compose up -d
# Scale
docker-compose up -d --scale api=3服务
- APIFastAPI 应用程序(端口 8000)
- Redis(发音:/ˈriːdɪs/)缓存与会话存储(端口6379)
- Redis Commander(可译为“Redis管理器”或保持原名,根据上下文决定是否直译)Redis 图形用户界面(端口 8081)- 可选
开始使用 Redis Commander:
docker-compose --profile tools up -d📊 监控
健康检查
curl http://localhost:8000/api/v1/health预期响应:
{
"status": "healthy",
"timestamp": "2024-01-01T00:00:00",
"redis": "connected"
}日志
# Application logs
docker-compose logs -f api
# Redis logs
docker-compose logs -f redis
# All logs
docker-compose logs -f
# Last 100 lines
docker-compose logs --tail=100 api指标
- 请求延迟
- 错误率
- Redis 连接状态
- 后台任务队列
🔐 安全
- ✅ 用于秘密的环境变量
- ✅ 对所有输入进行Pydantic验证
- ✅ CORS 配置
- ✅ 不使用硬编码凭证
- ✅ Docker 安全最佳实践
- ✅ 健康检查与监控
🚀 性能
- ✅ 全程使用 Async/await
- ✅ Redis 缓存
- ✅ 背景任务处理
- ✅ 连接池
- ✅ 多阶段Docker构建
- ✅ 准备好进行水平扩展
📈 可扩展性
水平扩展
# Scale API instances
docker-compose up -d --scale api=5
# Add load balancer (nginx/traefik)垂直扩展(或垂直缩放)
# Resource limits in docker-compose.yml
deploy:
resources:
limits:
cpus: '2'
memory: 1G🛠️ 开发
添加新端点
- 在(数据库/系统)中创建模式
app/schemas/ - 在(某处)创建服务
app/services/ - 在(某处)创建端点
app/api/v1/endpoints/ - 注册于
app/api/v1/router.py - 编写测试
添加新集成
- 创建客户端于
app/integrations/ - 添加配置到
app/core/config.py - 在服务层中使用
- 编写集成测试
🐛 故障排除
Redis 连接错误
# Check Redis running
redis-cli ping
# Or start Redis with Docker
docker run -d -p 6379:6379 redis:7-alpine端口已被占用
# Windows - Find process on port 8000
netstat -ano | findstr :8000
taskkill /PID
/F
# Linux/Mac
lsof -i :8000
kill -9
# Or change port in .env
API_PORT=8001Docker 问题
# Rebuild containers
docker-compose down
docker-compose build --no-cache
docker-compose up -d
# Check logs
docker-compose logs -f
# Clean everything
docker-compose down -v
docker system prune -f导入错误
# Make sure you're in project root
cd crm-chatbot-mcp
# Reinstall dependencies
pip install -r requirements.txt
# Run from project root
python -m app.main💡 小贴士
- 使用 Docker 为了保持一致性
- 检查日志 当出现错误时
- 阅读API文档 在/docs目录下
- 测试端点 使用curl或Postman
- 遵循结构 随时添加功能
- 使用后台任务 对于缓慢的操作
- 确保 .env 文件的安全 - 永远不要向git提交
🤝 贡献(或“参与贡献”)
- 克隆仓库
- 创建特性分支
- 遵循编码规范
- 编写测试
- 提交拉取请求
📝 许可证
👥 团队
- 发展您的团队
- 维护者你的名字
- 联系your-email@example.com(中文可表述为:示例邮箱:your-email@example.com,但通常直接保留原格式,不翻译邮箱地址本身)
🙏 致谢
- FastAPI框架
- Anthropic的Claude人工智能
- Redis(注:Redis是一个开源的、基于内存的键值对存储系统,常用于数据库缓存、消息队列等场景,此处仅翻译为“Redis”,不添加额外解释,除非原文有特殊要求)
- Docker
📞 支持
- 问题GitHub 问题(或:GitHub 问题跟踪)
- 电子邮件support@example.com(注:这是一封电子邮件地址,直接翻译为中文即保持原样,意为“支持@示例.com”,实际使用中无需翻译,直接使用即可。)
______________________________________________________________________
使用FastAPI和Claude AI构建,倾注爱心
🗺️ 路线图
- \[ \] 支持WebSocket的实时聊天
- GraphQL API
- \[ \] 管理员仪表盘
- \[ \] 高级分析
- \[ \] 多语言支持
- \[ \] 语音集成
- \[ \] 移动SDK
______________________________________________________________________
版本1.0.0\ 最后更新时间2024年1月1日
