每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/
【本周AI新闻: Llama 4 超大上下文Gooogle 开源 Agent SDK】 https://www.bilibili.com/video/BV1irdRYfEzx/
人工智能的世界正迅速从单一用途的模型迈向智能、自主的多智能体系统。然而,构建这些多智能体系统也带来了新的挑战。正因如此,我们在 Google Cloud NEXT 2025 上推出了全新的开源框架 —— Agent Development Kit(ADK)。该框架由 Google 开发,旨在简化从头到尾的代理系统开发过程。ADK 使得像你这样的开发者能够更灵活、更精准地构建可投入生产的代理应用。
ADK 是支撑 Google 内部产品如 Agentspace 和 Google 客户互动套件(CES)背后的框架。通过开源 ADK,我们希望为开发者提供强大、灵活的工具,以便在快速演变的智能体生态中构建解决方案。ADK 的设计具有极高的灵活性,可支持不同模型并适配不同部署环境。
ADK 的核心支柱:构建、交互、评估、部署
ADK 提供了涵盖整个代理开发生命周期的能力:
-
天生支持多智能体: 通过模块化方式构建可扩展的应用,在层级结构中组合多个专长智能体,实现复杂的协调和任务分派。
-
丰富的模型生态: 自由选择你需要的模型。ADK 支持任意模型,包括 Gemini 或通过 Vertex AI Model Garden 提供的模型,也支持 LiteLLM 集成,可使用来自 Anthropic、Meta、Mistral AI、AI21 Labs 等的模型。
-
强大的工具生态: 为代理配备多样化能力:使用预置工具(如 Search、Code Exec)、MCP(Model Context Protocol)工具、第三方库(如 LangChain、LlamaIndex),甚至可以使用其他代理作为工具(如 LangGraph、CrewAI)。
-
内建流式交互: 借助 ADK 独特的双向音频和视频流功能,与代理进行类似人类的对话。只需几行代码,即可构建自然的交互方式,突破文字限制,进入多模态对话时代。
-
灵活的编排机制: 使用流程代理(Sequential、Parallel、Loop)定义可预测的流水线,或借助 LLM 驱动的动态路由(如 LlmAgent transfer)实现自适应行为。
-
集成的开发体验: 通过强大的命令行工具(CLI)和可视化 Web UI,本地开发、测试与调试。可逐步查看事件、状态和代理执行过程。
-
内建评估功能: 可系统性地通过预定义测试用例评估代理的最终响应质量和执行路径。
-
简易部署: 可容器化代理并部署到任意环境。
快速上手:构建你的第一个代理
虽然我们推荐你查阅文档中的示例,但核心理念是“Pythonic 简洁”。你需要定义代理的逻辑、可调用的工具,以及其信息处理方式。ADK 提供结构用于管理状态、编排工具调用并与底层大语言模型(LLM)交互。
以下是一个基本代理的示例:
from google.adk.agents import LlmAgent
from google.adk.tools import google_search
dice_agent = LlmAgent(
model="gemini-2.0-flash-exp", # 必填:指定使用的 LLM
name="question_answer_agent", # 必填:代理名称
description="A helpful assistant agent that can answer questions.",
instruction="""Respond to the query using google search""",
tools=[google_search], # 指定可用工具
)
运行方式:使用 adk web
这个简单示例展示了基础结构。ADK 的优势在于支持复杂应用,包括多个代理、复杂工具调用和动态编排,同时保持对流程的精确控制。
ADK 提供多种交互方式:CLI、Web UI、API Server 和 Python API。你定义代理的方式(通常在 agent.py
中)始终一致,不同点仅在于交互方式如何发起和管理。
构建多智能体应用:Weather Agent 示例
让我们来看一个使用多代理协作的示例:WeatherAgent 负责天气查询,但当遇到问候语时会转交给 GreetingAgent。
步骤1:定义工具(Tool)
代理通过工具执行具体操作。以下为天气查询的工具定义:
def get_weather(city: str) -> Dict:
print(f"--- Tool: get_weather called for city: {city} ---")
city_normalized = city.lower().replace(" ", "")
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."},
}
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}'."}
步骤2:定义代理及其关系
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.",
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.",
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],
sub_agents=[greeting_agent, farewell_agent]
)
委派机制说明:
-
默认允许代理进行任务委派。
-
在处理用户消息时,LLM 会参考当前代理及其子代理的描述字段来决定是否进行委派。
-
如果某个代理的描述更契合当前任务(例如问候语),则自动进行转移。
完整生命周期:评估与部署
构建智能代理只是开始,将其可靠交付给用户才是目标。ADK 内建评估工具可用来系统性测试执行路径和响应质量,使用方式包括:
-
AgentEvaluator.evaluate()
编程方式集成测试套件; -
命令行工具:
adk eval
; -
Web UI。
部署方面,可将代理容器化并部署至任意环境,或使用 Vertex AI Agent Engine 进行托管部署,快速将原型转为可投入生产的企业级系统。
选择 ADK 还是 Genkit?
两者对比如下:
特性 | Agent Development Kit (ADK) | Genkit |
---|---|---|
主要用途 | 多智能体系统构建 | 泛用型 AI 体验构建 |
模型支持 | 集成 LiteLLM、Vertex AI、支持多模型 | Google AI、Vertex AI、插件生态支持 |
核心焦点 | 定义智能体行为和交互 | 提供底层构建模块 |
支持流式 | ✅ 双向音视频流 | ❌ |
选择建议:
-
复杂多智能体系统 → 使用 ADK。
-
灵活泛用 AI 应用 → 使用 Genkit。
ADK 在 Google Cloud 上的优势
尽管 ADK 可跨平台运行,但其在 Google Cloud 环境中有优化设计,特别是:
-
原生支持 Gemini 模型及 Vertex AI;
-
通过 Application Integration 使用超过 100 个预建连接器;
-
无需复制数据即可访问 AlloyDB、BigQuery、NetApp 数据;
-
可安全连接 Apigee 管理的现有 API。
用 ADK 构建下一代智能代理
Agent Development Kit(ADK)是构建下一代 AI 应用的强大开源基础设施,专为多智能体系统设计,具备以下优势:
-
精准控制代理行为和编排;
-
丰富的工具与生态集成;
-
一体化开发体验;
-
系统化的评估框架;
-
清晰的部署路径(支持托管);