langchain-travel-agent
mcp
Basarisiz
Health Gecti
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 39 GitHub stars
Code Basarisiz
- exec() — Shell command execution in .agents/skills/swarm/scripts/interpolate.ts
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
旅游助手:一句话出几天行程,地图按天标点连线。LangChain 1.x + 通义千问 Qwen + 高德地图 MCP + Gradio,每次提问只调用一轮工具,花费可控。
README.md
旅游助手 · Travel Agent
一句话出几天行程,地图按天标点连线。基于 LangChain 1.x、通义千问 Qwen 和高德地图 MCP。

亮点
- 说一句话,出几天行程。 比如「成都三天,轻松一点」,左边按天列出每一站、怎么去、要注意什么;右边地图只画选中的那一天,从第一站连到最后一站。
- 每次提问只调用一轮工具。 模型只搜一次地点、查一次天气,其余高德工具不交给模型;地点坐标由页面补查,最多 12 次。花费和速度都可控。
- 查不到就说查不到。 高德调用失败时,模型收到的是「没查到」,并被要求在回答里写明;高德连不上时页面补查第一次失败就停,不会卡住。
三步跑起来
git clone https://github.com/SWUSTcyt/langchain-travel-agent.git
cd langchain-travel-agent
pip install -r requirements.txt # 建议 Python 3.11,并使用虚拟环境
- 复制
.env.example为.env,按下面的「环境配置」填好 key。 - 运行
python main.py。 - 打开 http://127.0.0.1:7862/ ,点聊天框里的示例,或者直接输入城市和天数。
怎么用
- 左边是聊天记录,提问框在聊天框下面。还没提问时,框里有三张示例;问过之后,示例留在聊天框最下面,点一下只填进输入框,不直接发送。
- 每次行程回答是一张卡片。点哪张卡、哪一天,右边地图就画哪一天:有两个以上地点就连线,只有一个地点就只标点。序号是当天的颜色,点一下才看到地点全名。
- 只问天气这类不带行程的问题,地图保持上一张行程。
- 「清空对话」回到中国范围的空地图。
环境配置
本项目通过以下环境变量进行配置(可参考仓库中的 .env.example):
DASHSCOPE_API_KEY:- 用于访问 通义千问 Qwen 模型(通过 DashScope 平台)
- 获取方式:登录阿里云通义千问 / DashScope 控制台,创建 API Key,将值填入
.env中的DASHSCOPE_API_KEY - 当前模型:
qwen3.8-flash(兼容接口)。qwen-turbo已下线,不要再改回qwen-turbo-latest
AMAP_MCP_URL:用于连接 高德地图 MCP Server(amap-maps) 的 SSE 服务地址
获取方式(示例流程):
- 打开 ModelScope(魔搭社区),进入 MCP 广场
- 搜索「高德」或「amap」相关 MCP,按照页面说明填写对应的高德api,获取url

- 在文档中找到提供的 SSE 访问地址(通常是以
http://.../sse或https://.../sse结尾的 URL) - 将该地址填入
.env中的AMAP_MCP_URL
AMAP_JS_KEY、AMAP_JS_SECURITY_CODE:
工作原理
- 中间件从你的话里提取城市和天数,固定到每次地图工具调用的
city参数上;追问时沿用上一轮的城市。 - 模型在一轮里调用
maps_text_search(地点)和maps_weather(天气),各最多一次;maps_geo、maps_search_detail、maps_direction_*等工具被中间件拦下。 - 模型写出行程,并在末尾附一段 JSON(每天的站点)。页面读出这段 JSON,按地点名对上搜索结果;对不上的,由页面补搜一次,再用
maps_search_detail查坐标,按天轮流,最多 12 次。 - 左边渲染行程卡片,右边用高德 JS API 按天画点和线。
开发者
测试
python -m unittest discover -s tests
思考过程与日志
页面下方的「开发者」折叠里有:
- AI 思考过程(
enable_thinking=True,从reasoning_content逐块累积) - 摘要日志(工具调用、模型调用、城市解析)
- 原始事件 JSON(勾选开发者模式后显示)
Claude Skills
项目包含两个 Claude Skills(位于 .claude/skills/):
- understand:分析项目架构、Agent 配置及 MCP 集成,生成
docs/ARCHITECTURE.md。在 Claude Code 中运行/understand。 - feature:基于架构规范实现新功能或修复问题。在 Claude Code 中运行
/feature。
项目结构
├── main.py # 应用启动入口
├── config.py # 配置管理与常量定义
├── agent.py # Agent 创建与配置
├── tools.py # MCP 工具加载与异步包装
├── middleware.py # LangChain 中间件:城市固定、工具次数控制
├── ui.py # Gradio 页面:左边聊天,右边地图
├── itinerary.py # 从回答里读出行程,并补地点坐标
├── itinerary_view.py # 行程卡片 HTML 与地图数据
├── assets/
│ ├── custom.css # 页面样式
│ └── trip-map.js # 高德地图绘制(按天标点、连线)
├── tests/ # 单元测试
├── examples/ # 使用示例
├── requirements.txt # 依赖清单
├── .env.example # 环境变量模板
├── docs/
│ ├── ARCHITECTURE.md # 详细架构文档
│ └── images/ui-preview.png # README 界面截图
└── src/
└── amap-mcp-config.png # 配置说明图
技术栈
开发时验证过的版本:
| 组件 | 版本 | 用途 |
|---|---|---|
| Python | 3.11 | 运行环境 |
| langchain | 1.1.0 | Agent 与中间件 |
| langchain-openai | 1.3.2 | 通过兼容接口调用通义千问 |
| langchain-mcp-adapters | 0.1.14 | 接入高德地图 MCP |
| gradio | 6.0.1 | 页面 |
| 高德 JS API | 2.0 | 右边的地图 |
贡献
欢迎提 Issue 和 PR。改代码前建议先读 docs/ARCHITECTURE.md,提交前运行测试。
许可证
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi