ITPub博客

首页 > 人工智能 > 人工智能 > Token 贵到肉疼?OpenAI 竞品都在用的 Google ADK 异步“技能”架构带你省流 90%

Token 贵到肉疼?OpenAI 竞品都在用的 Google ADK 异步“技能”架构带你省流 90%

原创 人工智能 作者:minisun2000 时间:2026-05-29 18:55:03 0 删除 编辑

为了让智能体足够聪明,我们习惯把各种大包往系统提示词(System Prompt)里塞:业务合规清单、安全审查步骤、天气查询逻辑、数据校验规则……结果就是,用户连一句“你好”都还没说,你的智能体就已经在后台疯狂烧掉了几千个 Token。

过去整个行业的解法简单粗暴:把上下文窗口做大,再做大。但到了 2026 年,当智能体需要同时跨越几十个专业领域处理极其复杂的长任务时,这种全量堆砌的操作让企业和开发者发现,Token 成本高到了肉疼的底层逻辑。

就在今年年初,技术生态发生了一次极其优雅的进化。

Google 的开源智能体框架 Google ADK(Agent Development Kit) 宣布全面拥抱 SkillToolset(技能工具集)原生架构。这个架构不再寄希望于无限扩容的上下文,而是走了一条全新的路子—— 按需异步加载专业知识。这就好比一个医生在看病时,不是把整本医学百科全书死记硬背在脑子里,而是在遇到特定病例时,精准地去翻阅某一个章节。

重新认识 Google ADK

在聊高能的“技能(Skills)”架构前,先帮还没跟上的同学同步一下底座背景。

Google ADK 是 Google 推出的一套用于构建由 Gemini 模型驱动的开源智能体框架。它原生支持 Python、Java、Go 和 TypeScript。它在底层帮你把模型编排、工具挂载、长短期记忆流以及多智能体协同(Multi-agent Orchestration)全部封装好了。

如果把大模型比作发动机,那 ADK 就是 AI 时代开箱即用的“工业级底盘”——它的核心目标就是让你直接跳过造轮子的阶段,写几行干净的抽象代码就能把智能体推向生产环境。

在 ADK 的世界里,有几个最核心的积木块:

  • 智能体(Agent):核心大脑,由其名称、专属提示词指令、所用模型和绑定的工具决定。

  • 会话(Session):持久化的对话记忆体,存储长期的交互历史。

  • 执行器(Runner):调度引擎,负责拆解用户的输入并编排响应。

  • 工具(Tools):可以被智能体随时召唤的方法,比如自定义函数、MCP 服务器,以及我们今天要重点拆解的 技能工具集。

三层渐进式架构:技能是如何消灭 Token 焦虑的

假设你要做一个全能的医疗助手智能体,它需要处理化验单、出院小结、处方药开具和放射科胶片。每一个细分领域都有自己庞大的专业词汇表、指标正常范围和输出模板。

如果采用传统做法把这些全灌进 Prompt,那每一次对话都是一场资金灾难。

ADK 引入的技能机制采用了一种三层渐进式暴露(Progressive Disclosure)的精妙架构,把知识管理做到了像素级的精细度。

第一层:元数据(Metadata)

这是技能的“名片”,极其轻量,通常只有 100 字节左右。智能体在长期的会话中会 时刻挂载这段名片。它通常写在 SKILL.md 文件的 YAML frontmatter 里:

YAML
---name: weather-skilldescription: 一个专门根据参考数据提供天气信息的技能。---

智能体常驻这段名片没有任何负担。只有当用户的提问匹配到这个描述时,智能体才会决定激活它。

第二层:具体指令(Instructions)

一旦触发匹配,执行器会异步调用 load_skill(),把该技能完整的执行步骤加载进来。这一层是纯粹的“操作说明书”,通常控制在几千个 Token 以内。 例如:

  • 步骤 1:去阅读 references/weather_info.md 获取当前天气。

  • 步骤 2:如果用户追问湿度,运行脚本 scripts/get_humidity.py。

  • 步骤 3:将整理好的数据规范化输出。

