天气查询技能
这是一个完整的天气查询 Skill,演示如何使用 ADK Skill 规范来创建模块化的功能单元。
技能概述
天气查询技能提供以下功能:
- 获取天气信息 - 查询特定城市的实时天气数据
- 城市列表 - 获取所有支持的城市
- 天气对比 - 比较两个城市的天气条件
- 天气分析 - 基于天气数据生成建议
使用方法
1. 查询单个城市天气
使用 get_weather 工具查询特定城市的天气:
请告诉我北京现在的天气怎么样?
返回示例:
{
"city": "北京",
"temperature": 20,
"condition": "晴天",
"humidity": 45,
"wind_speed": 10
}
2. 获取支持的城市列表
支持的城市有哪些?
3. 比较两个城市的天气
比较北京和上海的天气,哪里更暖和?
指令
当使用此技能时,请按以下步骤执行:
理解用户需求 - 识别用户是否要求:
- 单个城市的天气信息
- 城市列表
- 多个城市的天气对比
调用适当的工具 - 使用 MCP 工具中的相应函数:
- 单个城市:使用
get_weather工具 - 城市列表:使用
get_all_cities工具 - 对比:使用
compare_weather工具
- 单个城市:使用
处理结果 - 分析返回的天气数据
生成人类友好的回应 - 将数据转换为自然语言的天气描述
支持的城市
- beijing - 北京
- shanghai - 上海
- guangzhou - 广州
错误处理
如果用户查询的城市不在支持列表中:
- 提醒用户支持的城市列表
- 建议用户选择支持的城市
- 提供帮助选择最近的城市
天气解释指南
温度范围
- 0-10°C - 寒冷,建议穿暖和衣服
- 10-15°C - 凉爽,穿夹克
- 15-20°C - 舒适,正常穿着
- 20-25°C - 温暖,可穿轻薄衣服
- >25°C - 炎热,穿短袖和轻薄衣服
湿度水平
- <30% - 干燥
- 30-60% - 舒适
- >60% - 潮湿
示例会话
用户:北京现在怎么样?
你的响应过程:
- 识别用户想查询北京的天气
- 调用
get_weather工具,参数 city="beijing" - 收到返回数据
- 生成自然语言响应:
"北京现在是晴天,20°C,相当舒适。湿度是45%,风速10 km/h,是外出的好天气。"
用户:哪个城市最暖和?
你的响应过程:
- 调用
get_all_cities获取城市列表 - 对所有城市调用
get_weather(或使用compare_weather) - 比较温度
- 返回结果:
"广州目前最暖和,28°C。"
最佳实践
- 始终提供完整信息 - 不仅仅返回温度,还要包括条件和湿度
- 个性化建议 - 基于天气给出衣着或活动建议
- 使用友好的单位 - 使用摄氏度和本地习惯单位
- 处理边界情况 - 优雅地处理不支持的城市
可扩展性
此技能可以扩展以支持:
- 更多城市
- 天气预报(5天/7天)
- 恶劣天气警报
- 空气质量指数
- 紫外线指数