基于 LangChain / LangGraph 的 ReAct Agent 智能客服系统
项目简介
基于 LangChain 实现的 ReAct(Reasoning + Acting)Agent,集成 RAG 检索增强、多工具调用与动态提示词切换。系统根据用户意图自动判断任务类型(知识问答 / 报告生成),调用合适的工具与知识库完成推理,并通过 Streamlit 流式界面实时展示 Agent 的思考与执行过程。
效果展示
图 1 · 普通问答 — RAG 检索知识库回复
图 2 · Agent 工具调用 — 实时展示推理与工具执行链路
图 3 · 工具调用详情 — 多步推理与中间结果可视化
技术架构
用户输入 (Streamlit)
│
▼
┌───────────────────────────────────────────┐
│ ReAct Agent │
│ │
│ ┌──────────┐ ┌──────────────────┐ │
│ │ Thought │────▶│ Action │ │
│ │ (推理) │ │ (工具调用 / RAG) │ │
│ └────┬─────┘ └────────┬─────────┘ │
│ ▲ │ │
│ └──── Observation ◀──┘ │
│ │
│ Middleware: 工具监控 · 动态提示词切换 │
└───────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌────────────┐ ┌──────────────┐ ┌──────────────┐
│ RAG │ │ Tools │ │ Prompt │
│ Chroma │ │ 天气 / 用户 │ │ 动态切换 │
│ 向量检索 │ │ 数据 / 报告 │ │ 模板管理 │
└────────────┘ └──────────────┘ └──────────────┘
核心特性
| 特性 | 说明 |
|---|---|
| ReAct 范式 | Thought → Action → Observation 循环,Agent 自主推理并决定调用哪个工具 |
| RAG 检索增强 | Chroma 向量库 + DashScope Embedding,MD5 文件去重,支持 txt/pdf 混合加载 |
| 多工具调用 | 天气查询 / 用户定位 / 外部数据检索 / 报告上下文填充,Agent 按需自动选择 |
| 动态提示词切换 | Middleware 根据运行时上下文自动切换「普通问答」与「报告生成」两套 System Prompt |
| 流式对话界面 | Streamlit 构建,支持流式逐字输出、历史消息留存、Agent 推理过程可见 |
| 模块化结构 | Agent / RAG / Model / Tools / Middleware 独立模块,YAML 配置驱动 |
技术栈
| 层级 | 技术 |
|---|---|
| LLM | 通义千问(DashScope / ChatTongyi) |
| Agent 框架 | LangChain + LangGraph |
| 向量数据库 | Chroma |
| 文档处理 | PyPDF + RecursiveCharacterTextSplitter |
| 前端 | Streamlit |
| 配置 | YAML 驱动(Agent / RAG / Chroma / Prompts) |
快速开始
环境要求
- Python ≥ 3.10
- DashScope API Key — 在阿里云百炼申请
1. 克隆仓库
git clone https://github.com/lhh737/LangChain-ReAct-Agent.git
cd LangChain-ReAct-Agent
2. 安装依赖
pip install -r requirements.txt
3. 配置 API Key
# Linux / macOS
export DASHSCOPE_API_KEY="your-api-key"
# Windows (CMD)
set DASHSCOPE_API_KEY=your-api-key
4. 初始化知识库(首次运行)
python -c "from rag.vector_store import VectorStoreService; VectorStoreService().load_document()"
5. 启动应用
streamlit run app.py
浏览器自动打开 http://localhost:8501
6. 验证运行
启动后可在聊天框输入以下测试问题:
| 测试问题 | 触发能力 |
|---|---|
| 扫地机器人有哪些主要功能? | RAG 知识库问答 |
| 如果机器人无法正常回充,该如何处理? | 知识库故障排查 |
| 请根据用户数据生成一份个性化使用报告 | 报告生成 + 工具调用 |
No comments yet.