lhh737/LangChain-ReAct-Agent
基于 LangChain/LangGraph 的 ReAct Agent,结合 RAG 检索、工具调用与 Streamlit 界面,面向智能客服与报告生成场景。
LangChain ReAct Agent – 具备推理、工具使用和RAG的AI驱动聊天机器人
简介
- 一个在 LangChain 和 LangGraph 之上构建 ReAct(推理 + 行动)代理的 Python 应用程序。
- 该代理可以从知识库回答问题、调用外部工具(天气、用户数据、报告生成)并动态切换提示,同时在 Streamlit UI 中显示其内部思考-行动-观察循环。
主要功能
| 功能 | 描述 |
|---|---|
| ReAct 推理循环 | 代理反复生成思考,决定行动(例如调用工具或运行 RAG 查询),接收观察,循环直到能回答。 |
| RAG 增强问答 | 使用 DashScope 嵌入将有关扫地机器人的文档(txt/pdf)索引到 Chroma 向量存储中;代理检索相关块并让 LLM 总结。 |
| 多工具调用 | 内置天气查询、用户特定数据检索和报告生成工具。中间件根据用户意图自动选择正确的工具。 |
| 动态提示切换 | 两套系统提示模板——一套用于普通问答,另一套用于报告生成——由中间件在运行时切换。 |
| Streamlit 前端 | 一个 Web UI,显示对话,逐 token 流式传输 LLM 输出,并可视化代理的内部推理链。 |
| 模块化、YAML 驱动设计 | 代理逻辑、RAG 设置、向量存储参数和提示路径位于单独的 YAML 文件中,无需更改代码即可轻松重新配置。 |
工作原理(高级流程)
- 用户在 Streamlit 聊天框中输入查询。
- 中间件决定使用哪个提示模板并启动 ReAct 循环。
- 代理生成思考 → 决定行动(例如RAG 搜索或调用天气 API)。
- 选定的工具运行,返回观察。
- 重复步骤 3-4,直到代理能生成最终答案,并将其流式返回到 UI。
技术栈
- LLM: 阿里云 DashScope ChatTongyi(通过 DashScope API)。
- 代理框架: LangChain 0.3 + LangGraph 0.2。
- 向量存储: Chroma(持久化磁盘索引)。
- 嵌入模型: DashScope 嵌入服务。
- 文档处理: PyPDF、RecursiveCharacterTextSplitter。
- 前端: Streamlit 1.40。
- 配置: 用于代理、RAG、提示、Chroma 的 YAML 文件。
开始使用(如 README 中所述)
# 1. 克隆
git clone https://github.com/lhh737/LangChain-ReAct-Agent.git && cd LangChain-ReAct-Agent
# 2. 安装
pip install -r requirements.txt
# 3. 设置 DashScope API 密钥
export DASHSCOPE_API_KEY="your-key" # Windows 上使用 `set DASHSCOPE_API_KEY=your-key`
# 4. 构建知识库(仅首次运行)
python -c "from rag.vector_store import VectorStoreService; VectorStoreService().load_document()"
# 5. 启动 UI
streamlit run app.py
在浏览器中打开 http://localhost:8501,然后尝试示例问题:
- "扫地机器人有哪些主要功能?" → 触发 RAG 问答。
- "如果机器人无法正常回充,该如何处理?" → 触发故障诊断推理。
- "请根据用户数据生成一份个性化使用报告" → 触发报告生成工具链。
项目结构
agent/– 核心 ReAct 逻辑和工具定义。rag/– 向量存储处理和 RAG 服务。model/– 创建 LLM 和嵌入客户端的工厂。config/– 控制行为的 YAML 文件。prompts/– 原始提示模板。utils/– 辅助模块(配置加载器、文件处理、日志记录等)。app.py– Streamlit 入口点。
适用人群
- 希望获得带工具使用的 ReAct 风格代理参考实现的开发人员。
- 构建需要将知识库查询与外部数据相结合的 AI 增强客户服务机器人的团队。
- 探索 LangChain/LangGraph 模式以进行动态提示管理和 RAG 集成的任何人。
许可证: MIT(请参阅 LICENSE)。
相关
- 项目
- 项目
- 项目
- 项目
- 项目