共计 1736 个字符,预计需要花费 5 分钟才能阅读完成。
核心概念:智能体技能是什么?
Agent Skills 可以理解为赋予对话式 AI 的 ” 能力单元 ”。比如让智能体具备查询天气、订餐或控制智能家居的功能模块。这种模块化设计让开发者可以像搭积木一样构建复杂应用。

- 典型应用场景:
- 智能客服中的 FAQ 问答模块
- 智能家居的语音控制指令
- 电商平台的订单查询功能
开发准备
- 基础工具链(以 Python+Rasa 为例):
- Python 3.8+(推荐使用 virtualenv)
- Rasa 3.x
- ngrok(用于本地服务穿透)
-
Postman(API 测试)
-
环境搭建步骤:
# 创建虚拟环境
python -m venv ./venv
source venv/bin/activate
# 安装 Rasa
pip install rasa
# 验证安装
rasa --version
实战:天气预报技能开发
1. 技能注册与配置
在 Rasa 中初始化项目:
rasa init --no-prompt
修改 domain.yml 添加天气查询意图:
intents:
- ask_weather
responses:
utter_ask_city:
- text: "请问要查询哪个城市的天气呢?"
2. 意图识别训练
在 data/nlu.yml 中添加训练样本:
nlu:
- intent: ask_weather
examples: |
- 今天天气怎么样
- 北京会下雨吗
- 查下上海的天气
训练 NLU 模型:
rasa train nlu
3. 对话管理实现
创建 actions/actions.py 处理天气查询逻辑:
class WeatherAction(Action):
def name(self) -> Text:
return "action_get_weather"
async def run(self, dispatcher, tracker, domain):
city = tracker.get_slot("city")
# 调用天气 API 的示例
weather_data = await get_weather_api(city)
dispatcher.utter_message(f"{city}天气:{weather_data}")
return []
4. API 集成关键代码
模拟天气 API 调用(实际开发需替换为真实接口):
import requests
async def get_weather_api(city: str):
params = {
"city": city,
"key": "YOUR_API_KEY"
}
try:
resp = requests.get("https://api.weather.com/v3", params=params)
return resp.json().get("forecast")
except Exception as e:
logger.error(f"API 调用失败: {e}")
return "服务暂不可用"
性能优化技巧
-
缓存高频查询:
from functools import lru_cache @lru_cache(maxsize=100) async def get_weather_cached(city: str): return await get_weather_api(city) -
异步处理:
Rasa 默认使用 Sanic 异步框架,确保自定义 Action 也使用 async/await 语法
安全实践
-
敏感配置使用环境变量:
import os API_KEY = os.getenv("WEATHER_API_KEY") -
用户数据脱敏处理:
def sanitize_input(text: str): return text.replace("<", "").replace(">","")
常见问题排查
- 意图识别不准:
- 增加更多训练样本(至少 20-30 条 / 意图)
-
检查是否存在近义词冲突
-
API 响应超时:
- 设置合理的 timeout(建议 3 - 5 秒)
-
添加重试机制
-
对话状态丢失:
- 检查 slot 是否正确定义
- 验证 tracker 事件序列
进阶思考
- 如何实现多轮对话的上下文记忆?
- 当需要集成多个第三方 API 时,怎样设计优雅的熔断机制?
- 对于需要用户认证的技能,如何安全地处理身份令牌?
通过这个完整的天气查询示例,你应该已经掌握了 Agent Skills 开发的核心链路。建议从这个小项目出发,逐步尝试添加更多复杂功能如错误恢复、多语言支持等,慢慢构建更强大的智能体技能。
正文完
