Skip to content

johnson7788/LangGraphA2A

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LangGraph Agentic RAG with Streaming

React Python Docker LangGraph

一个基于 LangGraphGoogle 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_gatewaymq_backendentity_identitypersonal_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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published