一个基于 LangGraph、Google A2A 协议 和 微服务架构 构建的智能 RAG Agent 系统。本项目前后端分离,通过 Docker Compose 实现一键部署,为用户提供具备实时思考过程展示、多轮对话、流式响应和来源追溯的先进交互体验。
- 流式交互体验: 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
- Frontend: React + Vite 构建的现代化用户界面,通过 SSE 实时渲染后端推送的各种事件。
- API Gateway: 系统的统一入口,负责接收前端请求、管理 SSE 连接,并通过 RabbitMQ 将任务分发给后端。
- MQ Backend: 消费任务队列,调用核心 Agent 服务,并将处理结果(包括中间步骤)发回结果队列。
- Knowledge Agent: 核心智能代理,基于 LangGraph 构建,负责推理、工具调用和生成回答。
- Personal DB: 个人知识库服务,负责文件的读取、解析、向量化,并存入向量数据库。
- Entity Identity: 实体识别服务,用于从文本中识别出特定类型的实体。
- RabbitMQ: 消息代理,作为服务间的缓冲和解耦层,实现系统的异步化和高并发。
推荐使用 Docker Compose 进行一键部署。
- 安装 Docker 和 Docker Compose。
- 克隆本项目到本地。
本项目中的每个后端服务都有独立的 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
文件。
在项目根目录下,执行以下命令:
docker-compose up --build -d
此命令会构建并以后台模式启动所有后端服务。
cd frontend
npm install
npm run dev
启动成功后,即可在浏览器中打开 http://localhost:5173
(或其他指定端口) 开始使用。
- 创建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
- 创建vhost
python script create_vhost.py
- 启动每个后台
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
- 前端启动
cd frontend
npm install
npm run dev
启动成功后,即可在浏览器中打开 http://localhost:5173
开始使用。
本项目支持基于 Langgraph ART 的强化学习训练,以优化 Agent 的决策能力。
进入 train
目录,安装所需的 Python 依赖包。
cd train
pip install -r requirements.txt
从模板文件 env_template
创建您的环境配置文件 .env
,并填入必要的 API Keys (例如 ZHIPU_API_KEY
)。
cp env_template .env
配置好环境后,执行以下命令开始训练。您可以根据需要指定使用的 GPU。
export CUDA_VISIBLE_DEVICES=1
export HF_ENDPOINT=https://hf-mirror.com
python train.py
训练完成后,可以运行以下命令来测试模型性能:
python model_test.py
训练过程中的日志和指标可以通过 wandb
进行监控。
访问地址: http://192.168.100.8:3005/johnson/web-search-agent-training
修改tools.py文件和创建mcp_config.json
- 前端: React, Vite, Tailwind CSS, TypeScript
- 后端: Python, FastAPI, LangChain, LangGraph, Pika (RabbitMQ Client)
- 数据库: ChromaDB (用于向量存储)
- 基础设施: Docker, RabbitMQ
- 核心协议: Google A2A, SSE, MCP
- 工具元数据 (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