Thanks to visit codestin.com
Credit goes to github.com

Skip to content

xiansen11/gogogoagent

Repository files navigation

🌍 GoGoGoAgent - GoGoGo智能旅行规划系统

基于 LangGraph 的企业级多 Agent 协作智能旅行规划助手,集成 Advanced RAG、MCP 协议、长期/短期记忆等核心能力。

✨ 核心特性

  • 🤖 多 Agent 协作架构 — 基于 LangGraph Handoffs 工作流编排,8 个专业 Agent 流水线协作完成旅行规划
  • 🔍 Advanced RAG — Multi-Query 扩展 + HyDE 假设文档 + 混合检索(向量 + BM25)+ LLM 重排序
  • 🛠️ MCP 协议集成 — 标准化工具访问,内置天气查询和搜索服务
  • 🧠 智能记忆管理 — 短期对话记忆(Checkpointer)+ 长期用户偏好存储(Store)
  • ⚡ 流式响应 — 基于 SSE 的实时流式输出,支持逐 Token 推送
  • 🔄 回滚机制 — 支持任意步骤回退重规划,HandoffMiddleware 智能路由
  • 📦 完整数据层 — PostgreSQL (pgvector) + Redis + ChromaDB 三层存储

🏗️ 系统架构

┌─────────────────────────────────────────────────────────┐
│                    Frontend (HTML/CSS/JS)                │
│                   SSE Stream + REST API                  │
└──────────────────────────┬──────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────┐
│                   FastAPI Backend                        │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐              │
│  │ Chat API │  │Knowledge │  │ User API │              │
│  └────┬─────┘  └──────────┘  └──────────┘              │
│       │                                                 │
│  ┌────▼─────────────────────────────────────────────┐   │
│  │           LangGraph Handoff Workflow              │   │
│  │                                                   │   │
│  │  Requirement → Destination → Transport →          │   │
│  │  Accommodation → Dining → Itinerary →             │   │
│  │  Budget → Report                                  │   │
│  │                                                   │   │
│  │  ┌─────────────┐  ┌──────────────┐               │   │
│  │  │   Router     │  │   Subagents  │               │   │
│  │  │  Classifier  │  │  Flight/Train│               │   │
│  │  │  Explore     │  │  Driving     │               │   │
│  │  └─────────────┘  └──────────────┘               │   │
│  └───────────────────────────────────────────────────┘   │
│       │         │         │                               │
│  ┌────▼───┐ ┌───▼───┐ ┌──▼──────┐                       │
│  │Advanced│ │  MCP  │ │ Memory  │                        │
│  │  RAG   │ │Client │ │Manager  │                        │
│  └────┬───┘ └───┬───┘ └──┬──────┘                       │
└───────┼─────────┼────────┼───────────────────────────────┘
        │         │        │
┌───────▼─────────▼────────▼───────────────────────────────┐
│                    Data Storage Layer                      │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐               │
│  │PostgreSQL│  │  Redis   │  │ ChromaDB │               │
│  │ (pgvector│  │  Cache   │  │  Vector  │               │
│  │  + RDBMS)│  │  + Queue │  │   Store  │               │
│  └──────────┘  └──────────┘  └──────────┘               │
└───────────────────────────────────────────────────────────┘

📁 项目结构

