ADK 智能体技能 (Skills)¶
Supported in ADKPython v1.25.0Experimental
智能体 技能 (Skill) 是一个自包含的功能单元,ADK 智能体可以使用它来执行特定任务。智能体技能封装了任务所需的必要指令、资源和工具,基于智能体技能规范 (Agent Skill specification)。技能的结构允许它增量加载,以最小化对智能体运行上下文窗口的影响。
开始使用¶
使用 SkillToolset 类将一个或多个技能包含在你的智能体定义中,然后添加到智能体的工具列表中。你可以在代码中定义技能,或从文件定义加载技能,如下所示:
import pathlib
from google.adk import Agent
from google.adk.skills import load_skill_from_dir
from google.adk.tools import skill_toolset
# 从目录加载天气技能
weather_skill = load_skill_from_dir(
pathlib.Path(__file__).parent / "skills" / "weather_skill"
)
# 创建技能工具集
my_skill_toolset = skill_toolset.SkillToolset(
skills=[weather_skill]
)
# 定义根智能体
root_agent = Agent(
model="gemini-2.5-flash",
name="skill_user_agent",
description="一个可以利用专业技能的智能体。",
instruction=(
"你是一个有用的助手,可以利用技能来执行任务。"
),
tools=[
my_skill_toolset,
],
)
有关带有技能的 ADK 智能体的完整代码示例(包括基于文件的和内联的技能定义),请参阅代码示例 skills_agent。
定义技能¶
技能功能允许你创建技能指令和资源的模块化包,智能体可以根据需要加载。这种方法有助于你组织智能体的能力,并由于仅在需要时加载指令而优化上下文窗口。技能的结构分为三个级别:
- L1 (元数据): 提供用于技能发现的元数据。此信息定义在
SKILL.md文件的 Frontmatter 部分,包括技能名称和描述等属性。 - L2 (指令): 包含技能的主要指令,当技能被智能体触发时加载。此信息定义在
SKILL.md文件的正文中。 - L3 (资源): 包括其他资源,如参考材料、资产和脚本,可以根据需要加载。这些资源组织在以下目录中:
references/:具有扩展指令、工作流或指南的其他 Markdown 文件。assets/:资源材料,如数据库模式、API 文档、模板或示例。scripts/:智能体运行环境支持的可执行脚本。
通过文件定义技能¶
以下目录结构显示了在 ADK 智能体项目中包含技能的推荐方式。下面显示的 example_skill/ 目录以及任何并行的技能目录必须遵循智能体技能规范 (Agent Skill specification) 文件结构。只有 SKILL.md 文件是必须的。
my_agent/
agent.py
.env
skills/
example_skill/ # 技能
SKILL.md # 主要指令(必须)
references/
REFERENCE.md # 详细的 API 参考
FORMS.md # 表单填写指南
*.md # 领域特定信息
assets/
*.* # 模板、图像、数据
scripts/
*.py # 工具脚本
尚不支持脚本执行
目前尚不支持脚本执行,这是一个已知限制。
在代码中定义技能¶
在 ADK 智能体中,你还可以使用 Skill 模型类在智能体的代码中定义技能,如下所示。这种定义技能的方法使你能够从 ADK 智能体代码中动态修改技能。
from google.adk.skills import models
# 在代码中定义一个简单的问候技能
greeting_skill = models.Skill(
frontmatter=models.Frontmatter(
name="greeting-skill",
description=(
"一个友好的问候技能,可以向特定的人打招呼。"
),
),
instructions=(
"步骤 1:阅读 'references/hello_world.txt' 文件以了解如何"
" 问候用户。步骤 2:根据参考资料返回问候语。"
),
resources=models.Resources(
references={
"hello_world.txt": "你好!很高兴你能在这里!",
"example.md": "这是一个示例参考资料。",
},
),
)
已知限制¶
技能功能是实验性的,包含以下限制:
- 脚本执行: 技能功能目前不支持脚本执行(
scripts/目录)。
下一步¶
查看这些用于构建带有技能的智能体的资源:
- ADK 技能智能体代码示例:skills_agent。
- 智能体技能规范文档