[TOC]
天气查询agent-开发文档
使⽤coze + laf 开发⼀个智能体能解决查天⽓场景,⽀持单轮/多轮场景
一、技术栈
- Coze 用于智能体对话逻辑,实现单轮/多轮交互
- LAF (云开发平台) 提供云函数、数据库、API 处理天气天气
- 天气数据(随机生成) 由 LAF 云函数生成模拟天气数据
二、开发
1、laf
laf
是开源的云开发平台,提供云函数、云数据库、云存储等开箱即用的应用资源。
1)注册登录。
2)创建应用,开始编写【查询天气API】
3)函数getWeather()
代码:
1 | export default async function (ctx: FunctionContext) { |
4)右上角点击发布,得到 【API 调用URL】:https://APPID.laf.run/getWeather
。
2、Coze
无论你是否有编程基础,你都可以在扣子平台快速搭建一个 AI 智能体。官方文档
1)进入 coze 官网,注册登录,点击 -》创建 -》创建智能体。
2)开发页面

主要用到这四个部分:
1.人设与回复逻辑
智能体的人设与回复逻辑定义了智能体的基本人设,此人设会持续影响智能体在所有会话中的回复效果。建议在人设与回复逻辑中指定模型的角色、设计回复的语言风格、限制模型的回答范围,让对话更符合用户预期。
- 人设:天气AI助手相关人设,可自定义风格。(过于长,截图中有展示,这里不贴)
- 回复逻辑:
- 回复时,结合历史对话信息。
- 从用户的输入中,分析出参数 city 和参数 date 从用户的输入中,分析出参数 city 和参数 date。(用户可能一次查询多天的数据,请仔细分析,每查询一天都要经历下面的步骤,即下面步骤可能重复进行)
- 如果历史对话中有相似的查询记录(例如:已经查过了北京-3月8号,现在又查询今天(3月8号)的北京天气),则按照已查询的结果返回给用户即可。
- 如果没有相似的记录,则还要分析用户传入的时间是否合理,例如:用户查询距今一年之后的天气是完全不合理的,应该提示用户重新输入;查询距今一年以前的数据认为是合理的。
- 如果没有问题,将这两个参数传入到工作流【weatherPredict】中,工作流会返回格式化的查询结果。
- 查询结果中包含时间、天气、气温等等,请用格式化的形式,并结合上述人设,清晰、分层次的回复用户。
- 如有必要,调用插件【必应搜索】,但是注意:天气数据以工作流返回的数据为准。
2.技能
如果模型能力可以基本覆盖智能体的功能,则只需要为智能体编写提示词即可。但是如果你为智能体设计的功能无法仅通过模型能力完成,则需要为智能体添加技能,拓展它的能力边界。
在这里,添加了自定义的工作流【weatherPredict】,用于调用 laf 平台提供的API:
- 增加一个 HTTP 请求节点,三个节点的参数传递联通。
- HTTP节点:
- URL:填写laf提供的【API地址】:
https://APPID.laf.run/getWeather
- 请求参数:
city
date
- URL:填写laf提供的【API地址】:
3.对话
可在这里显示智能体提供方信息。
4.预览与调试
实时可与智能体 agent 进行对话,调试设计效果。
三、最终效果
单日多轮次查询(先查询天气,后问是否适合骑行,前后逻辑一致)。
重复地点日期的查询结果一致。
太久以后的天气查询不合理,提示不会查询。
过往天气允许查询。
可一次查询三天内数据。
用户输入中缺少【地点】或【天气】时,提示用户。
不同地点天气数据可对比。
四、优化
1、连续多天查询
测试发现,当用户输入【查询未来连续三天天气】,模型可正常工作;但当查询【未来一周天气变化】时,模型提示操作失败:
这是因为之前的多天查询是通过【循环调用工作流】实现的;现在进行优化,将【循环转移到工作流内部】实现多天查询。
重新定义工作流输入参数类型:
city
dateList
新增工作流节点——循环节点,将HTTP请求放在循环体内部循环调用。另外用一个输出节点展示查询过程。
增加一个【大模型节点】,整理总结循环体返回的结构化数据。
测试运行结果:
2、天气数据生成折线图
引入插件【图表大师】
3、新建【天气数据格式】知识库,保证回复内容的格式稳定
1 | ## 📍 北京 2025-03-08 天气预报 |
1 | | 日期 📅 | 最高气温 🌡️ | 最低气温 ❄️ | 天气状况 ⛅ | 风速 💨 | 适宜活动 🎯 | |
3、还可以引入语音与文本互转的插件
4、Laf 层可以增加多个天气数据源,提高稳定性
示例代码:
1 | import cloud from "@lafjs/cloud"; |
新 API getWeatherPro
测试结果: