共计 1604 个字符,预计需要花费 5 分钟才能阅读完成。
什么是 Agent Skill?
Agent Skill 是智能代理(Agent)的核心能力模块,它赋予代理处理特定任务的能力。比如天气查询、日程管理、智能家居控制等,每个功能背后都对应一个独立的 Skill。现代智能系统(如语音助手、聊天机器人)通过组合多个 Skill 实现复杂交互。

开发环境准备
- 基础工具安装
- Python 3.8+(推荐使用 Anaconda 管理环境)
-
VS Code 或 PyCharm 作为 IDE
-
框架选择
-
推荐 Rasa 或 Dialogflow(本文以 Rasa 为例)
-
API 密钥申请
- 天气数据源:OpenWeatherMap(免费版足够测试)
- 注册后获取 API Key
实战:天气查询 Skill
1. 技能意图定义
在 Rasa 中,意图(Intent)代表用户的目标。创建 domain.yml 文件定义意图:
intents:
- ask_weather:
examples: |
- 今天天气怎么样
- 北京会下雨吗
- 上海气温多少度
2. 对话流设计
在 stories.yml 中设计对话路径:
- story: weather inquiry
steps:
- intent: ask_weather
- action: utter_ask_location
- intent: provide_location
- action: action_get_weather
3. 后端服务集成
创建自定义 Action(actions.py):
class ActionGetWeather(Action):
def name(self) -> Text:
return "action_get_weather"
def run(self, dispatcher, tracker, domain):
location = tracker.get_slot("location")
api_key = "your_openweathermap_key"
# 调用天气 API
response = requests.get(f"http://api.openweathermap.org/data/2.5/weather?q={location}&appid={api_key}&units=metric"
)
if response.status_code == 200:
data = response.json()
temp = data["main"]["temp"]
weather = data["weather"][0]["description"]
msg = f"{location} 当前气温 {temp}℃,天气 {weather}"
else:
msg = "获取天气信息失败"
dispatcher.utter_message(text=msg)
return []
4. 测试与调试
启动 Rasa shell 进行交互测试:
rasa shell --debug
输入测试语句查看完整对话流,通过 --debug 模式可观察 NLU 解析和对话状态。
避坑指南
- API 调用频率限制
- 免费版 OpenWeatherMap 每分钟限 60 次调用
-
解决方案:本地缓存高频查询结果
-
意图识别不准
- 现象:用户说 ” 明天会冷吗 ” 未被识别为天气意图
-
解决方案:补充更多训练例句,包括近义词和口语表达
-
空槽位处理缺失
- 现象:用户直接说 ” 天气 ” 未提供地点
- 解决方案:添加澄清逻辑,例如:
if not location: dispatcher.utter_message("请问您想查询哪个城市的天气?") return [SlotSet("location", None)]
扩展思考
完成基础功能后,可以尝试:
– 增加多日天气预报
– 集成空气质量数据
– 添加天气预警推送
推荐进阶资源:
– Rasa 官方文档
–《对话式 AI:自然语言处理实战》
– Google 的 Dialogflow CX 高级功能
通过这个小项目,你已掌握了 Agent Skill 的开发闭环。接下来可以尝试更复杂的业务场景,比如订餐助手或电商导购 Skill。记住:好的 Skill 不在于功能多复杂,而在于能否精准解决用户需求。