Skip to content

About

LangGraph+A2A+MCP 实现的Agent RAG

Resources

Stars

54 stars

Watchers

1 watching

Forks

Latest commit

 

History

198 Commits

Folders and files

Repository files navigation

LangGraph Agentic RAG with Streaming

React Python Docker LangGraph

一个基于 LangGraph、Google A2A 协议 和 微服务架构 构建的智能 RAG Agent 系统。本项目前后端分离,通过 Docker Compose 实现一键部署,为用户提供具备实时思考过程展示、多轮对话、流式响应和来源追溯的先进交互体验。

Home1.png Home2.png


核心功能

  • 流式交互体验: Agent 的每一个思考步骤、工具调用、Token 生成都通过 SSE (Server-Sent Events) 实时推送到前端,提供极致的透明度和流畅的用户体验。
  • 来源可追溯 (RAG): Agent 的回答不仅包含最终答案,还明确标注了信息来源,确保了内容的可信度和可验证性。
  • 实体关联查询: 自动识别回答中的实体(如:疾病、药品),并进行关联知识库查询,丰富回答内容。
  • 多轮对话记忆: 基于 A2A 协议的会话管理,支持上下文记忆,能够进行连贯的多轮对话。
  • 可插拔组件 (MCP): 支持 MCP (Model Context Protocol) 协议,可以方便地将外部工具或服务作为插件集成到 Agent 中。
  • 微服务架构: 后端采用高度解耦的微服务设计,通过 RabbitMQ 进行异步通信,保证了系统的高可用、高并发和可扩展性。
  • 多数据源支持: 可灵活切换知识库、数据库等不同数据源。

系统架构

本系统采用前后端分离的微服务架构,各服务职责明确、独立部署,通过 RabbitMQ 消息队列进行解耦和异步通信。

graph TD
    %% ===== 分区 =====
    subgraph 用户端
        A[React 前端]
    end

    subgraph "后端服务:Docker Compose"
        B[API Gateway]
        C[(RabbitMQ)]
        subgraph "MQ Workers"
            D1[Knowledge Agent]
            D2[image_api 多模态识别/文件读取]
            D3[Entity Identity]
            
        end
        F[(Personal DB)]
        I[(Other Tools)]
        H[MCP]
    end
    

    %% ===== 用户交互 =====
    A -- HTTP/SSE --> B

    %% ===== 任务发布与分发 =====
    B -- 发布任务 --> C
    C -- 分发到队列 --> D1
    C -- 分发到队列 --> D2
    C -- 分发到队列 --> D3

    %% ===== Workers 能力调用 =====


    D1 --> F
    D1 --> H
    D1 --> I

    %% ===== 结果回传 =====
    D1 -- 发布结果 --> C
    D2 -- 发布结果 --> C
    D3 -- 发布结果 --> C
    C -- 返回结果 --> B
    B -- SSE推送 --> A
Loading
  • Frontend: React + Vite 构建的现代化用户界面,通过 SSE 实时渲染后端推送的各种事件。
  • API Gateway: 系统的统一入口,负责接收前端请求、管理 SSE 连接,并通过 RabbitMQ 将任务分发给后端。
  • MQ Backend: 消费任务队列,调用核心 Agent 服务,并将处理结果(包括中间步骤)发回结果队列。
  • Knowledge Agent: 核心智能代理,基于 LangGraph 构建,负责推理、工具调用和生成回答。
  • Personal DB: 个人知识库服务,负责文件的读取、解析、向量化,并存入向量数据库。
  • Entity Identity: 实体识别服务,用于从文本中识别出特定类型的实体。
  • RabbitMQ: 消息代理,作为服务间的缓冲和解耦层,实现系统的异步化和高并发。

快速开始

推荐使用 Docker Compose 进行一键部署。

1. 环境准备

2. 配置环境变量

本项目中的每个后端服务都有独立的 env_template 文件。您需要根据您的环境,为 每个 服务创建 .env 文件。

