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 文件中,无需更改代码即可轻松重新配置。

工作原理(高级流程)

  1. 用户在 Streamlit 聊天框中输入查询。
  2. 中间件决定使用哪个提示模板并启动 ReAct 循环。
  3. 代理生成思考 → 决定行动(例如RAG 搜索或调用天气 API)。
  4. 选定的工具运行,返回观察。
  5. 重复步骤 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)。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目