谷歌开源代理开发工具包(Agent Development Kit,ADK):让多智能体应用的构建变得更简
每周跟踪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_searchdice_agent = LlmAgent(model="gemini-2.0-flash-exp", # 必填:指定使用的 LLMname="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 应用的强大开源基础设施,专为多智能体系统设计,具备以下优势:
-
精准控制代理行为和编排;
-
丰富的工具与生态集成;
-
一体化开发体验;
-
系统化的评估框架;
-
清晰的部署路径(支持托管);
相关文章:
谷歌开源代理开发工具包(Agent Development Kit,ADK):让多智能体应用的构建变得更简
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
0x01、Redis 主从复制的实现原理是什么?
Redis 主从复制概述 Redis 的主从复制是一种机制,允许一个主节点(主实例)将数据复制到一个或多个从节点(从实例)。通过这一机制,从节点可以获取主节点的数据并与之保持同步。 复制流程 开始同步…...
noscript 标签是干什么的
vue public目录下的 index.html 会有 <noscript> 标签不知道是干吗的。 其实 noscript 标签在不支持或是禁用JavaScript 的浏览器中显示替代的内容。这个元素可以包含任何 HTML 元素。这个标签的用法也非常简单: <noscript><strong>Were sorry …...
[创业之路-366]:投资尽职调查 - 尽调核心逻辑与核心影响因素:价值、估值、退出、风险、策略
目录 一、VC投资的本质是冒着不确定性风险进行买卖、生意,为了赚取高额回报 1、VC投资的核心本质 2、VC投资的运作机制 3、VC投资的风险与挑战 4、VC投资的底层逻辑 5、总结:VC投资的本质再定义 二、尽调核心逻辑 1、尽调的含义 2、尽调的逻辑方…...
MOP数据库中的EXPLAIN用法
EXPLAIN 是 SQL 中的一个非常有用的工具,主要用于分析查询语句的执行计划。执行计划能展示数据库在执行查询时的具体操作步骤,像表的读取顺序、使用的索引情况、数据的访问方式等,这有助于我们对查询性能进行优化。 语法 不同的数据库系统&…...
Hyprnote开源程序是一款记录和转录您会议的 AI 记事本。 本地优先且可扩展 。
一、软件介绍 文末提供源码下载学习 Hyprnote开源程序是一款记录和转录您会议的 AI 记事本。 从您的原始会议记录中生成强大的摘要,本地优先且可扩展 。使用开源模型 (Whisper & Llama) 离线工作,高度可扩展 ,由插…...
MSCKF及可观性总结
可观性 参考链接 真实VIO系统不能观的维度是4(位置和yaw角),由于EKF的转移和观测Jacobian矩阵的线性化点不同、不可观方向噪声的存在,实际MSCKF不能观的维度变成了3,绕重力轴的旋转(yaw角)被错…...
上篇:新能源轻卡城配物流经济/动力模式量化定义(理论篇)——数学暴力破解工程困局
副标题:用微分方程撕开模式切换本质,用传感器数据重构载重真相 引言:为什么轻卡模式定义比乘用车难10倍? 行业现状痛点: 中国新能源轻卡日均载重波动高达300%(空载0kg→满载4.5吨)某头部车企实…...
Ubuntu22环境下,Docker部署阿里FunASR的gpu版本
番外: 随着deepseek的爆火,人工智能相关的开发变得异常火爆,相关的大模型开发很常见的agent智能体需要ASR语音识别的功能,阿里开源的FunASR几乎是把一个商业的项目放给我们使用了。那么我们项目中的生产环境怎么部署gpu版本的语音识别服务呢?经过跟deepseek的一上午的极限…...
Python 实现最小插件框架
文章目录 Python 实现最小插件框架1. 基础实现项目结构plugin_base.py - 插件基类plugins/hello.py - 示例插件1plugins/goodbye.py - 示例插件2main.py - 主程序 2. 更高级的特性扩展2.1 插件配置支持2.2 插件依赖管理2.3 插件热加载 3. 使用 setuptools 的入口点发现插件3.1 …...
内网邮箱服务器搭建-详解
目录 一、背景 二、搭建邮箱需要具备的基础知识 1、smtp(Simple Mail Transfer Protocol) SMTP工作原理 SMTP 命令 SMTP 协议端口 2、pop3(Post Office Protocol) POP3特点 POP3工作原理 3、imap4(Internet M…...
21 天 Python 计划:使用SQLAlchemy 中的ORM查询
文章目录 准备工作图书表 books分类表 categoriesORM 对象定义 一、根据主键获取记录二、AND 查询三、 常用方法四、OR 查询五、 5. AND 和 OR 并存的查询六、巧用列表或者字典的解包给查询方法传参七、其它常用运算符八、查询指定列九、内连接、外连接9.1 内连接9.2 外连接9.3…...
使用 LLaMA-Factory 微调 llama3 模型(二)
使用 LLaMA-Factory 微调 llama3 模型 1. LLaMA-Factory模型介绍 https://github.com/hiyouga/LLaMA-FactoryLLaMA-Factory 是一个用于大型语言模型(LLM)微调的工具,它旨在简化大型语言模型的微调过程, 使得用户可以快速地对模型…...
并发编程--条件量与死锁及其解决方案
并发编程–条件量与死锁及其解决方案 文章目录 并发编程--条件量与死锁及其解决方案1.条件量1.1条件量基本概念1.2条件量的使用 2. 死锁 1.条件量 1.1条件量基本概念 在许多场合中,程序的执行通常需要满足一定的条件,条件不成熟的时候,任务…...
JAVA SE 自我总结
目录 1. 字面常量 2. 数据类型 3. 变量 4. 类型转换 5. 实参和形参的关系 6. 数组 6.1 数组的概念 6.2 动态初始化 6.3 静态初始化 7. 数据区 编辑 8. 数组的拷贝 8.1 赋值拷贝 8.2 方法拷贝 9. 代码块 10. 内部类 10.1 实例内部类 10.2 静态内部类 10.3 …...
RAG创建向量数据库:docsearch = FAISS.from_texts(documents, embeddings)
RAG创建向量数据库:docsearch = FAISS.from_texts(documents, embeddings) 代码解释 docsearch = FAISS.from_texts(documents, embeddings) 这行代码主要作用是基于给定的文本集合创建一个向量数据库(这里使用 FAISS 作为向量数据库工具 )。具体说明如下: FAISS :FAISS …...
虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解?
虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解? code review! 文章目录 虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解?理解这句话的关键点1.类(…...
鸢尾花分类的6种机器学习方法综合分析与实现
鸢尾花分类的6种机器学习方法综合分析与实现 首先我们来看一下对应的实验结果。 数据准备与环境配置 在开始机器学习项目前,首先需要准备编程环境和加载数据。以下代码导入必要的库并加载鸢尾花数据集: import numpy as np import pandas as pd impo…...
vite,Vue3,ts项目关于axios配置
一、安装依赖包 npm install axios -S npm install qs -S npm install js-cookie 文件目录 二、配置线上、本地环境 与src文件同级,分别创建本地环境文件 .env.development 和线上环境文件 .env.production # 本地环境 ENV = development # 本地环境接口地址 VITE_API_URL =…...
mysql:重置表自增字段序号
情况一:清空表数据后重置自增 ID 如果你希望清空表中的所有数据,并将自增 ID 重置为初始值(通常为 1) 1、truncate truncate table tb_dict; 2、delete 配合 alter 语句 delete from tb_dict; alter table tb_dict AUTO_INCR…...
STM32 模块化开发指南 · 第 4 篇 用状态机管理 BLE 应用逻辑:分层解耦的实践方式
本文是《STM32 模块化开发实战指南》第 4 篇,聚焦于 BLE 模块中的状态管理问题。我们将介绍如何通过有限状态机(Finite State Machine, FSM)架构,实现 BLE 广播、扫描、连接等行为的解耦与可控,并配合事件队列驱动完成主从共存、低功耗友好、状态清晰的 BLE 应用。 一、为…...
HTML — 浮动
浮动 HTML浮动(Float)是一种CSS布局技术,通过float: left或float: right使元素脱离常规文档流并向左/右对齐,常用于图文混排或横向排列内容。浮动元素会紧贴父容器或相邻浮动元素的边缘,但脱离文档流后可能导致父容器高…...
IP节点详解及国内IP节点获取指南
获取国内IP节点通常涉及网络技术或数据资源的使用,IP地址作为网络设备的唯一标识,对于网络连接和通信至关重要。详细介绍几种修改网络IP地址的常用方法,无论是对于家庭用户还是企业用户,希望能找到适合自己的解决方案。以下是方法…...
AD9253 LVDS 高速ADC驱动开发
1、查阅AD9253器件手册 2、查阅Xilinx xapp524手册 3、该款ADC工作在125Msps下,14bit - 2Lane - 1frame 模式。 对应:data clock时钟为500M DDR mode。data line rate:1Gbps。frame clock:1/4 data clock 具体内容:…...
pycharm2024.3.5版本配置conda踩坑
配置解释器是conda时,死活选不到自己的环境 看了很多,都是说要选scripts下的conda.exe 都没用 主要坑在于这是新版的pycharm 是配置condabin 下的 conda.bat 参考:PyCharm配置PyTorch环境(完美解决找不到Conda可执行文件python.exe问题) …...
【异常处理】Clion IDE中cmake时头文件找不到 头文件飘红
如图所示是我的clion项目目录 我自定义的data_structure.h和func_declaration.h在unit_test.c中无法检索到 cmakelists.txt配置文件如下所示: cmake_minimum_required(VERSION 3.30) project(noc C) #设置头文件的目录 include_directories(${CMAKE_SOURCE_DIR}/…...
14 - VDMA彩条显示实验
文章目录 1 实验任务2 系统框图3 硬件设计4 软件设计 1 实验任务 本实验任务是PS端写彩条数据至DDR3内存中,然后通过PL端的VDMA IP核将彩条数据通过HDMI接口输出显示。 2 系统框图 本实验是用HDMI接口固定输出1080P的彩条图,所以: rgb2lc…...
每天学一个 Linux 命令(13):touch
Linux 文件管理命令:touch touch 是 Linux 中一个简单但高频使用的命令,主要用于创建空文件或修改文件的时间戳(访问时间、修改时间)。它是文件管理和脚本操作的实用工具。 1. 命令作用 创建空文件:快速生成一个或多个空白文件。更新时间戳:修改文件的访问时间(Access …...
PromptUp 网站介绍:AI助力,轻松创作
1. 网站定位与核心功能 promptup.net 可能是一个面向 创作者、设计师、营销人员及艺术爱好者 的AI辅助创作平台,主打 零门槛、智能化的内容生成与优化。其核心功能可能包括: AI艺术创作:通过输入关键词、选择主题或拖放模板,快速生成风格多样的数字艺术作品(如插画、海报…...
高级java每日一道面试题-2025年3月26日-微服务篇[Nacos篇]-在Spring Cloud项目中如何集成Nacos?
如果有遗漏,评论区告诉我进行补充 面试官: 在Spring Cloud项目中如何集成Nacos? 我回答: 在Spring Cloud项目中集成Nacos,可以充分利用Nacos作为服务注册与发现中心以及配置管理中心的功能。以下是详细的步骤和说明,帮助你完成这一集成过程…...
