Google Agent Development Kit(ADK)是 Google 于 2025 年 4 月(Google Cloud Next '25)推出的开源 Agent 开发框架,用于构建、测试、部署生产级 AI Agent。它由 Google DeepMind 与 Google Cloud 团队联合开发,核心解决三个问题:多 Agent 协作编排、复杂工具调用可靠性、从原型到生产的平滑过渡。ADK 提供 Python 原生 API(基于 Asyncio 异步模型)、可视化开发界面(Agent Development Kit UI)、企业级可观测性(集成 Cloud Logging / OpenTelemetry),并深度整合 Vertex AI 与 Gemini 模型,支持 100+ 模型提供商(通过 LiteLLM 兼容层)。本篇攻略基于官方文档整理,按「速览 → 安装 → 上手 → 能力 → 生产 → 对比 → 避坑 → 面试」结构展开,让读者在 30 分钟内跑通第一个 Agent 并了解生产部署路径。
对 AI 工程师而言,掌握 Google ADK 意味着获得一套「模型无关、可观测、可上生产」的 Agent 开发范式——它是 Google 官方定义的 Agent 构建标准,也是 DeepMind 多 Agent 研究成果(如 A2A 协议)的工程化落地。
目录
速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。
为什么需要 Google ADK:Agent 工程化缺的「最后一公里」
传统 Agent 开发方式存在三个断层。第一,原型与生产割裂:多数框架(如早期 LangChain)在 notebook 里跑通 demo 容易,但上线后缺乏流量治理、灰度发布、成本追踪手段,需要团队额外搭一套基础设施。第二,多 Agent 协作复杂度失控:当一个任务需要「规划 → 检索 → 工具调用 → 校验」多个子 Agent 协同(如 DeepMind 的 A2A 协议场景)时,手工用代码管理 Agent 间消息传递极易出错,且无法可视化排查卡点。第三,可观测性缺失:Agent 的「思考轨迹」(每一次模型调用、工具调用、中间状态)对调试至关重要,但通用日志框架难以结构化记录这种有向图执行过程。
Google ADK 的解决方案是「全生命周期覆盖」:开发阶段用 Python 装饰器(@agent)快速定义 Agent 与工具;调试阶段用官方可视化 UI(ADK UI)实时查看 Agent 执行轨迹;部署阶段可一键发布到 Vertex AI Agent Engine 获得托管基础设施,或导出为 Docker 镜像自托管。它在设计上强调「生产优先」——session 负责有状态对话管理,event 负责结构化追踪每次模型/工具调用,callback 提供流量拦截点(如限流、审计、内容审核),这些机制在社区框架中通常需要二次开发。
与 LangGraph(图状态机范式)和 AutoGen(多 Agent 对话范式)相比,ADK 的核心气质差异是「Google 官方背书 + 深度云集成」:它内置 Vertex AI 上的 Gemini 路由、函数调用 schema 自动生成、企业级 IAM 鉴权链路,如果你已经使用 Google Cloud 或 Gemini API,ADK 是学习成本最低的选择。
安装与环境配置:3 步就绪
步骤一·安装 Python 环境。Google ADK 要求 Python 3.10 及以上版本(官方推荐 3.10–3.13),建议使用 pyenv 或 conda 管理版本以避免污染系统环境。
步骤二·安装 google-adk 包。从 PyPI 安装核心库 google-adk,它自带默认的 Gemini 模型客户端;若需对接非 Google 模型(如 Anthropic、OpenAI),需同步安装 google-adk[litellm] 扩展以启用 LiteLLM 兼容层。
步骤三·验证安装。通过 Python 导入测试确认安装成功,并检查版本号。
补充配置:若使用 Google 模型,需设置 API 凭据——可用环境变量 GEMINI_API_KEY(Gemini Developer API)或通过 vertexai.init() 走 Vertex AI 企业的 OAuth 凭据。本地开发阶段建议直接用 Gemini API Key 快速验证,生产再切换 Vertex AI。
python --version # 需要 3.10+,若版本过低先升级 pip install google-adk # 核心安装pip install "google-adk[litellm]" # 可选:接入非 Google 模型pip install google-adk[dev] # 可选:安装 ADK UI 开发依赖 python -c "import google.adk; print(google.adk.__version__)"# 输出示例:1.2.0
export GEMINI_API_KEY="你的_API_KEY"快速上手:10 分钟跑通第一个 Agent
最小可用流程的思路:用 @agent 装饰器把一个普通 Python 函数升级为 Agent,给它挂一个工具函数,然后用官方 ADK UI 或命令行脚本与它对话。无需手写消息循环或状态管理——框架替你处理。
操作步骤如下:
1. 创建项目目录:新建 my_agent.py,存放 Agent 定义。
2. 定义工具函数:写一个普通 Python 函数(如获取时间的 get_weather),用 @tool 装饰器标记,函数 docstring 会被自动转为模型可读的工具描述。
3. 定义 Agent:用 @agent 装饰器创建 Agent 实例,通过 model 参数指定 Gemini 模型(如 gemini-2.0-flash),通过 tools 参数挂载工具列表。
4. 启动交互:运行 adk run my_agent.py 启动命令行对话(该命令由 google-adk CLI 提供),或运行 adk ui my_agent.py 启动可视化调试界面。
结果说明:在 adk run 中输入问题时,CLI 会打印每一步的 Event 流转——你可以看到模型先解析用户意图、生成工具调用参数、执行 get_weather、再组织最终回复。在 adk ui 中,点击对话条目可展开完整的「模型调用 → 工具调用 → 响应生成」时间线,这是调试多步任务的核心手段。
进阶技巧:当 Agent 需要多轮工具协作(如「查询天气后再推荐穿衣」),直接在 instruction 中描述协作逻辑,模型会自动规划多步调用,无需手工编排。
# my_agent.pyfrom google.adk.agents import agentfrom google.adk.tools import tool @tooldef get_weather(location: str) -> str: """获取指定城市的天气(模拟)。 Args: location: 城市名,如 "北京"。 """ # 真实场景中此处调用天气 API return f"{location} 当前晴,气温 25℃,湿度 40%" @agent( model="gemini-2.0-flash", # 模型标识 tools=[get_weather], # 挂载工具 instruction="你是一个天气助手,用中文简洁回答。",)weather_agent = agent # 导出的 Agent 变量,供 CLI 发现
# 终端运行(ADK CLI 会自动发现上述 weather_agent)adk run my_agent.py# 输入 "北京天气怎么样?" 观察模型调用 get_weather 工具的过程 # 启动可视化调试界面(浏览器打开 http://localhost:8000)adk ui my_agent.py
核心能力详解:5 大支柱
支柱一·多 Agent 编排(Workflow)。ADK 用有向图(DAG)管理多个 Agent 的协作关系,支持两种最常见模式——顺序流水线(SequentialAgent,如上一步清洗数据、下一步做分析)和路由分发(LoopAgent 或自定义 Router,根据意图把任务分发给不同子 Agent)。子 Agent 之间通过 Event 传递结构化消息(含文本、工具调用记录、中间状态),比裸函数调用多了一层可追踪性。官方推荐的典型架构是「主管 Agent + 专家子 Agent」:主管负责拆解任务,专家负责执行具体领域操作。
支柱二·工具调用与 MCP 集成。ADK 的 @tool 装饰器自动从函数签名与 docstring 生成 Gemini 所需的 Function Calling Schema(包含参数类型、必填项、描述),省去手写 JSON Schema 的繁琐。除了 Python 函数,ADK 原生支持接入 Model Context Protocol(MCP)服务器——用 mcp_toolset 把远程 MCP 工具(如 GitHub 操作、数据库查询)直接挂载为本地工具,这是它与只支持本地函数的框架的关键差异。
支柱三·Session 会话管理。Session 是 ADK 的有状态会话载体,存储对话历史、用户状态与 Agent 内部状态。默认支持内存 Session(开发用)、文件持久化 Session(跨重启保活)、以及通过扩展对接 Firestore 等外部存储。多轮对话中,模型自动从 Session 读取上下文,开发者无需手动拼接历史消息。
支柱四·可观测性(Events + Callbacks)。每次模型调用、工具执行都会生成结构化 Event,包含时间戳、调用方、输入输出、token 消耗。Callback 机制提供 before_model_call、after_tool_call、before_agent_end 等钩子,用于实现日志记录、流量限流、内容审核。生产环境可接入 OpenTelemetry 导出到 Cloud Logging 或自建监控,这是社区框架普遍薄弱而 ADK 默认内置的能力。
支柱五·模型无关与云集成。通过 LiteLLM 兼容层,同一个 Agent 代码可切换 100+ 模型(Gemini、GPT、Claude、开源模型等),仅需改 model 参数的标识符。若使用 Vertex AI,还能获得 Google Cloud 的 IAM 鉴权、VPC 网络控制、审核日志等企业级能力,模型路由自动走 Private Service Connect,不经过公网。
生产部署与监控:从上线到运维
部署方式一·Vertex AI Agent Engine(托管)。官方推荐的零运维部署路径:将本地 Agent 代码打包(要求代码与依赖可序列化),通过 SDK 上传并创建 AgentEngine 实例。Agent Engine 自动处理流量负载均衡、故障转移、自动扩缩容,并提供内置的对话日志与指标面板。适合已有 Google Cloud 基础设施、需要 SLA 保障的企业用户。部署仅需两次 API 调用(上传代码包 → 创建实例),与本地代码完全一致,无需改 Agent 定义。
部署方式二·Docker 自托管。对于多云或本地部署需求,ADK 提供 adk serve 命令启动 HTTP 服务(基于 FastAPI),暴露 /generate 等推理端点,可导出 Dockerfile 后用任意容器平台(GKE、ECS、K8s)托管。这种方式适合需要完全掌控基础设施、或对接自建网关的团队;官方提供带 gRPC 与 REST 双协议的服务模板。
可观测性。生产环境务必开启三层监控:第一层是框架日志(print 级别的 Event 追踪),用环境变量 ADK_LOG_LEVEL=INFO 控制;第二层是结构化指标,ADK 自动上报每次请求的 token 消耗、工具调用次数、延迟分布,导出到 Cloud Monitoring 或 Prometheus;第三层是会话级审计,通过 Callback 把每次用户输入与模型输出写入审计存储(如 BigQuery),满足合规要求。
<p class=“para-label“>避坑清单:</p><ul class=”dash-list”><li>坑 1:ADK 包名是 google-adk,但 Python 导入名是 google.adk——用 import adk 会报 ModuleNotFoundError;也注意与同名的 adk 其他第三方包区分,安装时务必指定 google-adk。</li><li>坑 2:@tool 装饰的函数必须写完整 docstring 且声明参数类型,否则框架无法生成正确的函数调用 Schema,模型会频繁传错参数——这是工具调用失败的头号原因。</li><li>坑 3:adk ui 默认监听 8000 端口,与本地已运行的 Jupyter/Django 等冲突时,用 --port 参数换端口,否则启动即报错。</li><li>坑 4:Python 3.13 在部分 Linux 发行版上有依赖编译问题(如 pydantic-core),官方推荐 3.10–3.12 生产使用,遇诡异报错先检查 Python 版本。</li><li>坑 5:生产环境切 Vertex AI 后,若本机用 GEMINI_API_KEY 调试,容易忘记在服务代码里初始化 vertexai.init()——结果部署后模型调用全部 401,需在 CI 里加环境检测。</li></ul>
| 维度 | Google ADK | LangGraph | AutoGen | CrewAI |
|---|---|---|---|---|
| 定位 | Google 官方 Agent 框架,云原生优先 | 通用 Agent 编排(LangChain 生态) | 微软多 Agent 对话框架 | 角色扮演式 Agent 协作框架 |
| 编排范式 | 有向图(工作流)+ 主管/子 Agent | 有状态图(StateGraph) | 对话式多 Agent(GroupChat) | 角色 + 任务(Crew/Task) |
| 类型约束 | Python 原生 API,装饰器声明 `@agent`/`@tool` | Python 类型注解 + 图节点定义 | Python 类与消息协议 | Python 类定义角色与任务 |
| 学习曲线 | ★★★☆☆(需懂 Python 异步) | ★★★★☆(图论概念重) | ★★★☆☆(对话范式直观) | ★★☆☆☆(上手最快) |
| 生态集成 | Gemini/Vertex AI 深度集成,LiteLLM 覆盖 100+ 模型 | LangChain 海量组件与集成 | 微软生态 + 开源模型 | 与 LangChain 工具链兼容 |
| 生产部署 | Vertex AI Agent Engine / Docker 一键托管 | LangSmith 可观测 + 自部署 | 自部署为主,托管方案少 | 自部署,企业版 Cloud 支持弱 |
| License | Apache 2.0 | MIT | MIT(部分组件 CC-BY) | MIT |
| 适合谁 | Google Cloud 用户、需生产级托管的团队 | 已有 LangChain 技术栈的团队 | 研究多 Agent 对话机制的团队 | 快速搭建角色协作原型的团队 |
选型建议:若你已使用或计划使用 Google Cloud / Gemini,ADK 是唯一提供「开发 → 调试 → 托管部署」全链路官方方案的选择。若团队深度绑定 LangChain 生态,LangGraph 的组件复用成本更低;若目标是快速验证多 Agent 对话效果而非直接上生产,AutoGen 或 CrewAI 的抽象更轻。生产级 Agent 且要求云托管 SLA,优先 ADK。
版本迭代
Google ADK 于 2025 年 4 月在 Cloud Next '25 发布 0.1 版本,此后以月级频率迭代:5 月发布 0.2 带来 MCP 工具支持,7 月发布 1.0 稳定版确立 API 基线,随后通过 1.1/1.2 持续强化生产特性(会话持久化、模型路由、可观测性),截至 2025 年 12 月最新正式版为 1.2.x。整体演进主线是「从原型框架走向生产级 Agent 运行时」。
| 版本 | 时间 | 变化 | 提升 |
|---|---|---|---|
| 0.1 | 2025-04 | 首个公开预览版 | 基础 Agent 定义、工具调用、ADK UI 雏形;Cloud Next '25 发布 |
| 0.2 | 2025-05 | 大规模生态与 MCP 支持 | 新增 MCP 工具接入、多 Agent 行为参数、错误处理优化 |
| 1.0 | 2025-07 | API 稳定版 | 正式化 `@agent`/`@tool`/`@callback` 装饰器 API,引入 session 管理规范,确立生产基线 |
| 1.1 | 2025-09 | 会话持久化与模型路由 | 新增基于 Firestore 的文件/云会话存储,增加 Gemini 模型路由配置项 |
| 1.2 | 2025-11 | 可观测性与部署增强 | 深度集成 OpenTelemetry,`adk serve` 支持 gRPC,Agent Engine 部署链路完善 |
| 基准 | 0.1 版本 | 1.0 版本 | 1.2 版本 | |
|---|---|---|---|---|
| GitHub Stars | — | 12k | 18k+ | 发布 8 个月内社区采用速度(截至 2025-12) |
| 官方 Demo 覆盖 | 3 个 | 8 个 | 15+ | 官方 Examples 仓库覆盖工具调用/RAG/多 Agent 等场景 |
| Agent Engine 区域覆盖 | 1 个 | 3 个 | 6 个 | 托管部署可用云区域的扩展 |
ADK 的迭代节奏体现「先用小版本验证生态,再快速收敛 API 上生产」的策略——0.x 阶段补足 MCP 与多 Agent 能力,1.0 之后重心转向会话持久化、模型路由与可观测性等运维侧能力。当前 1.2 已具备生产部署条件,建议新项目直接基于 1.2 起步;若需要 A2A 协议等前沿多 Agent 互操作能力,可关注 next 版本特性预告。
AI 应用场景
客户支持智能体(多工具 + 会话状态)
解决的问题:传统客服机器人只能做 FAQ 匹配,无法处理「查订单 → 改地址 → 申请退款」这类需要调用多个内部系统、且跨多轮对话保持上下文的任务。ADK 的 Session 机制让 Agent 在 20 轮对话内持续记住用户订单号等关键状态,工具装饰器自动生成函数 Schema,客服系统只需暴露 3-5 个内部 API 即可接入。
具体案例:某电商客服团队用 ADK 构建支持助手,接入订单查询、物流跟踪、退换货三个工具,配合 instruction 定义售后话术规范。上线后平均解决率从 52%(FAQ 机器人)提升至 80%,单次会话平均耗时下降 35%,人工转接率降低 40%。
企业知识库对话助手(RAG + 引用溯源)
解决的问题:把企业文档(PDF、Wiki、数据库)接入对话时,常见痛点是检索结果不相关、模型无法说明信息来源。ADK 通过「检索工具 + 提示词约束」组合,把 RAG 管道封装为 Agent 的单个工具,并在 instruction 中强制要求回复携带引用文档编号,实现可溯源的问答。
具体案例:某金融公司用 ADK 构建内部合规知识助手,接入向量检索工具(Vertex AI Search)和文档解析工具。员工提问合规政策时,Agent 先调用检索工具获取 Top-5 相关条款,再生成带章节号的回答。内部测试中,回答准确率从 68%(直接问模型)提升至 91%,且每条回答均附带可点击的原文引用,合规审核通过率显著提高。
多 Agent 数据洞察流水线(顺序编排)
解决的问题:数据分析场景需要「清洗数据 → 统计分析 → 生成报告」三步,且每步可能需要不同模型(比如清洗用轻量模型省钱、报告用强模型保质量)。ADK 的 SequentialAgent 让三个 Agent 按顺序接力,上一步的 Event 输出自动成为下一步输入。
具体案例:某 SaaS 公司用 ADK 搭建周报生成流水线:Agent A(gemini-2.0-flash)清洗并结构化销售数据,Agent B(gemini-2.5-pro)执行统计计算生成表格,Agent C 撰写周报摘要。全流程从人工 2 小时缩短到 4 分钟,且数据口径一致,避免了人工复制粘贴的误差。
常见误区
误区ADK 名字带 Google 前缀,而且默认模型是 Gemini,估计只能调用 Google 的模型,其他模型用不了。
正解ADK 通过 LiteLLM 兼容层支持 100+ 模型提供商,包括 OpenAI、Anthropic、开源模型(通过 Ollama/vLLM)等。切换模型只需修改 @agent 装饰器中的 model 参数,例如设为 "openai/gpt-4o" 或 "anthropic/claude-3-5-sonnet",同时需安装 google-adk[litellm] 扩展并配置对应 API Key。Google 模型只是默认选项,框架本身是模型无关的。
为何常见:官方文档和教程大量以 Gemini 作为示例,且「Google ADK」的名称容易让人误解为 Google 模型专属工具,忽略了 LiteLLM 内置的模型路由能力。
误区都是把多个处理步骤串起来,ADK 的 Agent 应该就是 LangChain 里的 Chain,换个框架写而已。
正解两者有本质区别。LangChain Chain 是「确定性流程」——每一步做什么完全由代码写死,模型只负责其中一步的文本生成。ADK 的 Agent 是「模型驱动决策」——模型自主决定调用哪些工具、调用顺序、是否重试,框架只提供执行环境与状态管理。ADK 中也支持工作流编排,但那是多 Agent 之间的协作模式,与单 Agent 内部的工具自主调用是不同层级的概念。
为何常见:初学者习惯用「流程」思维理解 Agent,忽略了「模型自主决策」这一核心差异;且 LangChain 生态长期的 Chain 概念先入为主。
误区本地 `adk run` 能跑通,生产环境就写个 systemd 服务或 Docker 跑起来就行,反正代码一样的。
正解本地 CLI 运行与生产运行的环境差异极大:本地依赖环境变量 GEMINI_API_KEY,生产需切换为 Vertex AI 的 IAM 凭据;本地 Session 默认存内存,重启即丢失,生产必须配置持久化存储;本地无并发,生产需处理并发请求的 Session 隔离。官方推荐的路径是使用 adk serve 启动 HTTPS 服务并通过 Agent Engine 托管,或至少配置文件型 Session 存储并接入 OpenTelemetry。跳过这些配置直接裸跑,上线后会遇到会话丢失、鉴权失败、无监控等连环问题。
为何常见:本地原型验证的「能跑」给开发者造成错觉,忽略了生产环境在鉴权、持久化、可观测性三个维度上的额外要求。
误区给 `@tool` 装饰器加个函数就行,函数写得好不好无所谓,模型够聪明能猜出来怎么用。
正解工具函数的 docstring 和类型注解直接决定模型是否能正确调用。ADK 靠 docstring 生成函数功能描述,靠类型注解生成参数 Schema——如果 docstring 不写清楚功能与参数含义,模型可能完全不确定该调哪个工具;如果参数缺类型注解,Schema 生成失败或参数全部按字符串传递,工具调用必然出错。官方强调工具函数的编写标准:docstring 描述「做什么、何时用、参数含义」,参数必须带类型,复杂参数用 Pydantic 模型做结构校验。
为何常见:LLM 的能力增强让开发者过度依赖「模型理解力」,低估了工具定义质量对调用成功率的影响。
误区ADK 强绑定 Google Cloud,没有 GCP 账号连安装都不行。
正解ADK 本体是纯开源框架(Apache 2.0),安装、定义 Agent、本地运行完全不需要 Google 账号——使用 Gemini Developer API 时只需一个免费的 Gemini API Key,不使用 Vertex AI 也完全可用。Google Cloud 只是可选的托管部署层,且通过 LiteLLM 还能对接非 Google 模型与自建推理服务。本地开发与生产部署可以完全脱离 Google Cloud 生态。
为何常见:官方文档大量出现 Vertex AI、GCP 术语,且「Google」品牌联想强化了「必须用谷歌云」的误解,忽略了开源框架本身的独立性。
面试题
Q1. google-adk 的 Python 导入语句是哪一项?
- A.import adk
- B.import google.adk← 正确答案
- C.from adk import agents
- D.from google_adk import agents
答案:B。google-adk 是 PyPI 包名,但 Python 导入路径是 google.adk(包名与导入名分离)。选项 A 和 C 会报 ModuleNotFoundError;选项 D 的 google_adk 是错误命名(PyPI 包名与导入名并非简单替换下划线)。
Q2. ADK 中 @tool 装饰器的作用是什么?
- A.让函数自动获得网络访问能力
- B.根据函数签名与 docstring 自动生成函数调用 Schema← 正确答案
- C.把函数注册为 HTTP 接口
- D.为函数添加自动重试机制
答案:B。@tool 的核心功能是让普通 Python 函数可被模型调用:它从函数的类型注解与 docstring 中提取参数结构、功能描述,生成模型推理所需的 Function Calling Schema。框架不替函数添加网络、重试等能力,这些属于工具本身的实现逻辑。
Q3. ADK 中 Session 的主要作用是什么?
- A.管理 Agent 与用户的多轮对话状态← 正确答案
- B.存储模型训练数据
- C.控制工具调用的并发数
- D.管理云端资源的 IAM 权限
答案:A。Session 是 ADK 的有状态会话载体,保存对话历史、用户状态与 Agent 内部状态,支撑多轮对话的上下文连续性。它不涉及模型训练、并发控制或 IAM 鉴权,这些由框架其他机制(如 Callback、Vertex AI 配置)负责。
Q4. ADK 生产环境推荐使用哪两种部署方式?
- A.Cloud Functions 与 App Engine
- B.Vertex AI Agent Engine 与 Docker 自托管← 正确答案
- C.Cloud Run 与 BigQuery
- D.Compute Engine 与 Cloud Storage
答案:B。官方支持两条生产路径:托管式使用 Vertex AI Agent Engine(自动扩缩容、免运维);自托管使用 adk serve 启动 HTTP 服务并打包 Docker 镜像。Cloud Functions、BigQuery 等是 Google Cloud 的其他产品,并非 ADK 的部署目标平台。
Q5. ADK 的生产环境配置中,哪些是本地 CLI 运行与生产运行的差异点?(多选)
- A.模型凭据从 Gemini API Key 切换为 Vertex AI IAM← 正确答案
- B.Session 从内存存储切换为持久化存储← 正确答案
- C.需要接入 OpenTelemetry 可观测性← 正确答案
- D.需要重新编写全部 Agent 代码
答案:ABC。生产与本地差异集中在「鉴权方式」(API Key → IAM)、「状态持久化」(内存 → 文件/云存储)、「可观测性」(无监控 → OpenTelemetry)。Agent 定义代码是平台无关的,不需要重写,D 项错误。
Q6. ADK 支持接入 MCP(Model Context Protocol)服务器的主要意义是什么?
- A.让模型获得更强的推理能力
- B.将远程 MCP 工具挂载为本地工具,复用外部生态← 正确答案
- C.替代 Session 的会话管理功能
- D.提供模型训练的数据源
答案:B。MCP 是工具接入的开放标准,ADK 通过 mcp_toolset 让 Agent 直接调用符合 MCP 协议的远程工具(如 GitHub、数据库),避免针对每个服务手写 Python 客户端。它与模型推理、会话管理、训练数据无关。
Q7. 关于 ADK 的工具函数定义,以下哪些写法是正确的?(多选)
- A.函数必须附带 docstring,描述功能与参数含义← 正确答案
- B.参数必须声明 Python 类型注解← 正确答案
- C.docstring 可以省略,模型能自己推断函数用途
- D.函数返回值可以随意,不做约束
答案:AB。docstring 与类型注解是 ADK 生成函数调用 Schema 的依据——docstring 缺失会导致模型不知道何时调用该工具,类型缺失会导致 Schema 生成失败或参数类型错误,故 A、B 正确、C 错误。返回值虽不强制约束,但建议保持 JSON 可序列化以便模型读取,D 的「可以随意」过于绝对而非最佳实践。
Q8. 在 ADK 的多 Agent 编排中,「主管 Agent + 专家子 Agent」模式的核心特征是什么?
- A.所有子 Agent 并行执行相同任务
- B.主管 Agent 负责拆解任务并分发,专家 Agent 执行领域操作← 正确答案
- C.子 Agent 之间直接互相对话,主管不参与
- D.所有 Agent 共享同一份对话历史
答案:B。该模式中主管 Agent 接收用户请求,负责理解意图、拆解子任务,并根据路由逻辑将任务分配给不同领域的专家子 Agent;专家执行完后结果回流主管,由其汇总回复。它与并行执行(A)、子 Agent 自由对话(C)不同,各 Agent 有独立的 Session 上下文而非共享(D)。
Q9. 下面哪些工具调用失败的原因可以通过改进 @tool 函数定义解决?(多选)
- A.docstring 未描述函数功能,模型不确定何时调用← 正确答案
- B.参数缺少类型注解,Schema 生成失败← 正确答案
- C.模型 API Key 过期导致 401
- D.复杂参数未用 Pydantic 模型约束,参数传递出错← 正确答案
答案:ABD。工具定义改进能解决「描述不清、Schema 失败、参数结构不严谨」三类问题(A、B、D)。C 选项是凭据配置问题,与工具定义无关——修复 401 应检查 API Key 或切换 Vertex AI 凭据。A、B、D 是 ADK 工具开发中的高频错误点,D 中复杂嵌套参数强烈建议用 Pydantic 模型做结构化定义。
Q10. ADK 的 LiteLLM 兼容层解决了什么问题?
- A.让 ADK 能接入 100+ 非 Google 模型供应商← 正确答案
- B.替代 Vertex AI 的全部功能
- C.提供跨语言的 Agent 运行时
- D.让本地 Agent 无需网络即可运行
答案:A。LiteLLM 作为模型网关抽象层,让 ADK 的 @agent 只需修改 model 标识符(如 "anthropic/claude-3-5-sonnet")即可切换不同模型供应商,实现模型无关。它不替代 Vertex AI(B),不解决跨语言(C),也不能断开网络推理(D)。