|
|
3 月之前 | |
|---|---|---|
| .. | ||
| backend | 5 天之前 | |
| frontend | 5 天之前 | |
| .gitignore | 5 天之前 | |
| CLAUDE.md | 5 天之前 | |
| PROJECT.md | 5 天之前 | |
| README.md | 5 天之前 | |
AI 驱动的智能旅行规划助手,基于 HelloAgents 框架构建,后端 FastAPI + 前端 Vue 3 + TypeScript。通过多智能体 LLM 编排和高德地图 MCP 协议集成,实现个性化的旅行计划生成。系统支持多智能体协作自动搜索景点、查询天气、推荐酒店并生成完整行程,同时提供 AI 旅游对话和行程管理功能。
ThreadPoolExecutor 并行执行无依赖任务,显著提升生成效率ReadableStream.getReader() 解析流数据get_*() 函数惰性初始化并缓存全局实例,无依赖注入框架helloagents-trip-planner/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── agents/ # Agent 实现
│ │ │ ├── trip_planner_agent.py # 多智能体旅行规划系统
│ │ │ ├── mcp_tool.py # MCP 工具封装
│ │ │ └── profile_extraction_agent.py # 用户画像提取
│ │ ├── api/ # FastAPI 路由
│ │ │ ├── main.py # 应用入口,CORS、中间件、路由注册
│ │ │ └── routes/
│ │ │ ├── auth.py # 用户认证
│ │ │ ├── trip.py # 旅行计划生成
│ │ │ ├── chat.py # AI 旅游对话(SSE)
│ │ │ ├── history.py # 历史行程
│ │ │ ├── map.py # 地图服务
│ │ │ └── poi.py # POI 详情
│ │ ├── services/ # 服务层
│ │ │ ├── amap_service.py # 高德地图 HTTP 封装
│ │ │ ├── llm_service.py # LLM 客户端
│ │ │ ├── travel_chat_service.py # AI 聊天服务
│ │ │ ├── user_profile_service.py # 用户画像管理
│ │ │ └── unsplash_service.py # 图片服务
│ │ ├── models/
│ │ │ └── schemas.py # Pydantic 数据模型
│ │ ├── config.py # 配置管理
│ │ ├── database.py # SQLite 数据库
│ │ ├── jwt_utils.py # JWT 工具
│ │ ├── redis_service.py # Redis 客户端
│ │ ├── rsa_service.py # RSA 加解密
│ │ └── user_context.py # 用户上下文中间件
│ ├── requirements.txt
│ ├── .env.example
│ └── run.py
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── views/ # 页面视图
│ │ │ ├── Home.vue # 旅行表单首页
│ │ │ ├── Result.vue # 行程展示(地图、导出)
│ │ │ ├── Login.vue # 登录/注册
│ │ │ ├── History.vue # 历史行程列表
│ │ │ └── Chat.vue # AI 旅游对话
│ │ ├── components/ # 公共组件
│ │ ├── services/ # API 服务(Axios)
│ │ ├── types/ # TypeScript 类型
│ │ └── App.vue
│ ├── package.json
│ ├── .env.example
│ └── vite.config.ts
└── README.md
cd backend
python -m venv .venv
# Windows: .venv\Scripts\activate | macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # 填入 API 密钥
python run.py # 启动 uvicorn,端口 8000
cd frontend
npm install
cp .env.example .env # 填入高德地图密钥
npm run dev # Vite 开发服务器,端口 5173
npm run build # 生产构建
cd backend && openssl req -x509 -newkey rsa:2048 -keyout certs/key.pem -out certs/cert.pem -days 365 -nodes -subj "//CN=localhost"
# 在 backend/.env 中设置 SSL_ENABLED=true,重启后端
# 前端代理目标已指向 https://localhost:8000
# 4 个 Agent 协同工作
attraction_agent.run() # [MCP] 搜索景点 POI
weather_agent.run() # [MCP] 查询天气
hotel_agent.run() # [MCP] 搜索酒店
planner_agent.run() # [LLM 仅] 整合生成行程
_enrich_with_real_routes() # [HTTP] 获取真实交通路线
其中景点搜索、天气查询、酒店推荐通过 ThreadPoolExecutor 并行执行,行程规划 Agent 在并行结果上顺序执行。
Agent 自动调用高德地图 MCP 工具获取实时数据:
maps_text_search — 景点 / 酒店 POI 搜索maps_weather — 天气查询maps_direction_* — 步行 / 驾车 / 公共交通路线规划POST /api/chat/sessions/{id}/messages
→ 保存用户消息 → 加载用户画像 → 注入系统提示词
→ SSE 流式返回 Token (type: token/error/done)
→ 保存 AI 回复 → 异步提取用户画像
启动后端后访问 http://localhost:8000/docs 查看 Swagger 文档。
6 组路由(前缀 /api):
| 路由 | 功能 |
|---|---|
POST /api/auth/* |
登录/注册/刷新 Token |
POST /api/trip/plan |
生成旅行计划 |
POST /api/chat/sessions/{id}/messages |
AI 对话(SSE 流式) |
GET /api/history/* |
历史行程 CRUD |
GET /api/map/* |
POI 搜索、天气、路线规划 |
GET /api/poi/* |
POI 详情和图片 |
请求 → POST /api/trip/plan
→ MultiAgentTripPlanner.plan_trip()
┌─ attraction_agent.run() [MCP: maps_text_search] ─┐
├─ weather_agent.run() [MCP: maps_weather] ├─ 并行执行
└─ hotel_agent.run() [MCP: maps_text_search] ┘
→ planner_agent.run() [仅 LLM,无工具]
→ _enrich_with_real_routes() [HTTP 高德 API]
→ TripPlanResponse
后端 .env 主要配置项:
LLM_MODEL_ID、LLM_API_KEY、LLM_BASE_URL — LLM 提供商AMAP_API_KEY — 高德地图 API 密钥(必填)REDIS_HOST/PORT/PASSWORD/DB — Redis 配置JWT_SECRET — 首次运行自动生成SSL_ENABLED/SSL_CERTFILE/SSL_KEYFILE — 可选 HTTPS前端 .env 主要配置项:
VITE_API_BASE_URL — 后端地址(默认 https://localhost:8000)VITE_AMAP_WEB_KEY/VITE_AMAP_WEB_JS_KEY — 高德 JS API 密钥欢迎提交 Pull Request 或 Issue!
CC BY-NC-SA 4.0
Trip Planner Pro — 让旅行计划变得简单而智能 🌈