ai-courseware/langchain-project/README.md

5.7 KiB
Raw Permalink Blame History

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

📞 支持

如有问题,请查看:

  1. 项目文档
  2. 测试用例
  3. API 文档
  4. 提交 Issue