5.7 KiB
5.7 KiB
LangChain 聊天机器人项目
基于 LangChain、LangGraph 和 Ollama 的智能对话机器人,支持意图分析、订单诊断和自然对话。
🚀 项目特性
- 多种对话模式: 支持简单对话链和复杂工作流两种模式
- 意图分析: 自动识别用户意图,智能路由到相应处理节点
- 订单诊断: 专门的订单查询和问题诊断功能
- 流式输出: 支持实时流式响应,提升用户体验
- FastAPI 接口: 提供完整的 REST API 接口
- 命令行工具: 支持命令行交互模式
- 监控集成: 集成 LangSmith 进行对话监控和分析
📁 项目结构
langchain-project/
├── src/ # 源代码目录
│ ├── services/ # 服务层
│ │ ├── ollama_service.py # Ollama 服务封装
│ │ └── langsmith_service.py # LangSmith 监控服务
│ ├── models/ # 数据模型
│ │ └── chat_models.py # 对话相关数据模型
│ ├── workflows/ # LangGraph 工作流
│ │ ├── chat_workflow.py # 主工作流
│ │ └── nodes/ # 工作流节点
│ │ ├── intent_analysis.py # 意图分析节点
│ │ ├── order_diagnosis.py # 订单诊断节点
│ │ └── natural_chat.py # 自然对话节点
│ └── chains/ # LangChain 对话链
│ └── simple_chat_chain.py # 简单对话链
├── data/ # 数据文件
│ └── mock_orders.json # 模拟订单数据
├── tests/ # 测试文件
│ ├── test_ollama.py # Ollama 服务测试
│ ├── test_simple_chain.py # 简单对话链测试
│ ├── test_workflow.py # 工作流测试
│ └── test_api.py # API 接口测试
├── main.py # FastAPI 主应用
├── cli_chat.py # 命令行聊天程序
├── run_tests.py # 测试运行器
├── requirements.txt # Python 依赖
├── .env # 环境变量配置
└── README.md # 项目说明
🛠️ 安装和配置
1. 安装依赖
pip install -r requirements.txt
2. 安装和配置 Ollama
# 安装 Ollama (Linux/macOS)
curl -fsSL https://ollama.ai/install.sh | sh
# 下载所需模型
ollama pull deepseek-v3.1:671b-cloud # 聊天模型
ollama pull qwen3:8b # 路由模型 (轻量级)
3. 配置环境变量
复制 .env 文件并根据需要修改配置:
# Ollama 配置
OLLAMA_BASE_URL=http://localhost:11434
CHAT_MODEL=deepseek-v3.1:671b-cloud
ROUTER_MODEL=qwen3:8b
# LangSmith 配置 (可选)
LANGCHAIN_TRACING_V2=false
LANGCHAIN_API_KEY=your_langsmith_api_key
LANGCHAIN_PROJECT=langchain-chatbot
# 应用配置
DEBUG=true
LOG_LEVEL=INFO
🚀 运行项目
1. 启动 FastAPI 服务器
python main.py
服务器将在 http://localhost:8000 启动。
2. 使用命令行聊天
python cli_chat.py
支持的命令:
/help- 显示帮助信息/clear- 清空对话历史/history- 显示对话历史/mode [workflow|simple]- 切换对话模式/status- 显示系统状态/quit- 退出程序
3. API 接口使用
健康检查
curl http://localhost:8000/health
创建会话
curl -X POST http://localhost:8000/sessions \
-H "Content-Type: application/json" \
-d '{}'
发送消息 (非流式)
curl -X POST http://localhost:8000/chat/simple \
-H "Content-Type: application/json" \
-d '{
"message": "你好",
"session_id": "your_session_id"
}'
发送消息 (流式)
curl -X POST http://localhost:8000/chat \
-H "Content-Type: application/json" \
-d '{
"message": "帮我查询订单 ORD12345",
"session_id": "your_session_id",
"stream": true
}'
🧪 运行测试
运行所有测试
python run_tests.py
运行单个测试
# 测试 Ollama 服务
python tests/test_ollama.py
# 测试简单对话链
python tests/test_simple_chain.py
# 测试工作流
python tests/test_workflow.py
# 测试 API 接口 (需要先启动服务器)
python tests/test_api.py
📊 API 文档
启动服务器后,访问以下地址查看 API 文档:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
🔧 主要功能
1. 意图分析
系统会自动分析用户输入,识别以下意图:
order_inquiry: 订单查询相关general_chat: 一般对话greeting: 问候goodbye: 告别
2. 订单诊断
当识别到订单相关意图时,系统会:
- 提取订单信息(订单号、客户信息等)
- 查询订单状态
- 分析可能的问题
- 提供解决建议
3. 自然对话
处理日常对话,包括:
- 问候和告别
- 一般性问题
- 闲聊对话
- 功能介绍
4. 流式输出
支持实时流式响应,包括:
- 思考过程展示
- 逐步分析结果
- 实时响应生成
🔍 监控和调试
LangSmith 集成
如果配置了 LangSmith,系统会自动记录:
- 对话开始和结束
- 意图分析结果
- 工作流步骤
- 模型调用
- 错误信息
日志记录
系统使用 Python logging 模块记录详细日志,可通过 LOG_LEVEL 环境变量控制日志级别。
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📄 许可证
MIT License
📞 支持
如有问题,请查看:
- 项目文档
- 测试用例
- API 文档
- 提交 Issue