从 Prompt 到 Skill 的演进
最简单的 AI 能力扩展方式是写一个好的 Prompt。但 Prompt 难以复用、难以版本管理、难以测试。当你需要在数十个场景中使用"数据分析"能力时,复制粘贴 Prompt 显然不是工程化的解法。
Skill(技能) 的概念就是为了解决这个问题而生的——它是一个封装了特定能力的、可复用的、有明确输入输出规范的模块。
Skill 的四个核心要素
一个设计良好的 Skill 应该包含:
- 名称与描述:让 AI Orchestrator 能够理解这个 Skill 的用途,在需要时自动选择调用它
- 输入规范(Input Schema):定义接受什么类型的输入,约束参数格式
- 执行逻辑(Implementation):可以是一段 Prompt、一个代码函数、一个 API 调用,或三者的组合
- 输出规范(Output Schema):定义返回格式,确保下游 Skill 能够正确消费结果
Semantic Kernel 中的 Skill
微软的 Semantic Kernel 框架是 Skill 概念最具代表性的工程实现:
python
# 语义函数 Skill:用 Prompt 实现摘要能力
summarize_skill = kernel.create_semantic_function(
prompt_template="请用三句话总结:{{$input}}",
function_name="Summarize",
skill_name="TextProcessing",
max_tokens=200
)
# 原生函数 Skill:用代码实现天气查询
@sk_function(description="获取城市实时天气")
def get_weather(city: str) -> str:
return weather_api.fetch(city)
Orchestrator 可以自动将这些 Skill 组合成复杂工作流,就像乐高积木一样。
Skill vs Plugin vs Tool
这三个概念经常被混用,但有细微差异:
- Tool:最底层,指一个可调用的函数或 API,无自然语言描述,需代码显式调用
- Plugin:在 ChatGPT Plugin 语境下,指一个有 OpenAPI 规范描述的外部服务,强调外部集成
- Skill:在 Agent 框架语境下,封装了完整能力(Prompt + 代码逻辑 + 上下文管理),强调内部可组合性
如果把 AI 系统比作人,Tool 是手脚,Plugin 是与外界沟通的接口,而 Skill 是大脑中习得的能力——可以被调用、被组合、被持续改进。
Skill 的设计原则
- 1单一职责:每个 Skill 只做一件事,做好一件事
- 2无副作用优先:尽可能设计成纯函数,相同输入产生相同输出
- 3失败可恢复:明确定义失败模式和降级策略
- 4可观测:记录输入输出,方便调试和评估
- 5版本化:像代码一样管理 Skill 的版本,支持回滚