功能说明
导入路径:from veadk.tools.builtin_tools.create_agent import CreateAgentToolset
CreateAgentToolset 是一个内置工具集,让主智能体在运行时收集可用资源、按任务需要创建一个或多个子智能体,并通过 Google ADK 的 transfer_to_agent 把当前任务移交给指定子智能体。子智能体在同一会话上下文中继续执行并直接给出最终回答。
该工具集对外暴露两个工具:
collect_resources 返回的资源是候选清单,不会自动挂载到子智能体。主智能体必须在每个 LLM 节点的 resources 中显式写入需要使用的每个资源 ref;当清单中存在与任务相关的技能时,至少绑定一个技能。何时使用
适合以下场景:- 主智能体需要根据用户任务临时组建具备特定技能、知识库或工具的专家子智能体,而不在开发期固定子智能体结构。
- 需要在同一会话上下文中把任务移交给动态创建的子智能体,由子智能体直接向用户输出最终结果。
- 需要从公共 Skill Hub 或账号下的 Skill Space、知识库与内置工具中按任务匹配资源。
依赖与前提
公共 Skill Hub 检索由主智能体根据任务生成关键词完成,无需配置 Space ID。配置 AK/SK 或 STS 后,AgentKit 技能中心会自动检索当前账号可访问的全部 Skill Space。SKILL_SPACE_ID 仅用于将检索范围限制到指定 Space,多个 Space ID 用逗号分隔;兼容旧版 Skill Hub Space 时仍可使用 SKILL_HUB_SPACE_ID。
使用方法
把CreateAgentToolset() 实例加入 Agent 的 tools 列表即可。主智能体在指令中描述资源收集、蓝图设计与移交的流程,运行时由模型自主决定何时调用两个工具。
dynamic_agent_coordinator.py
资源收集与匹配
collect_resources 默认从以下来源收集资源,并将其统一为带 ref 的候选清单:
收集完成后返回的
collection_id 需要在随后调用 create_agents 时原样传入,用于关联本次收集的资源快照。
离线模式
当用户明确禁止联网、知识库和任何外部资源访问时,主智能体可以跳过collect_resources,直接调用 create_agents 并传入空字符串作为 collection_id。此时每个 LLM 节点的 resources 必须为空列表,子智能体仅使用自身模型能力完成当前任务。离线模式下不会发起 Skill Hub 关键词检索或其他资源源调用。
智能体蓝图
create_agents 的 agents 参数是一个蓝图列表,每个蓝图描述一个独立构建的根智能体:
蓝图内的节点支持以下类型,具体可用类型取决于已安装的 Google ADK 版本:
workflow 节点仅在 Google ADK 2.0.0 及以上版本可用;低版本下 collect_resources 返回的能力清单会标明当前支持的节点类型,create_agents 也会忽略 workflow 节点。可复用身份与任务分离
蓝图中的name、节点 id、description 和 instruction 字段应描述可跨请求复用的稳定能力域,而 task 字段是当前一次性任务具体信息的唯一载体。具体而言:
name和id使用简洁的 snake_case 能力名,例如video_creation_agent、document_translation_agent、investment_analysis_agent,不要按本次交付物或研究对象命名。description和instruction描述通用操作,如「调研用户指定的主题」「比较用户指定的候选项」,不硬编码本次任务中的品牌、平台、行业、语言或题材。task完整保留当前用户的具体目标、对象、输入和交付要求,包括具体的研究对象、行业信息、源语言或目标语言等请求特有内容。
运行时,
task 中的任务上下文会自动附加到每个 LLM 节点的指令末尾,子智能体可据此完成当前一次性任务,而无需在 instruction 中重复请求特定的实体。LLM 节点
LLM 节点是最常用的叶节点,其字段如下:临时 Python 工具
主智能体可以在 LLM 节点的python_tools 中提供完整 Python 源码,作为子智能体可调用的工具:
参数
CreateAgentToolset 的构造参数:
限制
create_agents必须在由Runner驱动的活跃智能体调用中执行,否则无法注册子智能体并完成移交。- 每次
collect_resources的结果只需调用一次create_agents,并在同一次调用中包含全部所需子智能体;调用完成或设置handoff_to后不应再次调用。 - 同一会话内多次调用
collect_resources会覆盖同一会话的资源快照;资源快照存储在进程内有界缓存中(最多 128 份),create_agents读取快照后不会使其失效,同一快照可被具有相同请求指纹的后续调用复用。 - 动态创建的子智能体注册在当前会话的智能体树中,会话结束后不再保留。
python_tools在当前进程内执行,不做沙箱隔离。