第三层:深度资源(Resources)

这是最重的数据资产层,包含了行业术语表、本地分析脚本、大体量的模板等。 只有当前面的具体指令走到某一步、确实需要某些资源时,系统才会精准地把这个资源加载进来。

如果用户只是问了一句“今天旧金山气温多少度”,那么第二步的 get_humidity.py 脚本永远不会被读取,相关的 Token 消耗直接归零。 每一次交互,你都只为真正运行到的高价值数据埋单。

ADK 技能落地的四种经典姿势

在实际工程落地中,ADK 提供了四种截然不同的代码实现模式:

模式一:内联技能(Inline Skills)

最快、最轻量的做法。直接在 Python 代码里硬编码定义技能。极适合做快速的方案验证。

Python
from google.adk.skills import models
greeting_skill = models.Skill(
    frontmatter=models.Frontmatter(
        name="greeting-skill",
        description="一个亲切的问候技能。",
    ),
    instructions="步骤 1: 读取 'references/hello.txt'。步骤 2: 输出问候。",
    resources=models.Resources(
        references={            "hello.txt": "嗨!很高兴今天能在这里帮到你!",
        },
    ),
)

模式二:文件流技能(File-based Skills)

这是真正用于生产环境的工程化标配。技能拥有独立的文件夹目录,将操作指令与领域知识彻底解耦,极大地方便了团队在 Git 里进行版本管理。 哔嘀影视

标准的目录骨架如下:

Plaintext
skills/weather-skill/
├── SKILL.md              # 存放第一层名片与第二层具体指令
├── references/
│   └── weather_info.md   # 存放第三层静态参考数据
└── scripts/
    └── get_humidity.py   # 存放第三层可执行脚本

在主程序里一行代码就能优雅拉起:

Python
from google.adk.skills import load_skill_from_dirimport pathlib
weather_skill = load_skill_from_dir(
    pathlib.Path(__file__).parent / "skills" / "weather-skill")

模式三:跨平台开源社区技能

这也是整个架构最野心勃勃的地方。该技术严格遵循 agentskills.io 的开源开放标准。这意味着,你在 ADK 里封装出来的一个极其硬核的“容器安全审计技能”,不需要做任何重构,可以直接无缝挂载到 Claude Code、Cursor 或者各类支持该标准的第三方智能体工具里。技能正在变成智能体时代的 npm 安装包。

模式四:技能工厂元智能体(The Skill Factory)

这属于高阶玩家的黑魔法。你可以专门打造一个“技能孵化器”智能体。在漫长的自动化长任务中,如果它发现现有的工具无法解决眼前的新环境,它会自主在后台编写、调试出一份全新的 SKILL.md 和配套脚本,实现技能的自我繁衍。不过官方建议,对于这种自主生成的代码级技能,合入生产主线前最好引入人类 Review 机制(Human-in-the-loop)。

手把手带你跑通第一个技能智能体

纸上谈兵终觉浅,我们直接手敲一个最直观的天气按需加载智能体。

先装好最新的核心包并配好你的 Gemini API Key:

Bash
pip install google-adk

第一步:备齐你的技能干货

按照前面提到的文件流模式,在 skills/weather-skill/SKILL.md 里写入内容:

Markdown
---
name: weather-skilldescription: 一个根据静态档案与动态脚本提供特定地区天气与湿度分析的技能。
---Step 1: 查阅 'references/weather_info.md' 获取当前核心天气档案。
Step 2: 如果用户明确指明需要查询湿度,运行 'scripts/get_humidity.py' 传入 `location` 参数。
Step 3: 聚合上述信息,用富有亲和力的博客口吻回复用户。

在 skills/weather-skill/references/weather_info.md 里放上你的深度资源:

Markdown
# 气象参考档案- 观测城市: 旧金山 (San Francisco, CA)- 天气状态: 晴朗- 实时气温: 72°F (22°C)

在 skills/weather-skill/scripts/get_humidity.py 里丢一个模拟业务查询的脚本:

