基于 LangGraph 和 LangChain 构建的智能旅行行程规划系统,支持多 Agent 协作、流式响应、预算控制和地图可视化。
ps:本项目为hello-agents在langgraph上借助claude code的重构,目前所有流程均可以跑通,后续还会完善新的功能,欢迎大家提出宝贵的意见和建议,一起学习一起进大厂!!!
- 智能行程规划: 根据目的地、日期、偏好自动生成详细行程
- 预算控制: 支持设置预算范围,AI 会根据预算合理安排景点、餐饮和住宿
- 实时进度反馈: SSE 流式响应,实时展示 Agent 执行进度
- 地图可视化: 高德地图集成,展示景点位置和路线
- 多轮对话: 支持自然语言交互,逐步完善行程需求
- 行程持久化: 每次规划结果自动保存为 JSON 文件
- 多 LLM 支持: DeepSeek、阿里云百炼,可灵活切换
- 高德地图 API: POI 搜索、天气查询、酒店推荐、地理编码
- 类型安全: 后端 Pydantic + 前端 TypeScript 全栈类型校验
- 响应式 UI: Vue 3 + Element Plus,支持移动端
langgraph-trip-planner/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── api/ # API 路由
│ │ │ ├── routes/
│ │ │ │ ├── trip.py # 行程规划接口
│ │ │ │ ├── chat.py # 多轮对话接口
│ │ │ │ └── map.py # 地图服务接口
│ │ │ └── main.py # FastAPI 入口
│ │ ├── core/ # 核心配置
│ │ │ ├── config.py # 环境配置
│ │ │ └── llm.py # LLM 工厂
│ │ ├── models/
│ │ │ └── schemas.py # 数据模型
│ │ ├── services/
│ │ │ └── amap_service.py # 高德地图服务
│ │ └── saved_results/ # 行程结果存储
│ ├── requirements.txt
│ └── .env # 环境变量 (需配置)
│
└── frontend/ # 前端应用
├── src/
│ ├── views/
│ │ ├── Home.vue # 表单模式主页
│ │ ├── Result.vue # 结果展示页
│ │ └── Chat.vue # 对话模式页
│ ├── stores/ # Pinia 状态管理
│ ├── services/ # API 服务
│ └── types/ # TypeScript 类型
├── package.json
└── .env # 环境变量 (需配置)
- Python 3.10+
- Node.js 18+
- Conda (推荐)
cd backend
# 创建并激活 Conda 环境
conda create -n agent_planner python=3.10
conda activate agent_planner
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env编辑 .env 文件:
# LLM 配置 (至少配置一个)
DEEPSEEK_API_KEY=your_deepseek_api_key
ALIYUN_DASHSCOPE_API_KEY=your_aliyun_api_key
# 高德地图 API (必需)
AMAP_API_KEY=your_amap_web_api_key
# LangSmith 追踪 (可选)
LANGCHAIN_TRACING_V2=false
LANGCHAIN_API_KEY=your_langsmith_key
LANGCHAIN_PROJECT=trip-planner-agent启动后端服务:
uvicorn app.api.main:app --host 0.0.0.0 --port 8000 --reloadcd frontend
# 安装依赖
npm install
# 配置环境变量
cp .env.example .env编辑 .env 文件:
VITE_API_BASE_URL=http://localhost:8000
VITE_AMAP_KEY=your_amap_js_api_key注意:高德地图需要分别申请 Web API Key (后端) 和 JS API Key (前端)
启动前端服务:
npm run dev访问 http://localhost:5173 开始使用。
POST /api/trip/plan
Content-Type: application/json
{
"city": "武汉",
"start_date": "2026-04-23",
"end_date": "2026-04-24",
"travel_days": 2,
"transportation": "公共交通",
"accommodation": "舒适型酒店",
"preferences": ["历史文化"],
"free_text_input": "想看黄鹤楼",
"budget": [1000, 3000],
"llm_provider": "deepseek"
}POST /api/trip/plan/stream
Content-Type: application/json
# 返回 SSE 流式事件
data: {"node": "init", "status": "running", "message": "正在初始化..."}
data: {"node": "poi_search", "status": "completed", "message": "找到 20 个景点"}
data: {"node": "complete", "data": {"itinerary": {...}}}POST /api/chat/message
Content-Type: application/json
{
"session_id": "session_xxx",
"message": "我想去武汉玩两天,预算两千左右",
"llm_provider": "deepseek"
}- 输入目的地城市、出发和返回日期
- 选择交通方式和住宿偏好
- 勾选旅行偏好 (历史文化、自然风光、美食等)
- 设置预算范围 (滑动条调整)
- 选择 AI 模型
- 点击"开始规划行程"
- 实时查看 Agent 执行进度
- 规划完成后自动跳转结果页
支持自然语言交互,例如:
- "我想去北京玩三天"
- "预算大概两千块"
- "喜欢历史文化景点"
- "帮我推荐一些美食"
- 行程概览:城市、日期、天数
- 地图展示:景点位置标记
- 每日行程:景点详情、游玩时长、门票价格
- 餐饮推荐:早餐、午餐、晚餐
- 住宿安排:酒店信息、价格范围
- 预算估算:分类费用统计
- PDF 导出:保存行程计划
每次行程规划完成后,结果会自动保存到 backend/app/saved_results/ 目录:
{
"session_id": "xxx",
"created_at": "2026-04-22T15:00:00",
"request": {
"city": "武汉",
"budget": [1000, 3000],
...
},
"result": {
"city": "武汉",
"days": [...],
"budget": {...}
}
}| 技术 | 用途 |
|---|---|
| FastAPI | Web 框架 |
| LangChain | LLM 应用框架 |
| Pydantic | 数据验证 |
| httpx | 异步 HTTP 客户端 |
| uvicorn | ASGI 服务器 |
| 技术 | 用途 |
|---|---|
| Vue 3 | 前端框架 |
| TypeScript | 类型安全 |
| Element Plus | UI 组件库 |
| Pinia | 状态管理 |
| Axios | HTTP 客户端 |
| Vue Router | 路由管理 |
| 服务 | 用途 |
|---|---|
| 高德地图 API | POI 搜索、天气、地理编码 |
| DeepSeek | LLM 服务 |
| 阿里云百炼 | LLM 服务 (通义千问) |
- API Key 安全: 请勿将
.env文件提交到版本控制 - 高德地图 Key: 需要分别申请 Web 服务 API Key (后端) 和 JS API Key (前端)
- LLM 费用: 使用 DeepSeek 或阿里云百炼会产生 API 调用费用
- 预算控制: AI 生成的预算为估算值,实际花费可能有所不同
- 添加更多 LLM 提供商 (OpenAI, Claude)
- 支持行程分享功能
- 添加用户收藏和历史记录
- 优化移动端体验
- 添加景点评价和图片