多 Agent 应用开发工具包发布
专为构建多 Agent 系统的开发工具包,降低系统复杂性,适合想开发复杂 Agent 应用的程序员。
专为构建多 Agent 系统的开发工具包,降低系统复杂性,适合想开发复杂 Agent 应用的程序员。
AI 的世界正在迅速从单一目的的模型向智能、自主的多 Agent 系统发展。然而,构建这样的多 Agent 系统带来了新的挑战。因此,在 2025 年 Google Cloud NEXT,我们推出了 Agent Development Kit (ADK)——Google 推出的一款新的开源框架,旨在简化 Agent 和多 Agent 系统的全栈端到端开发。ADK 使像你这样的开发者能够以更大的灵活性和精确控制来构建生产就绪的 Agent 应用。
ADK 是为 Google 产品(如 Agentspace 和 Google 客户互动套件 (CES))中的 Agent 提供支持的同一框架。通过开源 ADK,我们的目标是为开发者提供强大而灵活的工具,在快速演进的 Agent 生态系统中进行构建。ADK 设计得具有灵活性,支持不同的模型,并能够为不同的部署环境构建生产就绪的 Agent。
ADK 在整个 Agent 开发生命周期中提供功能:
多 Agent 设计:通过在层级结构中组合多个专业化 Agent,构建模块化和可扩展的应用。实现复杂的协调和委托。
丰富的模型生态系统:选择最适合你需求的模型。ADK 与你选择的模型配合使用——无论是 Gemini 还是通过 Vertex AI Model Garden 可访问的任何模型。该框架还提供 LiteLLM 集成,让你可以从 Anthropic、Meta、Mistral AI、AI21 Labs 等众多提供商提供的广泛模型选择中选择。
丰富的工具生态系统:为 Agent 配备多样化的功能:使用预构建的工具(Search、Code Exec)、Model Context Protocol (MCP) 工具、集成第三方库(LangChain、LlamaIndex)或甚至将其他 Agent 用作工具(LangGraph、CrewAI 等)。
内置流媒体:通过 ADK 独特的双向音频和视频流功能,以类人对话的方式与你的 Agent 交互。只需几行代码,你就可以创建自然互动,改变与 Agent 的工作方式——超越文本进入丰富的多模态对话。
灵活的编排:使用工作流 Agent(顺序、并行、循环)定义工作流以实现可预测的流水线,或利用 LLM 驱动的动态路由(LlmAgent 转移)实现自适应行为。
集成的开发者体验:使用强大的 CLI 和可视化 Web UI 进行本地开发、测试和调试。逐步检查事件、状态和 Agent 执行。
内置评估:通过根据预定义测试用例评估最终响应质量和逐步执行轨迹,系统地评估 Agent 性能。
轻松部署:容器化并在任何地方部署你的 Agent。
虽然我们鼓励你探索文档中的示例,但核心理念是 Python 式的简洁。你定义 Agent 的逻辑、它可以使用的工具以及它应该如何处理信息。ADK 提供了管理状态、编排工具调用和与底层 LLM 交互的结构。以下是一个基础 Agent 的说明性示例。
代码可在快速入门指南中找到。
from google.adk.agents import LlmAgent
from google.adk.tools import google_Search
dice_agent = LlmAgent(
model="gemini-2.0-flash-exp", # Required: Specify the LLM
name="question_answer_agent", # Requdired: Unique agent name
description="A helpful assistant agent that can answer questions.",
instruction="""Respond to the query using google search""",
tools=[google_search], # Provide an instance of the tool
)
# you can run this by using adk web
这个简单的示例展示了基本结构。当构建涉及多个 Agent、复杂工具使用和动态编排的更复杂应用时,ADK 真正大放异彩,同时保持控制。
ADK 提供了与 Agent 交互的方式的灵活性:CLI、Web UI、API 服务器和 API (Python)。定义 Agent 的方式(agent.py 中的核心逻辑)与你选择与其交互的方式无关。差异在于如何启动和管理交互。对于所有内容,你可以在 ADK 文档中找到示例。
当你超越单个 Agent,构建利用工具的协作多 Agent 系统时,ADK 真正大放异彩。想象创建一个专业化 Agent 团队,其中主 Agent 可以根据对话委托任务。ADK 通过层级结构和智能路由使这变得简单。
让我们通过一个说明性示例来了解一下——一个处理天气查询但将问候委托给专业化 GreetingAgent 的 WeatherAgent。
Agent 使用工具来执行操作。这里,我们的 WeatherAgent 需要一个获取天气数据的工具。我们定义一个 Python 函数;ADK 使用其文档字符串来理解何时以及如何使用它。
def get_weather(city: str) -> Dict:
# Best Practice: Log tool execution for easier debugging
print(f"--- Tool: get_weather called for city: {city} ---")
city_normalized = city.lower().replace(" ", "") # Basic input normalization
# Mock weather data for simplicity (matching Step 1 structure)
mock_weather_db = {
"newyork": {"status": "success", "report": "The weather in New York is sunny with a temperature of 25°C."},
"london": {"status": "success", "report": "It's cloudy in London with a temperature of 15°C."},
"tokyo": {"status": "success", "report": "Tokyo is experiencing light rain and a temperature of 18°C."},
"chicago": {"status": "success", "report": "The weather in Chicago is sunny with a temperature of 25°C."},
"toronto": {"status": "success", "report": "It's partly cloudy in Toronto with a temperature of 30°C."},
"chennai": {"status": "success", "report": "It's rainy in Chennai with a temperature of 15°C."},
}
# Best Practice: Handle potential errors gracefully within the tool
if city_normalized in mock_weather_db:
return mock_weather_db[city_normalized]
else:
return {"status": "error", "error_message": f"Sorry, I don't have weather information for '{city}'."}
我们使用 LlmAgent 来创建 Agent。密切注意 instruction 和 description 字段——LLM 严重依赖这些字段来理解角色和使用自动委托为子 Agent 做出委托决定。
greeting_agent = Agent(
model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
name="greeting_agent",
instruction="You are the Greeting Agent. Your ONLY task is to provide a friendly greeting to the user. " "Do not engage in any other conversation or tasks.",
# Crucial for delegation: Clear description of capability
description="Handles simple greetings and hellos",
)
farewell_agent = Agent(
model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
name="farewell_agent",
instruction="You are the Farewell Agent. Your ONLY task is to provide a polite goodbye message. "
"Do not perform any other actions.",
# Crucial for delegation: Clear description of capability
description="Handles simple farewells and goodbyes",
)
root_agent = Agent(
name="weather_agent_v2",
model="gemini-2.0-flash-exp",
description="You are the main Weather Agent, coordinating a team. - Your main task: Provide weather using the `get_weather` tool. Handle its 'status' response ('report' or 'error_message'). - Delegation Rules: - If the user gives a simple greeting (like 'Hi', 'Hello'), delegate to `greeting_agent`. - If the user gives a simple farewell (like 'Bye', 'See you'), delegate to `farewell_agent`. - Handle weather requests yourself using `get_weather`. - For other queries, state clearly if you cannot handle them.",
tools=[get_weather], # Root agent still needs the weather tool
sub_agents=[greeting_agent, farewell_agent]
)
默认的 Agent 行为是允许委托。
在处理用户消息时,LLM 考虑查询、当前 Agent 的描述以及相关 Agent(层级中定义的父/子 Agent)的描述字段。
如果 LLM 根据其描述确定另一个 Agent 更适合(例如,用户说"Hi",与 GreetingAgent 的描述匹配),它会启动转移。
清晰、独特的描述至关重要!LLM 使用它们来有效地路由任务。
在此设置中,如果用户以"Hi"开始,WeatherAgent(如果它是处理输入的根 Agent)可以识别出这不是天气查询,通过其描述查看 GreetingAgent 是否合适,并自动转移控制。如果用户问"芝加哥的天气如何?",WeatherAgent 使用其 get_weather 工具直接处理。
这个示例展示了 ADK 的层级结构和描述驱动的委托如何允许你构建有组织、可维护和复杂的多 Agent 应用。
构建像我们的天气 Agent 这样的智能 Agent 是基础性的,但可靠地将其交付给用户涉及关键的后续步骤:严格的评估和无缝部署。在上线之前,确保你的 Agent 表现可预测且正确至关重要。ADK 的集成评估工具正是为此设计的,让你能够根据预定义的数据集(如 evaluation.test.json 或 test.json)系统地测试执行路径和响应质量。你可以在测试套件中使用 AgentEvaluator.evaluate() 以编程方式运行这些检查。你也可以通过 ADK eval 命令行工具或通过 Web UI 直接使用评估。
一旦你对性能满意,ADK 通过部署到任何容器运行时或使用其与 Vertex AI Agent Engine 的集成,提供了清晰简化的生产路径。这使你可以利用完全托管、可扩展和企业级的运行时,完成开发生命周期,并使你能够从复杂的原型转向健壮的、生产就绪的 Agent 应用。
当你探索使用 ADK 构建多 Agent 系统的可能性时,你可能想知道它如何融入 Google 更广泛的 GenAI 开发工具生态。虽然有各种 SDK 和框架可用,如 Genkit 框架,但理解 ADK 的相对聚焦会有所帮助。以下是快速比较:
Agent Development Kit:
针对复杂 Agent 和多 Agent 系统进行了优化,为 Agent 开发提供了更高级别的抽象,内置了对 LiteLLM 的集成和 Vertex AI Model Garden,支持各种模型。
专注于定义 Agent 行为和交互。
支持双向流。
为构建各种 AI 驱动的体验提供基础构建块。
包括开发者工具,用于迭代、测试和调试你的 AI 相关交互。
支持来自 Google AI、Vertex AI 和通过社区插件来自第三方的各种大型语言模型。
最终,最佳选择取决于你的项目的具体目标。如果你在明确定义的框架内构建复杂的协作 Agent 系统,ADK 提供了强大的解决方案。对于许多其他需要灵活性和广泛模型支持的 GenAI 项目,Genkit 是一个绝佳的选择。
虽然 Agent Development Kit (ADK) 提供了与各种工具配合使用的灵活性,但它针对 Google Cloud 生态系统内的无缝集成进行了优化,特别是与 Gemini 模型和 Vertex AI。这种量身定制的设计使开发者能够充分利用 Gemini 的高级功能,如 Gemini 2.5 Pro 实验版中增强的推理和工具使用,并为将这些 Agent 部署到 Vertex AI 的完全托管企业级运行时提供了直接的本地路径以实现可扩展性。
至关重要的是,这种深度集成扩展到你更广泛的企业环境;ADK 使 Agent 能够通过超过 100 个预构建连接器直接连接到系统和数据,利用通过应用程序集成构建的工作流,并访问存储在 AlloyDB、BigQuery 和 NetApp 等系统中的数据而无需数据复制。
此外,使用 ADK 构建的 Agent 可以安全地利用你的组织通过 Apigee 管理的现有 API 投资,通过利用已建立的接口进一步增强其能力。
这种跨高级 AI 模型、可扩展部署、多样化数据源和现有 API 的全面连接在 Google Cloud 环境中使用时使 ADK 异常强大。
Agent Development Kit (ADK) 为构建下一代 AI 应用提供了强大、灵活和开源的基础。它通过提供以下功能解决了多 Agent 开发的核心挑战:
对 Agent 行为和编排的精确控制。
工具和集成的丰富生态系统。
用于构建和调试的集成开发者体验。
对可靠 Agent 至关重要的健壮评估框架。
清晰的部署路径,包括托管选项。
我们非常期待看到你用 ADK 构建什么!
探索代码:官方 ADK 文档。
开源框架