例如,为 knowledge_agent 服务进行配置:

cp backend/knowledge_agent/env_template backend/knowledge_agent/.env

然后编辑 backend/knowledge_agent/.env 文件,填入您的 GOOGLE_API_KEY 等信息。

请重复此步骤,为 api_gateway、mq_backend、entity_identity 和 personal_db 等所有后端服务创建并配置 .env 文件。

3. 启动后端服务

在项目根目录下,执行以下命令:

docker-compose up --build -d

此命令会构建并以后台模式启动所有后端服务。

4. 启动前端

cd frontend
npm install
npm run dev

启动成功后,即可在浏览器中打开 http://localhost:5173 (或其他指定端口) 开始使用。

手动安装

  1. 创建python环境, 安装依赖
conda env create langgrapha2a
conda activate langgrapha2a
cd backend/api_gateway
pip install -r requirements.txt
cd backend/knowledge_agent
pip install -r requirements.txt
cd backend/entity_identity
pip install -r requirements.txt
cd backend/mq_backend
pip install -r requirements.txt
cd backend/personal_db
pip install -r requirements.txt

2.创建Rabbit MQ

docker run -d --hostname rabbitapp --name rabbitapp -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=welcome -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 25672:25672 -p 15671:15671 -p 15672:15672 -p 15691:15691 -p 15692:15692 rabbitmq:3-management
  1. 创建vhost
python script create_vhost.py
  1. 启动每个后台
cd backend/api_gateway
python main.py
cd backend/knowledge_agent
python main.py
cd backend/entity_identity
python entity_main.py
cd backend/mq_backend
python MQ_ii_main_api.py
cd backend/personal_db
python main.py
  1. 前端启动
cd frontend
npm install
npm run dev

启动成功后,即可在浏览器中打开 http://localhost:5173开始使用。

模型训练 (Reinforcement Learning)

本项目支持基于 Langgraph ART 的强化学习训练,以优化 Agent 的决策能力。

1. 环境准备

进入 train 目录,安装所需的 Python 依赖包。

cd train
pip install -r requirements.txt

2. 配置环境

从模板文件 env_template 创建您的环境配置文件 .env,并填入必要的 API Keys (例如 ZHIPU_API_KEY)。

cp env_template .env

3. 启动训练

配置好环境后,执行以下命令开始训练。您可以根据需要指定使用的 GPU。

export CUDA_VISIBLE_DEVICES=1
export HF_ENDPOINT=https://hf-mirror.com
python train.py

4. 模型测试

训练完成后,可以运行以下命令来测试模型性能:

python model_test.py

5. 监控与日志

训练过程中的日志和指标可以通过 wandb 进行监控。 访问地址: http://192.168.100.8:3005/johnson/web-search-agent-training

自定义langgraph工具和MCP工具

修改tools.py文件和创建mcp_config.json


技术栈

  • 前端: React, Vite, Tailwind CSS, TypeScript
  • 后端: Python, FastAPI, LangChain, LangGraph, Pika (RabbitMQ Client)
  • 数据库: ChromaDB (用于向量存储)
  • 基础设施: Docker, RabbitMQ
  • 核心协议: Google A2A, SSE, MCP

路线图 (Roadmap)

  • 工具元数据 (Tool Metadata)
  • 元数据返回 (Metadata Return)
  • Agent 步骤流式返回 (Step Streaming)
  • LLM Token 流式返回 (Token Streaming)
  • MCP 即插即用集成 (MCP Integration)
  • 工具动态切换 (Dynamic Tool Switching)
  • LLM 思考过程返回 (LLM Thinking Return)
  • 实现 Plan-and-Execute Agent 模式
  • 将 gemini-fullstack-langgraph-quickstart 改造为 A2A 形式
  • 个人知识库的UI

联系方式

weichat.png

About

LangGraph+A2A+MCP 实现的Agent RAG

Resources

Stars

54 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages