智慧旅行规划 Agent 集成了大语言模型(LLM)、工具调用、记忆管理与可视化能力。系统基于通义千问(Qwen),结合高德地图(MCP 协议)、Tavily 搜索与本地 RAG 检索,为用户提供可落地的旅行路线规划、景点推荐与交互式地图展示服务。
- 🧠 双模型切换: 一键在 UI 中切换 qwen-max(快速) 与 qwen-plus(深度思考)
- 💾 智能记忆系统: 长期成功案例 + 短期对话历史,支持按用户隔离
- 🗺️ 地图可视化: 自动生成交互式 HTML 地图,支持路线规划与 POI 标记
- 🎨 友好界面: 基于 Gradio 的流式对话界面,地图与图片即时渲染
- 🔧 模块化设计: Prompt、工具集、RAG 引擎、记忆管理模块化拆分,便于扩展
#进入项目
cd ai
# 创建并激活虚拟环境(建议 .venv 命名)
py -3.10 -m venv .venv
. .\.venv\Scripts\Activate.ps1
# 升级 pip 并安装依赖
python -m pip install --upgrade pip
pip install -r ..\requirements.txt # 若存在 .env.example,可复制:
# Copy-Item -Path .env.example -Destination .env
# 若不存在,请新建 .env 并填入:
# DASHSCOPE_API_KEY=<你的通义千问密钥>
# TAVILY_API_KEY=<你的Tavily密钥>
# GAODE_API_KEY=<你的高德地图密钥>
# (可选)DEFAULT_MODEL=qwen-max
# (可选)DEEP_THINKING_MODEL=qwen-plus# 从项目根目录启动
python .\main_gradio.py| 功能 | 描述 | 状态 |
|---|---|---|
| 智能对话 | 基于Qwen的自然语言交互 | ✅ |
| 深度思考 | 启用qwen-plus进行复杂推理 | ✅ |
| 网络搜索 | Tavily 实时搜索最新信息 | ✅ |
| 地图服务 | 高德地图(通过 MCP 协议)POI 搜索、路线规划 | ✅ |
| 可视化 | 生成HTML地图和数据图表 | ✅ |
| RAG检索 | 本地旅游知识库查询 | ✅ |
| 代码执行 | 安全的Python代码沙箱 | ✅ |
| 文件生成 | PDF/Excel行程文件导出 | ✅ |
开启深度思考后,系统会:
- 一键切换到 qwen-plus 模型进行更深入推理
- 展示思考过程(💭标记)
- 提供更详细、全面的解答
- 适合复杂问题和行程规划
长期记忆:
- 按用户ID独立存储成功案例
- 支持案例检索和复用
- 加速相似问题的处理
短期记忆:
- 保存完整对话上下文
- 支持临时清空和物理删除
- 多轮对话理解
- 交互式 HTML 地图(基于高德地图,生成到
temp_visualizations/*.html,前端直接加载展示) - 路线规划(驾车/步行/公交)
- POI 搜索(餐饮/景点/酒店)
- 图片展示支持本地文件与 HTTP 图片 URL,自动去重与追加到画廊
实现要点(来自 main_gradio.py):
- 深度思考开关实时切换
qwen-plus / qwen-max - 流式输出中识别并加载
temp_visualizations/*.html地图与图片 URL - 全局注入
CURRENT_USER_ID用于可视化与文件归属 - 数据图表(柱状图/折线图/饼图)
d:\ai\
├── main_gradio.py # Gradio Web 界面入口
├── requirements.txt # 依赖库清单
├── chat_agent_qwen/ # 核心 Agent 模块
│ ├── prompts/
│ │ └── system_prompts.py # 系统提示词库
│ ├── agent_self/
│ │ ├── agent.py # 主 Agent 类
│ │ └── chat_agent_qwen_3_max.py # Qwen 模型封装
│ ├── agent_memory/
│ │ └── memory.py # 记忆管理器
│ ├── agent_tools/
│ │ ├── tools.py # 工具集入口(地图/搜索/可视化 等)
│ │ ├── rag_tool.py # RAG 检索工具
│ │ └── Tavilysearch_tool.py # Tavily 搜索封装
│ ├── agent_mcp/
│ │ └── agent_mcp_gaode.py # 高德地图 MCP 客户端
│ ├── RAG_agent/
│ │ └── rag_engine.py # FAISS 向量检索
│ └── ICL_agent/
│ └── icl_agent.py # Few-shot 学习
├── md_file/ # 文档集合(本 README 所在)
│ ├── README.md # 项目说明(本文件)
│ ├── 快速开始指南.md
│ ├── 改进完成报告.md
└── temp_visualizations/ # 临时可视化文件
├── *.html # 地图 HTML
└── *.png # 图表图片
- 《快速开始指南》- 详细安装与使用
- 更多文档见
md_file/目录;API 与 Prompt 优化文档待补充
- LangChain: LLM应用开发框架
- Gradio: Web UI框架
- Pydantic: 数据验证
- 通义千问(Qwen): 阿里云大语言模型
- qwen-max: 快速响应
- qwen-plus: 深度推理
- 高德地图: 地理位置服务(通过 MCP 协议集成)
- Tavily: 网络搜索引擎
- FAISS: 向量检索数据库
- Matplotlib: 数据图表
- ReportLab: PDF生成
- OpenPyXL: Excel处理
- Jinja2: HTML模板
更多依赖详见 ../requirements.txt。
用户: 帮我规划从深圳技术大学到广东海洋大学的路线
助手:
🚗 路线规划如下:
**方式一: 高铁(推荐)**
- 深圳坪山站 → 湛江西站
- 车程: 约3.5小时
- 票价: 二等座约150元
- 到达后打车20分钟到校
**方式二: 自驾**
- 全程: 约500公里
- 耗时: 约6小时
- 路线: 沈海高速(G15)
[附带交互式地图展示]
用户: (开启深度思考) 帮我规划北京到杭州的三日游,预算5000元
助手:
💭 思考: 分析行程需求...北京到杭州直线距离约1100公里,建议高铁往返,
单程耗时约5小时,往返预算约1000元...
💭 思考: 评估景点方案...杭州主要景点包括西湖(免费)、灵隐寺(门票75)、
宋城千古情(门票300)...综合考虑时间和预算...
💭 结论: 推荐"经典文化游"路线,总预算约4800元
**Day 1: 抵达 + 西湖游**
- 上午: 北京南 → 杭州东 (高铁5小时, 500元)
- 下午: 西湖景区(断桥、苏堤、雷峰塔)
- 晚上: 入住西湖附近酒店(300元)
...
[详细行程 + 交通 + 住宿 + 美食推荐]
编辑 chat_agent_qwen/prompts/system_prompts.py:
# 修改对话风格
CHAT_RESPONSE_SYSTEM_PROMPT = """
你是一个专业且幽默的旅行助手...
[自定义您的Prompt]
"""ICL_FEW_SHOT_EXAMPLES.append({
"input": "你的问题示例",
"output": "期望的回答示例"
})在 .env 中:
DEFAULT_MODEL=qwen-max
DEEP_THINKING_MODEL=qwen-plus
MAX_HISTORY_LENGTH=100Q: 启动报错 "No module named xxx"
确认虚拟环境已激活,重新安装依赖(在项目根目录):
pip install -r .\requirements.txt --force-reinstallQ: API调用失败
检查:
.env文件是否存在且配置正确- API密钥是否有效
- 网络连接是否正常
Q: 地图无法显示
- 检查
temp_visualizations目录权限 - 确认高德API密钥有效
- 查看浏览器控制台错误
Q: PowerShell 无法激活虚拟环境(被脚本执行策略阻止)
在当前会话放宽执行策略后再激活:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
. .\.venv\Scripts\Activate.ps1Q: 端口 7860 被占用
方法一:结束占用进程(示例)
netstat -ano | Select-String 7860
taskkill /PID <上一步查到的PID> /F方法二:临时修改启动端口(编辑 main_gradio.py 最后一行)
demo.launch(server_port=7861)Q: .env 似乎未生效
- 确认
.env位于项目根目录(与main_gradio.py同级) - 本项目已在所有导入之前执行
load_dotenv(),请确保没有移动该语句 - Windows 下请使用 UTF-8 编码保存
.env
更多问题请查看《快速开始指南》的 FAQ 部分。
新增功能:
- ✨ 深度思考模式(qwen-plus)
- ✨ 成功案例长期记忆库
- ✨ Prompt模块化管理
- ✨ 完整的requirements.txt
优化改进:
- 🔧 HTML地图可视化修复
- 🔧 记忆系统全面重构
- 🔧 文件管理增强
- 🔧 代码注释完善
性能提升:
- ⚡ 相似问题响应速度提升70%
- ⚡ 成功案例复用率40-60%
- ⚡ 代码可维护性提升50%
- 🎉 初始版本发布
- 基础对话功能
- 工具调用集成
- Gradio界面
欢迎贡献代码、报告问题或提出建议!
- Fork本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启Pull Request
本项目采用 MIT 开源协议(如未包含 LICENSE 文件,请按需添加)。
wjj
- 项目根目录: .gaode_agent
- 邮箱: 2089966424@qq.com
- GitHub: Jianjun Wang passionworkeer
感谢以下开源项目:
如有问题或建议,请:
- 📧 发送邮件至: 2089966424@qq.com
- 💬 提交Issue: [项目Issue页面]
- 📖 查看文档: [文档链接]
⭐ 如果这个项目对您有帮助,欢迎点 Star 支持! ⭐
Made with ❤️ by wjj