Python
import argparsedef main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--location", type=str, default="San Francisco")
    args = parser.parse_args()    # 模拟高价值的业务查询或三方接口联动
    print(f"【后台动态脚本响应】当前城市 {args.location} 的实时湿度为 45%(模拟数据)")if __name__ == "__main__":
    main()

第二步:在主程序中组装智能体

在你的入口文件 agent.py 里,把技能和智能体大脑组装起来:

Python
import pathlibfrom google.adk import Agentfrom google.adk.skills import load_skill_from_dirfrom google.adk.tools.skill_toolset import SkillToolsetfrom google.adk.code_executors.unsafe_local_code_executor import UnsafeLocalCodeExecutor# 1. 优雅地从文件夹异步加载技能weather_dir = pathlib.Path(__file__).parent / "skills" / "weather-skill"weather_skill = load_skill_from_dir(weather_dir)# 2. 打造专属技能工具箱(本地测试环境使用 UnsafeLocalCodeExecutor 来跑三层脚本)# 注意:线上生产环境为了防止恶意代码注入,强烈建议使用沙箱环境的沙箱执行器my_skill_toolset = SkillToolset(
    skills=[weather_skill],
    code_executor=UnsafeLocalCodeExecutor()
)# 3. 实例化你的智能体,选用高性能的闪电模型root_agent = Agent(
    model="gemini-2.5-flash",
    name="skill_explorer_agent",
    description="一个具备精细化技能按需加载能力的聪明智能体。",
    tools=[my_skill_toolset]
)

第三步:启动交互,见证两者的运行时代差

你可以在控制台直接拉起 adk web 的可视化交互界面,或者直接写个 Runner 跑测试。

  • 测试对话一:“帮我看一下今天旧金山的天气怎么样?”

    • 后台高光时刻:大模型扫了一眼常驻的元数据,认出了 weather-skill。于是激活并读入第二层操作指南。走到第一步时,它去把 weather_info.md 读了进来,并立刻礼貌地回复了你气温。 此时,湿度的脚本静静地躺在硬盘里,没有任何人为了加载它而消费哪怕一个 Token。

  • 测试对话二:“那那边的湿度是多少呢?”

    • 后台高光时刻:因为会话上下文依然保持在当前技能中,大模型精准踩中第二步指令。它立刻通知执行器跑后台的 Python 脚本,拿到返回的 45% 并丢回给你。 星星影院

智能体在不需要知晓全貌的前提下,靠着完美的断点衔接,走一步看一步地完成了全部复杂任务。

横向对比:Google ADK 与 OpenAI 智能体 SDK 的硬核抗衡

目前市面上最火的智能体技术栈,除了 Google ADK,自然少不了 OpenAI 的 Agent SDK。我们不吹不黑,从架构的底层逻辑来看看它们各自的核心取向:

  • 知识控制策略:OpenAI 更加依赖强大底座模型的常识涌现以及传统的函数调用(Function Calling);而 Google ADK 的 SkillToolset 是一套彻头彻尾的 渐进式认知管理系统,哪怕未来你给一个智能体挂上 200 个领域的专业技能,它依然能保持极其轻盈的启动态势。

  • 模型兼容取向:OpenAI 深度锁死在自家的 GPT 系列生态中;而 Google ADK 由于完全贯彻了开源社区的 agentskills.io 开放协议,它的技能组件具备极强的跨平台通用属性。

  • 生态成熟度:平心而论,OpenAI 目前在开发者生态社区的广度、上手文档的细腻度以及生产级配套工具链(如状态监控看板)上,依旧保有非常明显的身位优势。

如果你目前的研发团队已经深度绑定了 OpenAI 的技术栈,仅仅为了用上 Skills 而强行把底座大洗牌,其带来的迁移摩擦成本可能并不划算。

但如果你正准备从零切入复杂的多领域智能体,或者你的项目在未来规模化扩张时面临着极为严苛的 Token 预算红线,那么 Google ADK 的这套三层按需调用架构,绝对是你在工程设计上最值得借鉴的白月光。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/284444/viewspace-3172686/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2018-12-12

  • 博文量
    2
  • 访问量
    1571