本帖最后由 DDDear 于 2025-5-8 16:06 编辑
天气中两天的温差在 3-5摄氏度 时,人体会明显感觉到冷热变化。具体感知因个人体质和环境条件而异,但这个范围是一个普遍适用的参考标准。
目前应用的天气类交互中,少有包含两日温差的预报,简单的需求就是晚上知道明天的天气和比今天冷还是暖。所以和大家分享一个在 Home Assistant 中利用 AI 功能,打造更智能、更个性化天气预报的方法。通过合理的提示词(Prompt)设计和指令,我们可以让 AI 不仅仅是简单播报数字,而是能提供更贴心、更人性化的天气信息。
效果: 提示词设计:
核心在于如何构建一个清晰的提示词,让 AI 明白我们希望它处理哪些信息以及如何处理。 提供必要的天气数据实体: 我们需要在提示词中嵌入 Home Assistant 的天气实体信息,确保 AI 能够获取到实时、准确的数据。以下是我使用的提示词结构,您可以根据自己的实体 ID 进行修改,目前用的彩云天气,如果不是彩云天气,对应的实体属性也需要修改:
### 今日气温:
```yaml
最低气温: {{states['weather.wo_de_jia_2'].attributes.daily_forecast[0].native_templow}}
最高气温: {{states['weather.wo_de_jia_2'].attributes.daily_forecast[0].native_temperature}}
```
### 明日天气:
```yaml
状况: {{states['weather.wo_de_jia_2'].attributes.daily_forecast[1].condition_cn}}
最低气温: {{states['weather.wo_de_jia_2'].attributes.daily_forecast[1].native_templow}}
最高气温: {{states['weather.wo_de_jia_2'].attributes.daily_forecast[1].native_temperature}}
预报:
明日天气{{states['weather.wo_de_jia_2'].attributes.daily_forecast[1].condition_cn}},气温{{states['weather.wo_de_jia_2'].attributes.daily_forecast[1].native_templow}}℃-{{states['weather.wo_de_jia_2'].attributes.daily_forecast[1].native_temperature}}℃
```
weather.wo_de_jia_2 是我的天气实体 ID,请替换为您自己的。 daily_forecast[0] 代表今日预报,daily_forecast[1] 代表明日预报。 native_templow 是最低温,native_temperature 是最高温,condition_cn 是中文天气状况。 在OpenAI Conversation-配置里面修改
清晰地指定 AI 的任务(对话指令): 在向 AI 发出请求时,需要明确告知它我们期望的输出格式和内容。例如,我使用的指令是: “一句话精简明日的天气预报、明天比今天冷还是暖,升温或降温多少度和适度的关心。”, 建立了一个自动化在每天晚上九点的时候运行,同时基于edge_tts通过chime_tts播报出来。
<font face="微软雅黑">alias: 明天天气预报
description: ""
triggers:
- trigger: time
at: "21:00:00"
conditions: []
actions:
- variables:
response: ""
- action: conversation.process
metadata: {}
data:
text: 一句话精简明日的天气预报、明天比今天冷还是暖,升温或降温多少度和适度的关心。
agent_id: conversation.newapi_2
response_variable: response
- action: notify.wework
metadata: {}
data:
message: "{{ response.response.speech.plain.speech }}"
- metadata: {}
data:
chime_path: chord
offset: 450
final_delay: 0
tts_speed: 100
tts_pitch: 0
volume_level: 0.6
tts_platform: edge_tts
message: "{{response.response.speech.plain.speech}}"
target:
entity_id: media_player.rong_yao_chang_wan_ping_ban_2
action: chime_tts.say
mode: single
</font>
预期效果与说明: 当以上提示词和指令正确配置并发送给 AI 后,AI 应该能够理解我们的意图,并基于所提供的数据,生成类似如下的回复(具体数值会根据您的实际天气数据而变化):
测试时的天气状况
生成效果
重要提示与可能遇到的问题: AI 的理解能力: 测试用的gpt-4.1-mini,不同的 AI 模型对自然语言的理解程度不同。如果您的 AI 没有完全按照预期回复,可能需要调整指令的措辞,使其更明确、更易于 AI 理解。例如,可以尝试将一个复杂的长指令拆分成几个更短、更具体的指令。 数据准确性: AI 的回复质量高度依赖于输入数据的准确性。请确保您的 Home Assistant 天气实体能够正常获取并更新天气信息。 实体 ID 检查: 务必仔细检查提示词中的实体 ID 是否与您系统中的完全一致,任何小差错都可能导致 AI 无法获取数据。 AI 服务限制: 某些 AI 服务可能有调用频率或复杂度的限制,如果遇到问题,可以查阅您所使用的 AI 服务的相关文档。
总结与分享: 通过这种方式,我们可以让 Home Assistant 中的 AI 不再是冰冷的机器,而是能提供更贴心服务的智能助手。希望这个简单的教程能帮助大家更好地利用 AI 功能,提升智能家居的体验。 欢迎大家尝试,并在评论区分享您的成果或遇到的问题,我们一起交流学习!
部分文章基于Gemini生成
|