ai-courseware/langchain-project/README.md

251 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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