云计算百科
云计算领域专业知识百科平台

用Seed Evolving+高德地图做城市旅行规划Agent,完美解决出行选择困难

在这里插入图片描述

前言

作为一个经常写 Flask 后端的 Python 开发者,我平时习惯用高德 API 做一些位置相关的工具。前段时间看到 Seed Evolving 模型做了第二次升级,主打 Coding 工程能力、Agent 检索能力和幻觉控制三个方向的提升。正好手头有高德开放平台的 API Key,就想试试:能不能让 Evolving 模型当"大脑",高德 API 当"眼睛",搭一个能真正用的城市旅行规划 Agent?

答案是:能,而且效果比我想象中好。

本篇是一个 Python 开发者的真实搭建记录:让 AI 帮你规划一场完美的城市旅行。

想做什么

简单说,就是用户输入一个城市名和旅行偏好,Agent 自动帮你:

  • 规划每天的行程(上午、下午、晚上分别去哪)
  • 从高德 API 拉取真实景点信息(地址、评分、电话)
  • 查当天天气,给出穿衣和出行建议
  • 生成一篇有温度的旅行指南文案
  • 还能继续追问,比如"杭州有什么好吃的"
  • 核心思路是验证 Seed Evolving 的三个升级点:

    • Agent 能力:多步骤任务规划,调用外部工具,整合结果
    • 检索能力:通过高德 API 搜索真实景点和美食
    • 幻觉控制:基于真实 API 数据生成内容,不编造地址和评分

    怎么搭的

    技术栈

    组件选型说明
    模型 Doubao-Seed-Evolving 火山方舟平台调用
    地图 API 高德开放平台 地理编码、POI 搜索、天气查询
    后端 Flask + Python 轻量 Web 框架
    前端 原生 HTML/CSS/JS 不依赖框架,一个文件搞定

    接入 Seed Evolving

    火山方舟的 API 完全兼容 OpenAI 格式,接入非常简单。先在控制台创建推理接入点,拿到 Endpoint ID,然后直接 HTTP 调用就行:
    请添加图片描述
    创建在线推理:
    请添加图片描述
    下一步开通授权模型,享受免费token,不错不错!请添加图片描述
    开通并授权。
    请添加图片描述

    代码如下:

    import requests

    def call_evolving(messages):
    headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {ARK_API_KEY}",
    }
    payload = {
    "model": "ep-20260805083044-t5r5c", # 你的 Endpoint ID
    "messages": messages,
    "temperature": 0.7,
    "max_tokens": 4096,
    }
    resp = requests.post(
    "https://ark.cn-beijing.volces.com/api/v3/chat/completions",
    headers=headers,
    json=payload,
    timeout=120,
    )
    resp.raise_for_status()
    return resp.json()["choices"][0]["message"]["content"]

    这里有个小细节:文档说可以直接用模型名 doubao-seed-evolving 调用,但我实际测试时发现需要先在控制台开通模型,创建推理接入点后用 Endpoint ID 调用才行。如果直接用模型名会返回 404 提示模型未开通。

    Agent 三步走架构

    整个 Agent 的核心是三步调用:

    第一步:分析需求,生成行程框架

    让 Evolving 根据城市名、天数、偏好生成 JSON 格式的行程规划。这里我用 system prompt 约束输出格式,要求它给出每天上午/下午/晚上的景点安排和美食推荐。

    def agent_analyze_city(city, days, preferences):
    system_prompt = """你是一个专业的城市旅行规划助手。
    根据用户提供的城市、旅行天数和偏好,生成详细的旅行规划框架。
    输出 JSON 格式:包含每天的上下午晚行程、美食推荐、预算预估…"""

    user_msg = f"城市:{city}\\n旅行天数:{days}天\\n偏好:{preferences}"
    content = call_evolving([
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": user_msg},
    ])
    return json.loads(content)

    第二步:用高德 API 获取真实数据

    这一步是整个 Agent 的关键——拿 Evolving 生成的景点名,去高德 POI 搜索接口查真实信息。这样做有两个好处:一是景点地址、电话都是真实的,不会被模型编造;二是高德返回的评分数据可以作为推荐参考。

    def agent_enrich_with_real_data(city, plan_json):
    spots = []
    for day in plan_json.get("days", []):
    for period in ["morning", "afternoon", "evening"]:
    spot = day.get(period, {}).get("spot", "")
    if spot:
    spots.append(spot)

    enriched_spots = {}
    for spot_name in spots:
    poi_data = amap_search_poi(spot_name, city)
    pois = poi_data.get("pois", [])
    if pois:
    poi = pois[0]
    enriched_spots[spot_name] = {
    "name": poi.get("name", spot_name),
    "address": poi.get("address", "暂无地址"),
    "tel": poi.get("tel", "暂无电话"),
    "rating": poi.get("biz_ext", {}).get("rating", "暂无评分"),
    }

    # 顺便查天气
    weather_data = amap_weather(city)
    return enriched_spots, weather_info

    第三步:生成最终旅行指南

    把前两步的结果——行程框架和真实景点数据——一起喂给 Evolving,让它生成一篇有温度的旅行文案。这一步最能体现模型的信息整合能力,它需要把行程安排、天气信息、真实景点地址融合成一篇流畅的文章。

    def agent_generate_guide(city, plan_json, enriched_spots, weather_info, preferences):
    spots_summary = "\\n".join([
    f"- {info['name']}{info['address']}(评分:{info.get('rating', '暂无')})"
    for info in enriched_spots.values()
    ])

    return call_evolving([
    {"role": "system", "content": "你是一个旅行文案创作者…"},
    {"role": "user", "content": f"城市:{city}\\n天气:{weather_info}\\n…"},
    ])

    高德 API 集成

    高德的接口我用到了四个:

  • 地理编码:城市名转坐标,验证城市是否有效
  • POI 搜索:搜景点、搜美食,返回名称、地址、评分
  • 天气查询:查城市当天天气,用于出行建议
  • 景点/美食分类搜索:用高德的类型码筛选(景点 110000,美食 050000)
  • def amap_search_poi(keyword, city, types="", page=1):
    params = {
    "key": AMAP_KEY,
    "keywords": keyword,
    "city": city,
    "citylimit": "true",
    "offset": 10,
    "page": page,
    "extensions": "all",
    }
    if types:
    params["types"] = types
    resp = requests.get(f"https://restapi.amap.com/v3/place/text", params=params)
    return resp.json()

    前端界面

    前端就是一个 HTML 文件,用渐变色做背景,卡片式布局展示结果。交互上做了三步动画提示,让用户知道 Agent 正在做什么:

    • 第一步显示"分析旅行需求"
    • 第二步显示"调用高德 API 检索真实数据"
    • 第三步显示"生成个性化旅行指南"

    还加了一个对话功能,规划完行程后可以继续追问关于这个城市的任何问题。

    实际效果

    运行效果如下:
    在这里插入图片描述
    输入目标城市,分析需求,智能Agent就检索数据,开始搜索并生成指南。
    在这里插入图片描述
    在这里插入图片描述

    输入"杭州,2天,历史文化、美食",Agent 返回的结果让我挺惊喜的:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    内容非常丰富,包括图文并茂,知识全面而且细腻:

    天气感知:Evolving 注意到当天杭州中雨 26°C~36°C,主动给出了防滑、带伞、穿速干衣的建议。这不是模板话术,是真的看了天气数据后给的针对性建议。

    行程合理性:Day 1 上午飞来峰+灵隐寺,下午岳王庙+孤山+西泠印社,晚上河坊街+南宋御街——这些景点在地理位置上确实是串联的,不是随机堆的。Day 2 去德寿宫遗址博物馆→胡雪岩故居→京杭大运河桥西街区,也是一条合理的路线。

    真实数据校验:每个景点都从高德 API 拉到了真实地址。飞来峰的地址是"灵隐街道灵隐路法云弄1号",胡雪岩故居是"元宝街18号"——我查过,都是对的。没有出现编造地址的情况。

    文案质量:生成的旅行指南标题是"两天一夜杭州旅行指南:雨中东晋南宋,一口杭帮烟火"——这个标题有调性,不像 AI 味的"杭州两日游攻略"。

    对 Seed Evolving 的真实感受

    用完之后说几点切身感受:

    Agent 能力确实强。整个流程是三步串行调用,每步的输出作为下一步的输入。Evolving 在每一步都能稳定输出结构化 JSON,没有出现格式错乱。第二步用高德 API 拿到的真实数据喂给它,它能正确地把这些信息整合到最终文案里,没有丢失或混淆。

    幻觉控制有明显改善。我特意测试了:如果高德 API 没返回某个景点的评分,Evolving 在文案里会写"暂无评分"而不是编一个分数。在景点地址上,它完全使用了高德返回的真实地址,没有自己编。这个在实际项目中非常重要——用户按 AI 给的地址去导航,结果地址是假的,这种体验是灾难性的。

    长文本生成质量不错。最终生成的旅行指南有 800-1200 字,结构清晰,有开头引入、天气建议、每天行程详情、结尾总结。语言风格不是干巴巴的列表,而是有叙事感的旅行散文。

    Token 效率。三步调用加起来消耗的 token 不算多,个人开发者 50 万免费额度够用很久了。

    写在最后

    这个项目原本只是想验证一下 Seed Evolving 的 Agent 能力,没想到做出来效果还不错,已经可以实际用了。整个开发过程大概花了半天时间,大部分时间在调试 prompt 和前端样式。

    Seed Evolving 在这个项目里扮演的角色很清晰:它是 Agent 的大脑,负责理解需求、规划行程、整合信息、生成文案。高德 API 是眼睛和手,负责获取真实数据和验证。两者配合,做出一个既聪明又靠谱的旅行助手。

    如果你也有类似的需求——需要让 AI 调用外部 API、整合多源数据、生成有质量的内容——可以参考这个方案试试。Seed Evolving 的 Agent 能力和幻觉控制,确实能撑住真实业务场景。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 用Seed Evolving+高德地图做城市旅行规划Agent,完美解决出行选择困难
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!