gogogoagent/
├── backend/
│   ├── app/
│   │   ├── agents/              # 多 Agent 系统
│   │   │   ├── handoffs/        # Handoffs 工作流 Agent
│   │   │   │   ├── requirement_agent.py   # 需求收集
│   │   │   │   ├── destination_agent.py   # 目的地推荐
│   │   │   │   ├── transport_agent.py     # 交通规划
│   │   │   │   ├── accommodation_agent.py # 住宿规划
│   │   │   │   ├── dining_agent.py        # 餐饮规划
│   │   │   │   ├── itinerary_agent.py     # 行程生成
│   │   │   │   ├── budget_agent.py        # 预算汇总
│   │   │   │   ├── report_agent.py        # 报告生成
│   │   │   │   └── handoff_middleware.py  # 回滚中间件
│   │   │   ├── router/          # Router 智能路由
│   │   │   │   ├── classifier.py
│   │   │   │   ├── explore_agent.py
│   │   │   │   ├── send_router.py
│   │   │   │   └── synthesizer.py
│   │   │   └── subagents/       # Subagents 工具调用
│   │   │       ├── flight_subagent.py
│   │   │       ├── train_subagent.py
│   │   │       ├── driving_subagent.py
│   │   │       └── transport_coordinator.py
│   │   ├── api/                 # API 路由
│   │   │   ├── chat.py          # 聊天接口 (SSE 流式)
│   │   │   ├── knowledge.py     # 知识库管理
│   │   │   └── user.py          # 用户管理
│   │   ├── core/                # 核心模块
│   │   │   ├── llm.py           # LLM 初始化 (Qwen/DeepSeek)
│   │   │   ├── embeddings.py    # 向量嵌入
│   │   │   ├── mcp_client.py    # MCP 客户端
│   │   │   └── middleware.py    # 全局中间件
│   │   ├── db/                  # 数据库连接
│   │   │   ├── postgresql.py    # PostgreSQL (pgvector)
│   │   │   ├── redis.py         # Redis 缓存
│   │   │   ├── chromadb.py      # ChromaDB 向量库
│   │   │   ├── models.py        # ORM 模型
│   │   │   └── crud.py          # 数据操作
│   │   ├── graph/               # LangGraph 工作流
│   │   │   ├── handoff_workflow.py  # Handoffs 主工作流
│   │   │   ├── router_workflow.py   # Router 工作流
│   │   │   ├── subagent_workflow.py # Subagent 工作流
│   │   │   └── state.py         # 状态定义
│   │   ├── mcp_servers/         # MCP 工具服务
│   │   │   ├── weather_server.py
│   │   │   └── search_server.py
│   │   ├── memory/              # 记忆管理
│   │   │   ├── checkpointer.py  # 短期对话记忆
│   │   │   └── store.py         # 长期偏好存储
│   │   ├── rag/                 # Advanced RAG
│   │   │   ├── query_optimizer.py    # Multi-Query + HyDE
│   │   │   ├── hybrid_retriever.py   # 混合检索
│   │   │   ├── reranker.py           # LLM 重排序
│   │   │   ├── context_optimizer.py  # 上下文优化
│   │   │   ├── indexer.py            # 索引构建
│   │   │   ├── loader.py             # 文档加载
│   │   │   └── splitter.py           # 文档切分
│   │   ├── utils/               # 工具函数
│   │   ├── config.py            # 配置管理
│   │   └── main.py              # 应用入口
│   ├── alembic/                 # 数据库迁移
│   ├── .env.example             # 环境变量模板
│   └── pyproject.toml           # 项目依赖
├── frontend/
│   ├── index.html               # 主页面
│   ├── css/style.css            # 样式
│   └── js/app.js                # 前端逻辑
├── sql/
│   ├── init.sql                 # 数据库初始化
│   └── seed_data.sql            # 种子数据
├── docker-compose.yml           # Docker 编排
├── Dockerfile                   # 容器构建
└── .gitignore

🚀 快速开始

环境要求

  • Python >= 3.11
  • Docker & Docker Compose (用于 PostgreSQL、Redis、ChromaDB)
  • Qwen API Key (通义千问)

1. 克隆项目

git clone https://github.com/your-username/gogogoagent.git
cd gogogoagent

2. 启动基础设施服务

docker compose up -d

这将启动以下服务:

服务 端口 说明
PostgreSQL (pgvector) 5432 关系型数据库 + 向量检索
Redis 6379 缓存 + 消息队列
ChromaDB 8000 向量数据库

3. 配置环境变量

cp backend/.env.example backend/.env

编辑 backend/.env,填入你的 API Key:

LLM_PROVIDER=qwen
QWEN_API_KEY=your_qwen_api_key_here
QWEN_MODEL_NAME=qwen-max

4. 安装依赖

cd backend
pip install -e .

5. 启动服务

uvicorn app.main:app --host 0.0.0.0 --port 9000 --reload

访问 http://localhost:9000 即可使用。

📡 API 接口

方法 路径 说明
GET /api/chat/stream SSE 流式聊天
POST /api/chat 同步聊天
GET /api/chat/conversations 获取对话列表
GET /api/chat/history/{id} 获取对话历史
POST /api/knowledge/upload 上传知识文档
GET /api/knowledge/list 获取知识库列表
GET /health 健康检查

🤝 Agent 工作流

系统采用 Handoffs 工作流编排,8 个专业 Agent 按流水线协作:

用户输入 → Requirement Agent (需求收集)
         → Destination Agent (目的地推荐)
         → Transport Agent (交通规划)
         → Accommodation Agent (住宿规划)
         → Dining Agent (餐饮规划)
         → Itinerary Agent (行程生成)
         → Budget Agent (预算汇总)
         → Report Agent (报告生成) → 输出完整旅行规划

每个 Agent 执行完毕后通过 route_step 条件边自动路由到下一步,支持回退到任意步骤重新规划。

🔍 Advanced RAG 流程

用户查询
  │
  ├── Multi-Query 扩展 ──→ 生成多个相关查询
  ├── HyDE 假设文档 ──→ LLM 生成假设性答案
  │
  ▼
混合检索
  ├── 向量检索 (ChromaDB) ──→ 语义相似度
  └── BM25 检索 ──→ 关键词匹配
  │
  ▼
LLM 重排序 ──→ 交叉编码器精排
  │
  ▼
上下文优化 ──→ 去重 + 截断 + 排序
  │
  ▼
增强生成

🛠️ 技术栈

类别 技术
后端框架 FastAPI
AI 框架 LangChain + LangGraph
LLM Qwen (通义千问) / DeepSeek
数据库 PostgreSQL (pgvector)
缓存 Redis
向量数据库 ChromaDB
协议 MCP (Model Context Protocol)
前端 HTML + CSS + JavaScript
容器化 Docker + Docker Compose
可观测性 LangSmith + Loguru

📄 License

MIT License

About

GoGoGoAgent - Intelligent Travel Planning System based on LangGraph Multi-Agent Collaboration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors