第十篇 旅游规划智能体
本文介绍了一个综合性的旅游规划智能体开发案例,通过Coze平台整合多项技术实现自动化行程规划。该智能体能够解析用户输入(如"5月4号到6号去北京玩"),自动完成景点推荐、详情查询、图片搜索、天气获取和行程规划等功能。工作流分为四个阶段:1)解析用户输入并生成景点列表;2)批处理获取景点详情和图片;3)整合文字和图片信息;4)查询天气并生成个性化行程。案例重点展示了批处理模式的高
|工作流 + 批处理 + 插件调用 + 卡片绑定 | AI帮你规划完美行程
从基础入门到卡片制作、插件开发、工作流编排,再到智能客服实战,你已经掌握了Coze平台9成的核心功能。最后一篇实战案例,我们来做一个综合性强、成就感爆棚的项目——旅游规划智能体。
这是本专栏的收官实战案例,将综合运用前九篇所学的全部知识:
— ✅ 大模型节点(解析用户输入 + 生成行程规划)
— ✅ 批处理模式(循环处理多个景点)
— ✅ 插件调用(必应图片搜索 + 墨迹天气)
— ✅ 知识库节点(进阶场景可选,本案例暂不涉及,但结构可扩展)
— ✅ 消息节点(流式反馈进度)
— ✅ 卡片绑定(图文并茂展示景点信息)
用户只需说一句“5月4号到6号我想去北京玩”,智能体就能自动:
1. 推荐该城市必玩的10个景点
2. 获取每个景点的详细介绍、游玩时长、室内外属性
3. 为每个景点配上3张图片
4. 查询旅行期间的每日天气
5. 结合天气,生成上午—下午—晚上的详细行程规划
📌 本篇你将学到什么?
— ✅ 如何设计一个完整的多阶段工作流(四大阶段)
— ✅ 批处理模式的高级用法:同时处理多个数据源并自动对齐
— ✅ 如何在多个大模型节点之间传递复杂数据结构
— ✅ 如何调用图片搜索插件为景点配图
— ✅ 如何调用天气插件获取多日天气预报
— ✅ 如何用自定义卡片展示图文并茂的景点信息
— ✅ 如何解决日期格式解析、大模型幻觉等实战问题
一、为什么选“旅游规划”作为收官案例?
这是一个多步推理 + 多源数据 + 富媒体展示的典型案例,非常适合用来检验和巩固你对工作流的掌握程度。
流程拆解(用户说“5月4号到6号我想去北京玩”):
1. 解析用户输入:识别出城市(北京)、开始日期(5月4号)、结束日期(5月6号)
2. 获取景点列表:查找北京的必玩景点(10个)
3. 获取景点详情:为每个景点获取介绍、游玩时长、室内室外属性
4. 获取景点配图:为每个景点搜索3张图片
5. 整合数据:将文字信息与图片信息一一对应
6. 查询天气:获取5月4日—6日的天气预报
7. 生成行程规划:结合天气和景点属性,按天推荐景点并附理由
8. 卡片展示:用卡片批量展示10个景点的详细信息
每一步都要用到不同的节点类型。这个案例将是前九篇文章知识的一次完整大阅兵。
二、整体工作流设计
2.1 工作流名称与描述
— 名称:`travel_planner`(仅字母、数字、下划线)
— 描述:`接收用户的旅行需求,提供景点推荐、详细信息、配套图片,并结合天气生成每日行程规划。`
2.2 四大阶段概览
|
阶段 |
节点构成 |
核心功能 |
|
阶段一:解析与景点列表 |
大模型节点1(解析时间+城市)→ 大模型节点2(生成景点列表) |
从用户输入中提取城市和日期,生成该城市的10个必玩景点名称 |
|
阶段二:景点详情与配图 |
大模型节点3(获取景点详情,批处理)→ 必应图片插件(获取配图,批处理) |
为每个景点获取介绍、时长、室内外属性,并搜索3张图片 |
|
阶段三:数据整合 |
大模型节点4(批处理,同时处理文字和图片数组) |
将每个景点的5项文字信息和3张图片信息整合到一个对象中 |
|
阶段四:天气查询与行程规划 |
墨迹天气插件 → 大模型节点5(生成行程规划) |
获取多日天气预报,结合景点信息生成每日行程 |
数据流向图(建议在文章中画一张流程图,让读者一目了然):
```
用户输入 → [阶段一] → 景点列表(数组) → [阶段二批处理] → 景点详情+图片 → [阶段三] → 完整景点数据 ↓
墨迹天气插件 → 天气数据 → [阶段四] → 最终行程规划
```
2.3 流式反馈节点设计
为了提升用户体验,在工作流执行过程中插入两个消息节点,实时反馈进度,让用户知道机器人在“干活”。
— 消息节点1(置于大模型节点2之后):
我已经收到您的请求,并为您推荐了以下景点:{{景点1}}、{{景点2}}……正在为您查询景点的详细信息和图片,请稍等……
将数组元素逐个写出,避免机器人以JSON格式输出。
— 消息节点2(置于大模型节点4之后):
景点信息查询完成,正在为您规划行程……
不编写额外回答内容,仅用于绑定后续的卡片数据。
三、阶段一:解析用户输入并获取景点列表
3.1 开始节点
添加一个输入参数:
— 名称:`input`
— 类型:`string`
— 描述:`用户输入的旅行需求,例如“5月4号到6号我想去北京玩”`
3.2 大模型节点1:解析时间与城市
|
配置项 |
内容 |
|
输入参数 |
引用开始节点的 input |
|
运行模式 |
单次处理 |
|
模型选择 |
豆包 Pro 或 云雀 |
|
提示词 |
见下方 |
|
输出参数 |
city(字符串)、start_date(字符串)、end_date(字符串) |
提示词:
```
你是一个信息提取助手。从用户输入 {{input}} 中解析出以下三个信息:
1. 目标城市(city)
2. 旅行的开始日期(start_date)
3. 旅行的结束日期(end_date)
日期格式必须为 YYYY—MM—DD,例如 2025—05—04。
如果用户输入的是“5月4号到6号”,则 start_date 为 2025—05—04,end_date 为 2025—05—06。
只输出 JSON 格式,不要有其他内容。
```
关键点:日期格式必须为 `YYYY—MM—DD`,否则后续天气插件无法识别。
3.3 大模型节点2:生成景点列表
|
配置项 |
内容 |
|
输入参数 |
引用大模型节点1的 city |
|
运行模式 |
单次处理 |
|
提示词 |
见下方 |
|
输出参数 |
name_list(数组<string>) |
提示词:
```
输出城市 {{city}} 必玩的10个旅游景点名称,将名称赋值给字符串类型的数组。
输出格式示例:["故宫博物院", "长城", "颐和园", "天坛", ...]
只输出数组,不要有任何其他内容。
```
测试:输入“北京”,节点应输出10个北京必玩景点名称。
四、阶段二:获取景点详细信息及配套图片
4.1 大模型节点3:获取景点详情(批处理)
|
配置项 |
内容 |
|
运行模式 |
批处理 |
|
循环数组 |
引用大模型节点2的 name_list |
|
循环项变量名 |
item(代表当前景点名称) |
|
输入参数 |
引用 item |
|
提示词 |
见下方 |
|
输出参数 |
见下方 |
提示词:
```
根据景点名称 {{item}},输出以下信息:
— 景点名称(name)
— 景点介绍(description,50字左右)
— 建议游玩时长(duration,如“2—3小时”)
— 室内/室外属性(indoor_outdoor,值为“室内”或“室外”)
— 所在行政区(district,如“东城区”)
输出 JSON 格式,不要有其他内容。
```
输出参数(均为字符串):
— `name`
— `description`
— `duration`
— `indoor_outdoor`
— `district`
4.2 必应图片搜索插件节点(批处理)
|
配置项 |
内容 |
|
插件名称 |
Bing Image Search |
|
运行模式 |
批处理 |
|
循环数组 |
引用大模型节点2的 name_list |
|
循环项变量名 |
item |
|
参数设置 |
query:引用 item(必填);count:留空(使用默认值);offset:留空 |
|
输出 |
图片信息列表,核心字段为 data.value[].contentUrl(图片直链)和 hostPageUrl(来源网页) |
测试:输入“故宫博物院”,插件应返回多张图片的URL列表。
⚠️ 常见问题:必应图片插件返回的部分图片 `contentUrl` 可能已失效,导致图片无法显示。后续优化中可考虑更换其他图片搜索插件,或通过代码节点对链接进行有效性校验。
五、阶段三:整合文字信息与图片信息(核心难点)
5.1 问题分析
大模型节点3输出的是10个景点的文字信息(数组),必应图片插件输出的是10个景点的图片信息(数组)。
两个数组的第N个元素都是同一个景点的信息——这是批处理模式的重要特性,Coze会按数组下标自动对齐,即第N个景点文字对应第N个景点的图片。
5.2 大模型节点4:数据整合(批处理)
|
配置项 |
内容 |
|
运行模式 |
批处理 |
|
循环数组 |
同时循环两个数组——大模型节点3的 output_list(文字信息)和图片插件的 output_list(图片信息) |
|
输入变量绑定 |
文字部分:name、description、duration、indoor_outdoor、district;图片部分:image_list(从插件输出中提取 data.value 数组) |
|
提示词 |
见下方 |
|
输出变量 |
共11个(5个文字变量 + 6个图片变量) |
提示词:
```
将 name、description、duration、indoor_outdoor、district 分别赋值给对应的输出变量。
从 image_list 中取出前 3 张图片的 contentUrl 和 hostPageUrl,分别赋值给图片1、图片2、图片3 的对应输出变量。
输出 JSON 格式。
```
输出变量列表:
— `name`(字符串)
— `description`(字符串)
— `duration`(字符串)
— `indoor_outdoor`(字符串)
— `district`(字符串)
— `img1_url`(字符串)
— `img1_page`(字符串)
— `img2_url`(字符串)
— `img2_page`(字符串)
— `img3_url`(字符串)
— `img3_page`(字符串)
为什么需要11个输出变量? 因为我们需要把每个景点的文字信息(5项)和三张图片的信息(URL+来源页,共6项)全部提取出来,才能在卡片中完整展示。
六、阶段四:天气查询与行程规划
6.1 墨迹天气插件节点
— 输入参数:
— `city`:引用大模型节点1的 `city`
— `start_date`:引用大模型节点1的 `start_date`
— `end_date`:引用大模型节点1的 `end_date`
— 省份、区县、乡村:留空(非必填)
— 输出:`weather_data`(包含时间段内每日天气信息,如“晴”“小雨”“18—25℃”等)
6.2 大模型节点5:生成行程规划
|
配置项 |
内容 |
|
运行模式 |
单次处理(不批处理,避免景点重复安排) |
|
输入参数 |
attractions(引用大模型节点4的 output_list,含景点详细信息);weather(引用墨迹天气插件的 weather_data) |
|
模型选择 |
豆包 Pro(对长文本处理能力更强) |
|
提示词 |
见下方 |
|
输出参数 |
itinerary(字符串) |
提示词(重点,长度篇幅较长,建议在文章中完整列出):
```
你是一个专业的旅游规划师。请根据以下信息,为用户制定每日行程安排。
景点信息:{{attractions}}
天气信息:{{weather}}
要求:
1. 按照用户提供的开始时间和结束时间,为每一天分别安排景点。
2. 所有安排的景点不可重复。
3. 根据天气调整:晴天优先安排室外景点,雨雪天优先安排室内景点。
4. 按白天8小时游玩时间计算。若时间充足且景点距离较近,可以上午、下午各安排1个景点;晚上可安排适合夜游的景点。
5. 为每一个安排给出具体的推荐理由,理由需结合景点特点、游玩时长、室内外属性和当日天气。
输出格式示例(请严格按此格式):
2025年5月4日(晴天):
— 上午:故宫博物院(室外,游玩3—4小时)—— 晴天适合参观宫殿建筑群......
— 下午:景山公园(室外,游玩1—2小时)—— 登高俯瞰故宫全景......
— 晚上:前门大街(室内外结合,游玩2小时)—— 品尝老北京小吃......
2025年5月5日(小雨):
— 上午:国家博物馆(室内,游玩3—4小时)—— 雨雪天适合室内文化体验......
— ...
```
为什么这里不能用批处理? 如果对大模型节点5开启批处理,会导致每个景点被独立处理,产生重复的行程安排(比如每个景点都会生成一整天)。单次处理才能让大模型“看到”所有景点,统筹安排。
七、景点信息卡片绑定
为了让景点信息展示更直观,我们为大模型节点4的输出绑定一个自定义卡片。
7.1 卡片布局设计
采用单列布局,按以下顺序添加组件:
1. 景点名称(加粗、中等字号)
2. 室内/室外属性 + 所在行政区(合并显示,例如 `室内,东城区`)
3. 游玩时长
4. 景点详细介绍(设置最大行数为20行)
5. 三张景点图片(可并排或纵向排列)
7.2 变量绑定与循环渲染
— 数据源:设置为数组对象,字段与大模型节点4的输出变量一致(11个字段)
— 循环渲染:开启卡片的循环渲染功能,绑定大模型节点4的 `output_list`,实现10个景点信息的批量展示
— 图片模块设置:
— `资源` 项绑定对应图片的 `img_url`
— 开启 “点击事件”,绑定 `img_page`,实现点击图片跳转至来源网页
7.3 卡片发布与关联
1. 完成卡片设置后点击 “发布”
2. 返回智能体编辑页,在 “卡片” 设置中,将回复方式改为 “我的卡片”,选择刚发布的景点信息卡片
3. 设置数据来源为消息节点2的输出,最大长度设为10
4. 确认保存
八、测试、问题排查与优化
8.1 首次试运行可能遇到的问题
|
问题 |
现象 |
原因 |
解决方法 |
|
天气插件无输出 |
weather_data 为空 |
用户输入的中文日期格式(如“5月4号”)无法被插件识别 |
在大模型节点1提示词中强制要求输出 YYYY-MM-DD 格式 |
|
行程规划时间异常 |
有时只输出一天,有时输出多天 |
大模型节点5提示词未明确输出格式 |
在提示词中添加输出格式示例,明确要求按用户输入的时间范围输出 |
|
大模型幻觉 |
出现不合理建议(如“圆明园晚上游玩”) |
大模型不知道景点的真实开放时间 |
建立景点专属知识库,录入各景点的开放时间、夜游属性等 |
|
图片失效 |
部分图片无法显示 |
必应图片插件的部分链接已失效 |
更换其他图片搜索插件,或通过代码节点对URL进行有效性校验 |
8.2 避坑指南
1. 日期格式:用户输入的“5月4号”必须被大模型转换为 `2025—05—04`,这是导致天气查询失败的最常见原因。
2. 批处理数值限制:批处理模式最大批处理次数为10。如果要推荐10个景点,数组长度不要超过10。
3. 大模型输出稳定性:大模型节点5的行程规划输出可能不稳定,建议在提示词中加入“严格按输出格式,不要新增额外内容”的约束。
4. 卡片循环渲染的字段匹配:卡片中绑定的字段名必须与大模型节点4的输出变量名严格一致,否则无法显示。
九、案例总结
完成这个旅游规划智能体后,你已经掌握了:
— ✅ 工作流的完整编排思路(多阶段、多节点协同)
— ✅ 批处理模式的高级用法(同时处理文字和图片数组,自动对齐)
— ✅ 复杂数据的整合与传递
— ✅ 两个外部插件的同时调用(墨迹天气 + 必应图片搜索)
— ✅ 自定义卡片的循环渲染
— ✅ 实战问题的排查与解决
这是对前九篇文章所学知识的一次完整检验。把这个案例做出来,你就正式从入门走到了精通。
十、下篇预告:Coze 2.0 新特性与进阶技巧
10篇实战案例到此结束。最后一篇(第十一篇)将是进阶特辑,介绍Coze 2.0及之后版本的新特性,包括:
— 多Agent模式(多个智能体协同工作)
— 变量节点(工作流与智能体数据互通)
— 快捷指令(可视化变量赋值)
— 照片知识库(专门存储和检索图片)
— 触发器(定时任务推送)
这些新功能将让你的机器人在自动化、复用性上更加强大。
点击关注,精彩继续。
这个旅游规划智能体的工作流非常长,你花了多长时间搭建?哪个环节卡住了?欢迎评论区交流。
柒柒
2026年5月
📌 本文已同步收录于专栏《无代码AI智能体开发实战:从零到一搭建你的专属机器人》,欢迎订阅持续学习。
更多推荐




所有评论(0)