开源adk-python Releases·原文 2026年9月11日

Google ADK Python 2.9.0发布:新增模型自动故障转移、LiveKit语音支持与MCP SDK 2.x兼容

ADK 2.9.0引入FallbackModel在主模型出错时自动切换备用模型,新增LiveKit runner用于语音和电话代理,并支持从YAML加载ADK 2.0图工作流;同时带来四项破坏性变更。

AI解读:Google的ADK Python发布 2.9.0 版本,核心方向是代理可靠性和生态集成:主模型报错时可以自动切换到备用模型,不用你手写重试逻辑。

新增LiveKit runner,可以构建语音和电话代理。ADK之前主要围绕文本和工具调用,这次把实时语音这条链路接进来了。

工作流支持从声明式YAML直接编写和加载ADK 2.0图,省去部分代码胶水;MCP方面则同时兼容 1.x和 2.x SDK,但默认仍解析 1.x,要用 2.x得主动安装。

升级前需要留意四处破坏性变更:失败节点在恢复时会重新执行(外部副作用可能重复)、GCS工具的本地路径被限制在local_file_root目录内、InMemorySessionService对未知session追加事件会抛SessionNotFoundError、嵌套工作流重试行为改变。其中MCP 2.x字段处理只在你主动装 2.x时生效。

Google的adk-python发布v2.9.0(2026-09-10),重点在代理可靠性、生态集成和MCP兼容。根据发布说明,该版本引入FallbackModel在主模型遭遇错误时自动切换到备用模型;新增LiveKit runner,支持构建语音和电话代理;支持直接从声明式YAML编写和加载ADK 2.0图工作流;并支持MCP SDK 2.x与 1.x服务器,但安装仍默认解析 1.x,需要刻意安装 2.x才能启用。

模型故障转移、语音与YAML工作流

发布说明把这次更新概括为“代理韧性”和“生态集成”两部分。模型侧新增FallbackModel,用于在主模型出错时自动故障转移到备用模型。集成侧新增LiveKit runner,用于构建语音和电话代理。工作流侧支持直接从声明式YAML配置编写和加载ADK 2.0图,发布说明称其目标是简化图工作流管理。

  • FallbackModel:在主模型遇到错误时自动切换到备用模型(提交c300b8d)。
  • LiveKit runner:用于构建语音和电话代理(提交f277d91)。
  • YAML图工作流:可直接编写和加载ADK 2.0图(提交 2a9461b)。
  • MCP:可同时对接MCP SDK 2.x和 1.x服务器;安装默认仍解析 1.x,需要刻意安装 2.x才能选择启用(提交 856acf2)。

四项破坏性变更

发布说明列出四项破坏性变更。第一,工作流节点恢复行为改变:以前失败节点在恢复时会被当作已完成而跳过,现在会重新运行。发布说明要求节点主体具备幂等性——如果节点执行了外部副作用后失败,那么每次恢复都会再次执行该副作用。

第二,GCS工具的本地路径被限制在local_file_root指定的目录内读写;如果未设置该配置,则完全拒绝本地文件访问。路径可以是绝对或相对路径,判断依据是解析后的实际位置。

第三,InMemorySessionService在向它不持有的会话追加事件时会抛出SessionNotFoundError,而不是接受事件后丢弃。数据库支持的session服务此前已采用这种行为,因此该变化只影响内存会话。

第四,嵌套工作流重试行为改变,但仅影响已经设置了retry_config的节点;发布说明称这不影响默认安装。此外MCP SDK 2.x的字段处理是破坏性的,但只在你刻意安装MCP 2.x时生效,本版本默认不会解析到它。

  • 失败节点在恢复时重新执行:节点主体需要幂等,否则外部副作用会重复发生。
  • GCS工具本地路径:仅在local_file_root目录内读写,未配置则拒绝本地文件访问。
  • InMemorySessionService:向未知会话追加事件时抛SessionNotFoundError。
  • 嵌套工作流重试:仅对已设置retry_config的节点改变行为。
  • MCP 2.x字段处理:仅在主动安装MCP 2.x时生效;未声明的字段在验证时被丢弃,_meta是声明字段不受影响。

MCP 2.x的字段处理细节

发布说明单独解释了MCP 2.x下的字段行为:在MCP SDK 2.x中,服务器发送但SDK未声明的字段不再到达调用方。2.x关闭了其模型,因此CallToolResult上的未知键,或通过raw_mcp_tool读取的工具声明上的未知键,会在ADK看到之前于验证阶段被丢弃。

发布说明称 _meta不受影响,因为它是声明字段,仍会到达。ADK无法恢复其他字段;依赖厂商扩展的服务器应把这些扩展移到 _meta之下。在 1.x下,这些字段仍和以前一样到达。

  • 未知键丢弃发生在验证阶段,ADK无法恢复。
  • _meta是声明字段,仍然到达。
  • 依赖厂商扩展的服务器应把扩展移到 _meta下。
  • 1.x下行为不变。

其他功能与修复

发布说明还列出多项功能:a2a_state_forwarding示例;GcsArtifactService新增get_authenticated_url和get_signed_url;工具轨迹评估新增ignore_args选项;transfer_to_agent新增transfer_reason用于防止循环;所有测试通过时代理评估打印详细结果;Docker构建与运行推广到多云环境;BigQuery工具支持带连字符的列名;遥测新增skill加载跟踪、脚本执行插桩,并通过OTLP导出日志到telemetry.googleapis.com;NodeTool支持FunctionNode自动推断。

修复项覆盖a2a、认证、工作流、GCS产物、BigQuery、LiteLLM、内存会话、Redis会话、数据库会话、Anthropic客户端、插件、OpenAPI工具等多个模块,包括并发GCS产物保存获得不同版本号、调用同步run() 生成器提前关闭时取消调用、模型返回多个候选时记录错误、会话中无内容的thought signature不再卡住会话等。

  • 新增GcsArtifactService.get_authenticated_url与get_signed_url。
  • transfer_to_agent新增transfer_reason参数以防循环。
  • BigQuery工具支持带连字符的列名。
  • 遥测新增skill加载跟踪与脚本执行插桩。
  • 日志可通过OTLP导出至telemetry.googleapis.com。

信息来源