AI Agent skill FAQ
·
Skill(技能)在 AI Agent(智能体)领域,通常是指一个封装好的、可被大模型调用的能力单元。它让 Agent 不仅能“说话”,还能“做事”——比如搜索网页、读写文件、调用 API、操作数据库等。
1. Skill 是什么?有什么用?
- 本质:一个 Skill 包含三个核心要素:
- 描述(告诉模型这个技能何时能用、怎么用)
- 参数定义(需要哪些输入)
- 执行逻辑(具体完成任务的代码或提示模板)
- 用途:
- 把复杂任务拆成可复用的模块
- 让 LLM 能够使用工具,突破纯文本限制
- 组合多个 Skill 完成多步自动化流程
- 在不同 Agent 之间共享能力(在同一框架内)
2. 哪些软件 / 平台使用了 Skill 概念?
很多 Agent 框架或平台都有类似“技能”的设计,只是叫法可能不同:
| 平台/框架 | 对应概念 | 文件化支持 |
|---|---|---|
| Microsoft Semantic Kernel | Skill(最典型,分 Semantic Skill 和 Native Skill) | ✅ 严格的目录结构 |
| AutoGPT (AutoGPT Platform) | Skill(Beta),通过 Python 包扩展 | ✅ 特定 Python 文件结构 |
| LangChain | Tool(工具),也可视为 Skill | 无强制文件结构,通过代码定义 |
| Coze(扣子) | 插件、工作流(低代码 Skill) | UI 配置,不直接暴露文件 |
| Home Assistant(语音助手) | Skill(自定义对话技能) | 有约定的 YAML/Python 结构 |
| Rasa | Action(自定义动作) | Python 代码文件 |
还有其他框架如 CrewAI、MetaGPT 等,大多用“Tool”一词,但本质和 Skill 相同。
3. 是否对所有 Agent 通用?
不通用。
每个框架对 Skill 的接口规范、描述语言、加载方式、调用协议都不一样。
例如,Semantic Kernel 的 skprompt.txt + config.json 结构就无法直接被 AutoGPT 识别。
但它们的设计思想是相通的:把能力抽象成元数据+执行体,学会了一种,就很容易理解其他框架的实现。
4. 典型的文件结构(以两大框架为例)
🔹 Microsoft Semantic Kernel 的 Skill 结构
MySkills/
MyWeatherSkill/
GetWeather/
skprompt.txt # 语义技能的提示模板
config.json # 技能的配置(参数、描述等)
GetCityCode/ # 另一个函数(可以是原生代码)
run.py # Python 原生函数
skprompt.txt内容示例:根据下面的用户输入,提取城市名称并返回天气情况。 用户输入: {{$input}} 天气情况:config.json示例:{ "schema": 1, "type": "completion", "description": "根据输入获取某个城市的天气", "completion": { "max_tokens": 150, "temperature": 0.0 }, "input": { "parameters": [ { "name": "input", "description": "用户输入的自然语言", "defaultValue": "" } ] } }
🔹 AutoGPT 的 Skill 结构(新版平台)
my_skill/
__init__.py
skill.py # 必须包含一个 Skill 类
skill.py示例骨架:from autogpt.skills import BaseSkill class MyWeatherSkill(BaseSkill): def __init__(self): super().__init__( name="WeatherSkill", description="Get weather for a city", parameters={...} ) async def execute(self, city: str) -> str: # 调用天气 API 或计算逻辑 return f"{city} 的天气是晴天"
5. 如何编写自己的 Skill(以 Semantic Kernel 为例)
假设你想创建一个“计算两个数之和”的 Skill。
步骤一:创建目录结构
在项目下建立:
MyMathSkill/
Add/
skprompt.txt
config.json
步骤二:编写提示模板 skprompt.txt
计算 {{$number1}} 和 {{$number2}} 的和。
结果:
步骤三:编写配置 config.json
{
"schema": 1,
"type": "completion",
"description": "将两个数字相加",
"completion": { "max_tokens": 50, "temperature": 0 },
"input": {
"parameters": [
{ "name": "number1", "description": "第一个数字", "defaultValue": "" },
{ "name": "number2", "description": "第二个数字", "defaultValue": "" }
]
}
}
步骤四:在代码中加载并使用
import semantic_kernel as sk
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
kernel = sk.Kernel()
kernel.add_chat_service("gpt", AzureChatCompletion("deployment", "endpoint", "key"))
# 导入技能
skill = kernel.import_semantic_skill_from_directory("./MyMathSkill", "MyMathSkill")
# 运行技能
result = await kernel.run_async(skill["Add"], input_context="number1=5, number2=3")
print(result) # 输出类似 "8"
如果你想写原生代码技能(不依赖提示模板)
from semantic_kernel.skill_definition import sk_function, sk_function_context_parameter
from semantic_kernel.orchestration.sk_context import SKContext
class MathSkill:
@sk_function(description="Add two numbers")
@sk_function_context_parameter(name="number1", description="First number")
@sk_function_context_parameter(name="number2", description="Second number")
def add(self, context: SKContext) -> int:
return int(context["number1"]) + int(context["number2"])
然后把 MathSkill 类注册给 Kernel 即可。
总结
- Skill 是 Agent 的工具箱,让大模型能真正执行任务。
- 不同平台有各自的 Skill 规范,不通用,但思路一致。
- 文件结构最常见的就是“文件夹 + 配置文件 + 提示(或代码)”,Semantic Kernel 是这方面的典型代表。
- 编写自己的 Skill 只需:描述清楚能力 → 定义好输入参数 → 实现执行逻辑(提示或代码)→ 在框架中注册。
更多推荐


所有评论(0)