标准回答
定义
ADK(Agent Development Kit)是 Google 于 2025 年开源的 Agent 开发框架,目标是把"写一个生产级 Agent"工程化,提供 Python 与 Java 两套 SDK。它强调两个"无关":模型无关(默认对 Gemini 优化,但通过统一接口也能接其它模型)和部署无关(本地、容器、Cloud Run 或 Vertex AI Agent Engine 都能跑)。
编排模型(核心特色)
ADK 把 Agent 分两大类组合使用:
- LlmAgent:靠大模型推理来动态决策——该调哪个工具、要不要转交别的 Agent、何时结束,行为是非确定性的、灵活的。
- Workflow agents:用代码定义确定性的控制流,包含 Sequential(顺序)、Parallel(并行)、Loop(循环)三种。它们本身不靠 LLM 决策,而是稳定地编排子 Agent 的执行顺序。
两者可以分层嵌套,组成可预测又有智能的多 Agent 系统:用 Workflow 保证流程骨架稳定,用 LlmAgent 在节点上做灵活判断。
配套能力
- 工具生态:内置工具、可把 Python 函数直接当工具、支持 OpenAPI 规范、能把第三方库(如 LangChain/CrewAI 的工具)和"别的 Agent"也当成工具调用。
- 会话与状态:Session、Memory、State 管理对话历史与跨轮上下文。
- 评估:内置 evaluation,能对 Agent 的最终结果和执行轨迹(调了哪些工具)做系统化测试。
- 生态集成:与 A2A 协议互通实现跨框架 Agent 协作,与 Gemini / Vertex AI 及 Agent Engine 部署无缝衔接。
- LangGraph:以图(节点+边+状态)为核心,最底层、最灵活,适合需要精细控制流转与回环的复杂场景,但上手成本高。
- CrewAI:以"角色扮演 + 协作团队"为抽象,高层、易上手,快速搭多 Agent 协作,但精细控制偏弱。
- ADK:处在两者之间——既有 Workflow agents 提供的确定性编排骨架,又有 LlmAgent 的灵活智能,外加 Google 云与 A2A 的生态加持,适合想要工程化、可评估、可上云的团队。
常见误区
⚠️ 常见踩坑
别误以为 ADK 只能配 Gemini 或必须绑死 Google Cloud——它设计上模型无关、部署无关,可接其它模型、也能本地或自有环境部署;Gemini/Vertex 只是"一等公民"而非唯一选项。
追问
追问 1:ADK 里 LlmAgent 和 Workflow agents 的区别是什么?什么时候用哪个?
区别在"谁来决定下一步"。
LlmAgent 把控制权交给大模型:每一步由模型根据上下文推理决定调哪个工具、是否转交、何时收尾,行为非确定。适合开放式、需要灵活判断的任务,比如客服对话、研究助手。
Workflow agents(Sequential/Parallel/Loop)把控制流写死在代码里,不靠 LLM 做流程决策,执行可预测、可复现。适合流程明确的场景:先抽取再校验再汇总(Sequential)、多路并发取数据(Parallel)、反复迭代直到满足条件(Loop)。
实践中常组合:外层用 Workflow 锁定主干流程的稳定性,主干的某个节点放一个 LlmAgent 去做需要"动脑"的部分。这样兼顾可控与智能。
追问 2:ADK 怎么把"别的 Agent"当成工具或子 Agent 来用?这和 A2A 是一回事吗?
ADK 内部支持两种复用方式:一是 sub-agent / agent transfer,父 Agent 可以把任务转交给同一应用内定义的子 Agent;二是把一个 Agent 包装成 AgentTool,让另一个 Agent 像调工具一样调用它。这些都发生在同一框架、同一进程的内部编排层面。
而 A2A 解决的是跨框架、跨厂商、跨网络的 Agent 协作——通过 AgentCard 发现、用 HTTP/JSON-RPC 通信,对方可能根本不是 ADK 写的。
所以不是一回事:ADK 内部编排是"自己人协作",A2A 是"和外部 Agent 握手协作"。ADK 提供了对 A2A 的支持,让你既能在内部分层编排,又能对外用 A2A 接入别人的 Agent。
追问 3:相比 LangGraph,团队为什么可能选 ADK?反过来呢?
选 ADK 的理由:想要更快进入"能跑、能评、能上云"的工程闭环——它自带会话/记忆/状态、内置评估、Sequential/Parallel/Loop 的现成编排原语,以及和 Vertex AI / Agent Engine 部署、A2A 协作的生态整合。对已经在 Google Cloud 或重视开箱即用工程能力的团队友好。
选 LangGraph 的理由:需要对状态机和控制流做极细粒度的掌控(复杂回环、条件分支、人工介入断点、自定义持久化),LangGraph 的图抽象更底层、更灵活,生态与社区也更成熟,不绑定特定云。
一句话:要"可控的灵活底盘"偏 LangGraph,要"工程化的成套件 + Google 生态"偏 ADK。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习