Google ADK入门指南:从零到多智能体开发
掌握Google ADK,开启多Agent系统开发新纪元。核心内容:AI多Agent系统发展趋势与ADK的关键作用ADK核心能力:灵活组合、多Agent架构、模型无关性实战教程:从环境配置到构建首个ADK问答Agent从OpenAI的浏览器和代码解释功能,到Anthropic的Claude,AI正从
掌握Google ADK,开启多Agent系统开发新纪元。
核心内容:
- AI多Agent系统发展趋势与ADK的关键作用
- ADK核心能力:灵活组合、多Agent架构、模型无关性
- 实战教程:从环境配置到构建首个ADK问答Agent

从OpenAI的浏览器和代码解释功能,到Anthropic的Claude,AI正从单一Agent模型向复杂的协作多Agent系统演进——这是一段令人惊叹的变革之旅。
过去,构建这类复杂系统往往需要深厚的AI功底、漫长的开发周期以及繁琐的协调工作。直到2025年Google Cloud NEXT大会上,谷歌推出了Agent开发套件(Agent Development Kit, ADK)。这是一个开源框架,让开发者能够快速搭建Agent和多Agent系统,兼顾简单应用与高级场景。
ADK的意义在于,它是Agent技术民主化的重要里程碑。它为开发者提供了一整套工具和方法,用于实施、测试和部署能够独立解决复杂任务,或者与其他Agent协作的智能体。更令人振奋的是,谷歌自家产品(如Agentspace和客户参与套件CES)内部的Agent也采用了同一套框架。
接下来,我们直接进入实战环节——看看ADK如何使用,以及怎样用它构建强大的多Agent应用。我们会从搭建第一个Agent开始,探索可用的工具和模型生态,并突出那些能立即落地的实际场景。读完之后,你对ADK如何重塑智能系统的开发方式,应该会有一个扎实的理解。
了解ADK:核心能力
- 灵活可组合:自由选择组件,结构化组装Agent系统,没有任何模型或方法的限制。
- 多Agent架构:支持Agent之间协作、任务委派,能够实现类似专业AI团队那样的复杂目标。
- 模型无关性:兼容多种模型(Gemini、Claude、Llama等),并能集成Vertex AI和LiteLLM。
- 工具生态丰富:内置常用工具(搜索、代码执行),支持LangChain等外部库,还支持Agent嵌套(分层架构)。
- 双向流支持:内置音视频流,实现多模态自然交互。
- 灵活编排:结合结构化工作流(顺序/并行/循环)与LLM动态路由,平衡可靠性与适应性。
构建ADK Agent
要理解ADK的强大之处,最直接的方法就是动手编写一个基本Agent。我们从最简单的问答Agent开始,让它能够利用Google搜索回答查询。
设置你的环境
写代码之前,先搭建开发环境。ADK是Python框架,需要Python 3.8及以上版本。步骤如下:
# 创建虚拟环境
python -m venv adk-env
# 激活环境
source adk-env/bin/activate # Windows: adk-env\Scripts\activate
# 安装ADK
pip install google-adk
# 验证安装
adk --version
一个简单的问答Agent
现在来创建一个能用Google搜索回答问题的Agent。这个例子展示了ADK的简洁性,同时也体现了它与外部工具的集成能力:
from google.adk.agents import LlmAgent
from google.adk.tools import google_search
# 定义我们的问答Agent
qa_agent = LlmAgent(
model="gemini-2.0-flash-exp", # 指定使用的LLM
name="question_answer_agent", # 唯一名称
description="一个能够使用搜索回答问题的有用助手Agent。",
instruction="""使用Google搜索回应用户需要事实信息的查询。
在回应中保持简洁、直接和切中要点。""",
tools=[google_search], # 提供搜索工具
)
# 将此保存为agent.py
# 运行命令:adk web
这段代码创建了一个由Gemini 2.0 Flash驱动的Agent,它可以直接搜索网络来回答问题。仅用几行代码就实现了带搜索功能的Agent,ADK的简洁性可见一斑。
Agent交互
ADK提供了多种与Agent交互的方式。最快的是通过CLI或Web UI。启动Web UI运行:
# 使用web界面运行Agent
adk web
这会启动一个本地web服务器,带有聊天界面。Web UI还提供了调试工具,让你看到底层发生的一切:状态转换、工具调用、完整的执行跟踪。
构建多Agent系统
单个Agent固然有用,但ADK真正的亮点在于构建能够协作的多Agent系统。我们来做一个更灵活、更高级的设置:多个专业Agent可以互相委派任务。
天气助手系统
这个系统包含三个专业Agent:主要天气Agent负责回答天气查询,问候Agent负责响应欢迎消息,告别Agent负责响应告别消息。主Agent在适当时会把任务转交给专业Agent。下面是实现代码:
from google.adk.agents import Agent
from google.litellm import LiteLlm
# 定义一个获取天气数据的工具
def get_weather(city: str) -> dict:
print(f"获取天气:{city}")
# 模拟天气数据(生产环境调用真实API)
mock_weather_db = {
"newyork": {"status": "success", "report": "纽约的天气晴朗,温度为25°C。"},
"london": {"status": "success", "report": "伦敦多云,温度为15°C。"},
"tokyo": {"status": "success", "report": "东京正在经历小雨,温度为18°C。"},
}
city_normalized = city.lower().replace(" ", "")
if city_normalized in mock_weather_db:
return mock_weather_db[city_normalized]
else:
return {"status": "error", "error_message": f"Sorry, I don't ha ve weather information for '{city}'."}
# 为不同任务定义专业Agent
greeting_agent = Agent(
model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
name="greeting_agent",
instruction="你是问候Agent。你的唯一任务是向用户提供友好的问候。不要参与任何其他对话或任务。",
description="处理简单的问候和你好",
)
farewell_agent = Agent(
model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
name="farewell_agent",
instruction="你是告别Agent。你的唯一任务是提供礼貌的告别信息。不要执行任何其他操作。",
description="处理简单的告别和再见",
)
# 定义可以委派给专业Agent的主要天气Agent
root_agent = Agent(
name="weather_agent",
model="gemini-2.0-flash-exp",
description="""你是主要天气Agent,协调一个团队。
- 你的主要任务:使用`get_weather`工具提供天气。处理其'status'响应('report'或'error_message')。
- 委派规则:
- 如果用户给出简单问候(如'嗨','你好'),委派给`greeting_agent`。
- 如果用户给出简单告别(如'再见','下次见'),委派给`farewell_agent`。
- 使用`get_weather`自行处理天气请求。
- 对于其他查询,清楚说明你是否无法处理它们。""",
tools=[get_weather],
sub_agents=[greeting_agent, farewell_agent]
)
# 保存为weather_agent.py
# 运行命令:adk web --agent weather_agent.py
Agent委派如何工作
这套系统的精髓在于ADK的自动委派机制。收到用户消息时,LLM会根据查询内容、当前Agent的描述以及相关Agent的描述来决定如何处理。如果发现另一个Agent更擅长某项任务,就会发起转移。
举个例子:用户输入"嗨",根Agent识别出这不是天气查询,自动把控制权转给问候Agent。反过来,用户询问天气情况,根Agent通过自己的get_weather工具直接处理。
把复杂系统拆分成具有明确角色的专业Agent,这样维护和调试起来都轻松许多。每个Agent专注于做好一件事情,而不是试图包揽所有交互。
工具生态系统:扩展Agent能力
Agent需要工具才能与世界互动、完成任务。ADK提供了丰富的工具生态,可以大大扩展Agent的能力。下面看几个实际例子。
内置工具
ADK自带一些即开即用的工具:
- Google搜索:访问网络信息
- 代码执行:安全运行Python代码
- 文件操作:读取、写入和操作文件
- HTTP请求:进行API调用并检索数据
创建自定义工具
ADK的一大优势是能轻松创建自定义工具。本质上,工具就是一个带描述性文档字符串的Python函数。来看一个翻译工具:
def translate_text(text: str, target_language: str) -> str:
"""Translates the provided text into the target language.
Args:
text: The text to translate
target_language: The language code to translate to (e.g., 'es', 'fr', 'ja')
Returns:
The translated text or an error message
"""
# 生产环境中调用翻译API
mock_translations = {
('hello world', 'es'): 'hola mundo',
('hello world', 'fr'): 'bonjour le monde',
('hello world', 'ja'): 'こんにちは世界',
}
key = (text.lower(), target_language.lower())
if key in mock_translations:
return mock_translations[key]
else:
return f"Translation not a vailable for '{text}' to {target_language}"
# 在Agent中使用
from google.adk.agents import LlmAgent
translator_agent = LlmAgent(
model="gemini-2.0-flash-exp",
name="translator_agent",
description="A helpful assistant that can translate text between languages.",
instruction="You are a translation assistant. Use the translate_text tool to translate text into different languages.",
tools=[translate_text],
)
使用第三方集成
除了内置功能,ADK还支持与流行的AI/ML框架集成。
# 与LangChain集成的例子
from langchain.tools import Tool
from langchain.utilities import WikipediaAPIWrapper
wikipedia = WikipediaAPIWrapper()
wikipedia_tool = Tool(
name="wikipedia",
description="在Wikipedia上搜索信息",
func=lambda query: wikipedia.run(query)
)
# 包装以供ADK使用
from google.adk.tools import wrap_langchain_tool
adk_wikipedia_tool = wrap_langchain_tool(wikipedia_tool)
# 在Agent中使用
from google.adk.agents import LlmAgent
research_agent = LlmAgent(
model="gemini-2.0-flash-exp",
name="research_agent",
description="一个可以在Wikipedia上查找信息的研究助手。",
instruction="你是一个研究助手。使用Wikipedia查找用户询问的主题信息。",
tools=[adk_wikipedia_tool],
)
这种灵活性意味着你可以整合来自不同生态系统的工具,无论是原生ADK工具还是其他框架的任务,都能择优使用。
系统评估
ADK内置了评估框架,可以用现成的数据集对Agent进行系统化测试。这对回归测试和可维护性至关重要。
// 示例 evaluation.test.json
[
{
"input": "纽约的天气怎么样?",
"expected_output": "纽约的天气晴朗,温度为25°C。"
},
{
"input": "你好!",
"expected_output": "嗨!我今天能帮您什么忙?"
}
]
你可以通过CLI或编程方式运行评估:
# 通过CLI运行
adk eval --agent-file weather_agent.py --test-file evaluation.test.json
# 或通过编程方式
from google.adk.eval import AgentEvaluator
evaluator = AgentEvaluator(agent=root_agent)
results = evaluator.evaluate("evaluation.test.json")
print(f"准确率: {results.accuracy * 100}%")
for test_case, result in zip(results.test_cases, results.results):
print(f"测试: {test_case.input}")
print(f"预期: {test_case.expected_output}")
print(f"实际: {result.output}")
print(f"通过: {result.passed}")
print("---")
部署选项
ADK提供了多种将Agent部署到生产环境的方式。
容器部署
将ADK Agent容器化后,可以部署到任何支持Docker的平台:
# ADK Agent的Dockerfile
FROM python:3.9-slim
WORKDIR /app
# 安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制Agent代码
COPY weather_agent.py .
# 暴露端口
EXPOSE 8080
# 运行Agent
CMD ["adk", "server", "--agent", "weather_agent.py", "--port", "8080"]
Vertex AI Agent引擎
对于生产级部署,ADK与Vertex AI Agent引擎集成,提供完全托管的可扩展运行时,包含监控和日志等企业级功能:
from google.cloud import aiplatform
from google.adk.vertex import deploy_to_vertex
# Deploy your agent to Vertex AI
deploy_response = deploy_to_vertex(
agent_file="weather_agent.py",
project_id="your-gcp-project",
display_name="Weather Assistant",
location="us-central1",
)
print(f"Agent deployed to Vertex AI: {deploy_response.resource_name}")
这种部署方式非常适合需要处理大量流量的企业应用,能同时保证可靠性和性能。
实际应用
ADK的灵活性让它适用于多种实际场景。下面几个例子可以直接体现它的价值。
1. 企业知识助手
构建一个能搜索公司文档、回答员工问题、执行操作(如安排会议、生成报告)的多Agent系统。可以分别部署HR、IT、财务等领域的Agent,保持职责分离。
2. 电子商务购物助手
一个帮助查找产品、提供推荐、引导结账流程的购物助手。一个Agent学习产品属性,一个学习客户偏好,第三个负责处理购买流程。模块化设计带来流畅的用户体验。
3. 数据分析工作流
构建一个让数据科学家探索复杂数据集的Agent系统。一个Agent负责数据清洗,另一个运行统计分析,第三个生成可视化报告。将复杂的分析过程拆分成离散步骤,系统更健壮、更易维护。
4. 教育辅导员
开发自适应辅导系统,不同Agent处理不同学科或学习风格。协调Agent评估学生需求后分派给合适的专业辅导员。这种方法能实现大规模个性化教育。
结论
谷歌的Agent开发套件在推动多Agent AI系统可访问性方面迈出了重要一步。通过提供结构化的框架——内置构建、测试、部署工具——ADK消除了传统上阻碍Agent开发的许多障碍。
实际好处很明显:高级抽象加快开发速度,内置评估工具让系统更可靠,灵活的部署选项适应不同需求。能够创建高效协作的模块化专业Agent,为各行各业的AI应用打开了新的可能性。
随着AI格局不断向更多Agent系统演进,像ADK这样的框架将在民主化技术访问方面扮演关键角色。无论你是搭建简单的助手还是复杂的多Agent系统,ADK都提供了所需的积木,让你用更少的精力创建更智能、更实用的应用。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:Google ADK入门指南:从零到多智能体开发要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点Qwen3通过全谱系模型(0 6B至235B)、混合推理与真开源策略,满足从端侧到云端多样化部署需求,支持Agent开发与低代码构建。其技术突破与产业验证提振了AI应用投资信心,成为开发者与企业的理想基座模型。
对于绝大多数个人、企业乃至整个社会来说,最重要的资产是什么?答案可能会让人有些意外——是知识。 今天,知识这种无形的智力资产,已经在财富创造中占据了主导地位。它不仅能直接带来收益,比如技能、专利、许可、品牌等创新成果,还能融入文化、体系和业务流程,帮企业构建持久的竞争优势。 正因如此,有学者指出,工
先聊几句背景。建筑行业一直是一个“慢变量”的领域——项目周期长、参与方众多、信息碎片化问题严重。但随着AI大模型的爆发,越来越多的人开始认真思考:这个传统行业究竟能否真正实现“智能化”?答案是肯定的,但关键要走对路径。今天,我们以知识图谱这一技术基石为切入点,探讨它如何在建筑垂直领域助力大模型真正落
清华大学提出集成衍射光子神经网络芯片,利用亚波长结构突破集成度瓶颈,实现计算单元大规模片上拓展。该芯片计算吞吐量达1 38×10⁴TOPS,算力密度10¹⁶FLOPS mm²,能耗仅10⁻¹⁷J FLOP,具有完全自主知识产权并与CMOS工艺兼容。
- 日榜
- 周榜
- 月榜
热点快看
