用AutoGen Studio做个旅游规划AI:完整项目实战教程
1. 引言
1.1 业务场景描述
在现代生活中,个性化旅游规划已成为高频需求。用户希望获得符合预算、时间安排和兴趣爱好的行程建议,但手动查找信息耗时费力。传统推荐系统往往缺乏灵活性,难以应对复杂多变的用户需求。
借助AI代理(Agent)技术,我们可以构建一个能够自主思考、调用工具、协同工作的智能系统,自动完成从目的地推荐到行程安排的全流程任务。本教程将带你使用AutoGen Studio实现一个完整的旅游规划AI助手。
1.2 痛点分析
当前旅游规划存在以下问题:
- 信息分散:需在多个平台查询交通、住宿、景点等数据
- 个性化不足:通用推荐无法满足特定偏好(如亲子游、徒步旅行)
- 动态调整困难:天气变化或突发情况难以实时响应
- 多目标权衡复杂:预算、时间、舒适度之间需要平衡
现有方案通常依赖规则引擎或单模型问答,缺乏“推理+执行”的闭环能力。
1.3 方案预告
本文将基于内置vLLM部署的Qwen3-4B-Instruct-2507模型服务的 AutoGen Studio 镜像环境,通过低代码方式搭建一个多智能体协作系统,包含:
- 规划师 Agent:负责整体行程设计
- 搜索 Agent:调用外部工具获取实时信息
- 评审 Agent:对生成方案进行评估与优化
最终实现一个可交互、可扩展、支持动态反馈的旅游规划AI工作流。
2. 环境准备与模型验证
2.1 检查本地大模型服务状态
本镜像已预装 vLLM 并启动 Qwen3-4B-Instruct-2507 模型服务。首先确认服务正常运行:
cat /root/workspace/llm.log输出应包含类似如下内容,表示模型已加载成功并监听8000端口:
INFO: Started server process [12345] INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) INFO: OpenAI API provider listening on http://0.0.0.0:8000/v1若未看到日志,请检查容器资源分配是否充足(建议至少 8GB 显存)。
2.2 WebUI 访问与测试
打开浏览器访问 AutoGen Studio WebUI,默认端口为8080。进入主界面后,按照以下步骤配置模型连接。
2.3 配置 Assistant Agent 的模型参数
2.3.1 进入 Team Builder 页面
点击左侧菜单栏的Team Builder,选择默认的AssistantAgent进行编辑。
2.3.2 修改 Model Client 参数
在模型客户端设置中填写以下参数:
| 字段 | 值 |
|---|---|
| Model | Qwen3-4B-Instruct-2507 |
| Base URL | http://localhost:8000/v1 |
| API Key | EMPTY(vLLM 默认无需密钥) |
保存配置后,可通过内置聊天窗口发送测试消息,例如:
“你好,请介绍一下你自己。”
预期返回结果为模型的自我介绍,表明通信链路畅通。
3. 构建旅游规划智能体团队
3.1 设计多Agent协作架构
我们采用分层协作模式,定义三个核心角色:
- Planner Agent:主导任务分解与流程控制
- Searcher Agent:执行网络搜索、获取天气/票价等信息
- Reviewer Agent:质量把关,提出改进建议
三者通过消息传递机制协同工作,形成“提出→执行→评审”循环。
3.2 创建 Planner Agent
3.2.1 新建 Agent
在 Team Builder 中点击 “Add New Agent”,命名为TravelPlanner。
3.2.2 设置行为描述(System Message)
你是一个专业的旅游规划师 AI。你的任务是根据用户的出行需求(如目的地、天数、预算、兴趣等),制定详细的每日行程计划。 你需要: 1. 分析用户需求,明确关键约束条件; 2. 将任务拆解为若干子任务(如查景点、排路线、定酒店); 3. 协调其他 Agent 完成信息收集; 4. 整合并输出结构化行程表,包括时间、地点、交通方式、费用估算等。3.2.3 配置模型与能力
- 使用相同的
Qwen3-4B-Instruct-2507模型 - 启用Allow Delegation,允许其向其他 Agent 发送请求
- 开启Human Input Mode(可选),便于人工干预
3.3 创建 Searcher Agent
3.3.1 新建 Agent:InfoSearcher
该 Agent 负责调用工具获取外部信息。
3.3.2 系统提示词配置
你是 Travel Planning System 的信息检索专家。你的职责是根据 Planner 的请求,使用工具获取准确的实时信息。 你可以使用的工具有: - web_search(query): 执行网络搜索,返回前3条相关结果摘要 - get_weather(location): 查询指定城市的当前及未来三天天气 - get_flight_prices(origin, dest, date): 获取航班价格范围 - get_hotel_options(location, check_in, budget): 获取符合条件的酒店列表 请确保每次只调用最必要的工具,并以简洁格式返回结果。3.3.3 工具注册说明
虽然 AutoGen Studio 当前版本不支持自定义 Python 函数注入,但我们可以通过 Playground 手动模拟工具调用逻辑。后续可通过导出代码并在本地项目中集成真实工具。
3.4 创建 Reviewer Agent
3.4.1 新建 Agent:QualityReviewer
3.4.2 系统提示词配置
你是旅游行程的质量审查官。你的任务是对 TravelPlanner 提交的初步方案进行审核,重点关注: - 时间安排是否合理(避免过于紧凑或空闲) - 地点分布是否集中(减少无效交通) - 是否符合用户预算 - 是否覆盖用户兴趣点 - 是否考虑天气因素 请以建设性语气提出修改建议,最多列出3条改进意见。如果方案优秀,直接回复“通过”。4. 在Playground中测试旅游规划流程
4.1 新建 Session
进入Playground页面,点击 “New Session”,选择之前创建的团队(Team),添加TravelPlanner作为初始参与者。
4.2 输入用户需求示例
发送以下请求开始对话:
我想下个月带家人去杭州玩三天,预算每人3000元,喜欢自然风光和美食,不喜欢购物团。请帮我规划一下行程。
4.3 观察多Agent协作过程
系统将自动触发以下流程:
TravelPlanner接收请求,分析需求,生成任务清单:
- 查询杭州必游景点(西湖、灵隐寺、龙井村等)
- 获取近期天气预报
- 推荐适合家庭的餐厅
- 安排每日行程节奏
TravelPlanner向InfoSearcher发起委托请求:
请查询下周杭州的天气情况和西湖周边人均100元内的特色餐馆。
InfoSearcher返回模拟结果(实际环境中应由插件实现):
天气:晴转多云,气温18~26°C,适宜户外活动。 餐厅推荐: - 楼外楼(西湖醋鱼):人均90元 - 知味观·味庄:人均110元 - 西湖国宾馆·紫薇厅:人均150元TravelPlanner整合信息,生成初版行程草案。
QualityReviewer审核后反馈:
建议:第二天下午安排稍显紧张,建议将龙井村采茶体验延后一小时;晚餐可优先推荐楼外楼。
TravelPlanner修正方案并输出最终行程。
4.4 输出样例(简化版)
### 杭州三日亲子游行程(预算:3000元/人) #### 第一天:西湖文化之旅 - 上午:断桥残雪 → 白堤 → 平湖秋月 - 午餐:楼外楼(西湖醋鱼、东坡肉) - 下午:乘船游湖(三潭印月)→ 雷峰塔 - 晚餐:知味观·味庄 - 住宿:西湖边精品民宿(¥600/晚) #### 第二天:茶乡体验日 - 上午:灵隐寺祈福 - 下午:龙井村参观茶园,体验手工炒茶 - 晚餐:农家乐(龙井虾仁、土鸡煲) #### 第三天:城市休闲 - 上午:中国丝绸博物馆 - 下午:河坊街自由活动(非购物导向,侧重民俗展示) - 返程5. 关键实践问题与优化建议
5.1 常见问题及解决方案
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| Agent 不响应或卡住 | 模型响应超时或上下文过长 | 调整max_tokens,限制历史消息长度 |
| 工具调用失败 | 缺少真实工具接口 | 导出至本地项目,集成真实 API |
| 回复偏离主题 | system message 不够明确 | 加强角色定义,增加约束条件 |
| 多轮对话混乱 | 缺乏状态管理 | 启用GroupChat模式,引入主持人 Agent |
5.2 性能优化建议
- 启用缓存机制:对于频繁查询的信息(如景点介绍),可在本地建立轻量数据库避免重复搜索。
- 限制最大轮次:防止无限循环讨论,可在配置中设定
max_round=10。 - 异步处理:在高级部署中,使用 Celery 或 Redis 实现非阻塞任务调度。
- 模型降级策略:当高负载时,可切换至更小模型处理简单任务。
5.3 扩展方向
- 接入真实工具链:结合 SerpAPI、WeatherAPI、Amadeus 等提供真实数据支持
- 持久化存储:将用户历史偏好存入数据库,实现个性化记忆
- 语音交互:集成 TTS/STT 模块,打造全模态助手
- 移动端适配:封装为微信小程序或 App 内嵌组件
6. 总结
6.1 实践经验总结
通过本次实战,我们验证了 AutoGen Studio 在快速构建多Agent系统方面的强大能力:
- 低代码优势显著:无需编写大量胶水代码即可完成 Agent 编排
- 角色分工清晰:通过 system message 精确控制每个 Agent 的行为边界
- 调试便捷:Playground 提供直观的消息追踪与交互测试功能
- 模型兼容性强:成功对接本地 vLLM 部署的 Qwen3 模型,摆脱云端依赖
同时也要认识到其局限性:目前工具扩展仍需依赖外部系统模拟,在生产环境中建议导出为标准 AutoGen 项目进行深度定制。
6.2 最佳实践建议
- 先原型后工程:利用 Studio 快速验证想法,再迁移到代码项目中完善
- 明确角色边界:每个 Agent 的职责应单一且互斥,避免责任重叠
- 重视提示词设计:system message 是 Agent 行为的“宪法”,必须严谨编写
- 逐步迭代优化:从单轮对话开始,逐步加入评审、反馈、修正机制
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。