# 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. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 安装和配置 Ollama ```bash # 安装 Ollama (Linux/macOS) curl -fsSL https://ollama.ai/install.sh | sh # 下载所需模型 ollama pull deepseek-v3.1:671b-cloud # 聊天模型 ollama pull qwen3:8b # 路由模型 (轻量级) ``` ### 3. 配置环境变量 复制 `.env` 文件并根据需要修改配置: ```bash # 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 服务器 ```bash python main.py ``` 服务器将在 `http://localhost:8000` 启动。 ### 2. 使用命令行聊天 ```bash python cli_chat.py ``` 支持的命令: - `/help` - 显示帮助信息 - `/clear` - 清空对话历史 - `/history` - 显示对话历史 - `/mode [workflow|simple]` - 切换对话模式 - `/status` - 显示系统状态 - `/quit` - 退出程序 ### 3. API 接口使用 #### 健康检查 ```bash curl http://localhost:8000/health ``` #### 创建会话 ```bash curl -X POST http://localhost:8000/sessions \ -H "Content-Type: application/json" \ -d '{}' ``` #### 发送消息 (非流式) ```bash curl -X POST http://localhost:8000/chat/simple \ -H "Content-Type: application/json" \ -d '{ "message": "你好", "session_id": "your_session_id" }' ``` #### 发送消息 (流式) ```bash curl -X POST http://localhost:8000/chat \ -H "Content-Type: application/json" \ -d '{ "message": "帮我查询订单 ORD12345", "session_id": "your_session_id", "stream": true }' ``` ## 🧪 运行测试 ### 运行所有测试 ```bash python run_tests.py ``` ### 运行单个测试 ```bash # 测试 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 ## 📞 支持 如有问题,请查看: 1. 项目文档 2. 测试用例 3. API 文档 4. 提交 Issue