当前位置: 首页 » AI » AI Agent » 从零到高手:我用 Google ADK 在 100 行代码内打造了一个强大的 AI 智能体

从零到高手:我用 Google ADK 在 100 行代码内打造了一个强大的 AI 智能体

新手也能理解的 Agentic AI 系统入门,绝对让你大开眼界

图片由作者设计

Google 刚刚发布了全新的 Agent Development Kit(ADK)。如果你对构建 AI 智能体哪怕只有一点点好奇,这个工具你绝对不能错过。

你可能已经接触过像 AutoGenCrewAI 这样的框架,它们可以把大型语言模型(LLM)强大地串联起来。而 ADK 也属于这个领域,但它带来了新的思路,主打实时多模态处理智能体协作,以及极简的开发体验

而且,它不仅仅是个科研玩具。ADK 基于 Google 自己用于生产环境的工程实践构建,用起来更像是一个现代化开发工具箱,而不是一个抽象的框架。

最惊人的是,不到 100 行代码,你就能搭建起一个拥有实时音视频处理云端或本地部署自带 UI 演练场的多智能体系统。

这篇文章将带你逐步了解,我是如何使用 ADK 构建了一个智能旅行规划师,过程中遇到了什么、有何惊喜,以及为什么我认为它非常值得一试——如果你对 AI 的未来发展感兴趣的话。

我们先从了解 ADK 是什么开始吧。

什么是 Google 的 Agent Development Kit(ADK)?

Google 最新推出的 Agent Development Kit(ADK) 是一个开源框架,目的是让构建先进 AI 智能体变得更简单、更快速、也更容易上手

不用再东拼西凑各种工具和 API,ADK 提供了一个统一且即开即用的框架。

它有什么亮点呢?

截图来自 Google Developers 的Introducing Agent Development Kit
  • 模型无关性:你可以使用任何 AI 模型,包括 Google 自家的 Gemini 系列,自由选择最适合的模型。
  • 部署灵活:无论是本地开发还是部署到 Google Cloud,ADK 都不会限制你的选择。
  • 天生兼容:很容易与现有服务、工具,甚至其他框架开发的智能体集成。

了解了 ADK 的特点之后,是时候动手实践了。不论你是新手还是想挑战智能体的极限,这里都是你起步的地方。我们开始吧!

第 1 步:搭建开发环境

在开始写代码之前,先搭建一个干净的开发环境。Google 的 ADK 是以Python 包的形式提供的,推荐使用虚拟环境来避免包冲突,保持项目整洁。

在你的项目目录下运行以下命令:

python -m venv .venv  # Windows 或 Python 已正确指向版本时
python3 -m venv .venv # macOS/Linux

然后根据你的操作系统激活虚拟环境:

# macOS / Linux
source .venv/bin/activate

# Windows (CMD)
.venv\Scripts\activate.bat

# Windows (PowerShell)
.venv\Scripts\Activate.ps1

第 2 步:安装 ADK

虚拟环境激活后,安装 ADK:

pip install google-adk

安装完成后,可以通过以下命令确认(可选但推荐):

pip show google-adk

如果安装成功,你会看到类似下面的输出。

截图:成功安装后运行 pip show google-adk 的结果(由作者拍摄)

这就说明 ADK 安装成功,可以开始使用啦!


第 3 步:设置项目结构

安装好 ADK 后,接下来要搭建 Python 项目的基础结构,用来管理你的各个智能体。

首先,创建一个新的项目文件夹,比如我这里创建了一个叫 travel_planner 的文件夹。在里面再建立两个子目录,分别是 subagents(存放不同的子智能体模块)和 tools(存放工具函数和数据结构)。

整体结构如下:

travel_planner/
└── travel_planner/
    ├── .env                    # 存放环境变量(比如 API 密钥)
    ├── agent.py                # 主协调器,负责分配任务给子智能体
    ├── subagents/              # 子智能体模块文件夹
    │   ├── flight_agent.py     # 航班搜索与推荐
    │   └── hotel_agent.py      # 酒店搜索与预订
    ├── tools/                  # 工具函数与数据结构
    │   ├── schemas.py          # 使用 Pydantic 定义统一数据格式
    └── __init__.py             # 让 travel_planner 成为 Python 包

暂时不用着急创建所有这些文件,我们接下来会一步步一起完成。


第 4 步:从 Google AI Studio 获取 API 密钥

在写代码之前,先配置好环境,让你的应用能安全地连接到用于驱动智能体的 Gemini 大语言模型

虽然本指南用的是 Google AI Studio 的 Gemini,你其实也可以通过类似 LiteLLM 的工具连接到 OpenAI、Anthropic 等其他 LLM。如果你需要关于这些的教程,欢迎在评论区告诉我!

在你的 travel_planner 根目录下,创建一个 .env 文件,用来存放认证信息和配置参数。

但在这之前,先去申请一个 API 密钥

  1. 访问 Google AI Studio(确保已登录你的 Google 账号)。
  2. 点击“获取 API 密钥”。
截图:Google AI Studio 页面(由作者拍摄)
  1. 点击“创建 API 密钥”。
截图:Google AI Studio 页面(由作者拍摄)
  1. 选择“在新项目中创建密钥”(如果已有项目,也可以选“在现有项目中创建”)。
截图:Google AI Studio 页面(由作者拍摄)
  1. 复制生成的 API 密钥。
截图:Google AI Studio 页面(由作者拍摄)

**重要提醒:绝不要把你的 API 密钥上传到代码仓库或者公开分享。把它当作密码一样保护!


第 5 步:配置 .env 文件

现在用你喜欢的编辑器打开项目,我这里用的是 Visual Studio Code

编辑刚才创建的 .env 文件,添加以下内容:

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=YOUR_ACTUAL_API_KEY_HERE

YOUR_ACTUAL_API_KEY_HERE 替换成你刚刚复制的 API 密钥


第 6 步:定义旅行请求的数据结构

为了保证各个智能体能统一沟通,我们用 Pydantic 定义一个“旅行请求”的数据格式,比如出发地、目的地、出发时间、预算等等。

tools 文件夹下新建一个文件,命名为 schemas.py,写入以下代码:

from pydantic import BaseModel

class TravelInfo(BaseModel):
    origin: str
    destination: str
    start_date: str
    end_date: str
    budget_amount: float
    budget_currency: str

这小段代码定义了旅行请求的“规范”,每个子智能体都会按照这个结构来理解和处理数据。可以把它想象成系统内部通用的语言。

如果你对 Pydantic 不熟悉也没关系,这里我们只是用它来确保数据格式统一,让系统更稳定,减少出错。

第 7 步:创建子智能体

搜索工具准备好了,现在来搭建具体的子智能体!这些智能体分别专注于特定任务,比如查找航班或预订酒店。

我们将使用 ADK 的 Agent 类,快速创建并连接到 Gemini API。每个子智能体都有自己明确的职责和执行逻辑。

智能体的组成要素:

  • name:智能体的名字,用来区分。
  • model:我们这里用的是 “gemini-2.0-flash-exp”,你也可以根据需要换别的模型。
  • description:智能体的简短描述,相当于它的“职位简介”。
  • instructions:行为指令,告诉智能体该怎么工作。
  • tools:执行任务所需的辅助工具(本项目为了简单,暂时用假数据,不接入真实搜索工具)。

下面正式开始:

1. 航班智能体(subagents/flight_agent.py)

subagents 文件夹下新建 flight_agent.py,写入以下代码:

from google.adk import Agent

flight_agent = Agent(
    name="flight_agent",
    model="gemini-2.0-flash-exp",
    description="根据出发地、目的地、日期和预算推荐航班。",
    instruction="""
                  你是一位航班预订助手。你将接收以下信息:
                  - 出发地
                  - 目的地
                  - 出发日期
                  - 返回日期
                  - 预算金额
                  - 预算货币

                  请返回 1-2 个假设的航班选项,包括:
                  - 航空公司名称
                  - 出发和返回的日期/时间
                  - 价格(指定货币)
                  - 舱位(经济舱/商务舱)

                  确保总价不超过预算。
                 """
)

2. 酒店智能体(subagents/hotel_agent.py)

同样,在 subagents 文件夹下新建 hotel_agent.py,内容如下:

from google.adk import Agent

hotel_agent = Agent(
    name="hotel_agent",
    model="gemini-2.0-flash-exp",
    description="根据目的地、日期和预算推荐酒店。",
    instruction="""
                  你是一位酒店预订助手。你将接收以下信息:
                  - 目的地
                  - 入住日期
                  - 离店日期
                  - 预算金额
                  - 预算货币

                  请返回 1-2 个假设的酒店选项,包括:
                  - 酒店名称
                  - 每晚房价与总价(指定货币)
                  - 主要设施特色

                  确保总价符合预算。
                 """
)

这里发生了什么?

  • 航班智能体:专注于用提供的信息找出合适的航班推荐。
  • 酒店智能体:专门根据目的地、入住时间和预算,推荐酒店。

第 9 步:搭建协调器智能体

现在你已经有了航班智能体酒店智能体,接下来要创建一个“总指挥”——协调器智能体(Coordinator Agent)
它是整个系统的核心,负责直接与用户交互,根据用户自然语言的输入提取关键信息,然后把具体任务分配给子智能体。

协调器智能体的主要职责:

  • 理解用户需求:从自然语言中提取出出发地、目的地、日期、预算等信息。
  • 补充信息:如果用户没提供足够信息,比如没说清楚出发日期或货币单位,协调器会主动询问或使用默认值。
  • 分配任务:一旦信息齐全,分别交给航班和酒店智能体处理。
  • 整合结果:最终生成完整的旅行规划,包括航班、酒店、预算估算和建议行程。

下面是在 travel_planner/agent.py 文件中定义协调器智能体的代码(注意,不是子智能体目录,而是主目录!):

from google.adk import Agent
from travel_planner.subagents.flight_agent import flight_agent
from travel_planner.subagents.hotel_agent import hotel_agent
from travel_planner.tools.schemas import TravelInfo
from datetime import datetime, timedelta

today = datetime.today().date()

coordinator_agent = Agent(
    name="TravelCoordinator",
    model="gemini-2.0-flash-exp",
    description="主协调器,收集旅行偏好并与子智能体协作完成任务。",
    instruction=f"""
                    你是一个旅行规划协调员。
                    你的任务是从用户那里收集旅行偏好,并协调子智能体提供航班、酒店建议及行程安排。
                    用户会用自然语言描述需求,你需要提取以下信息:

                    注意:机票和酒店的总预算不能超过用户提供的总预算。
                    如果用户只说了“下周”、“下个月”这种模糊时间,请以今天 {today} 为基准推算具体日期。

                    第 1 步:提取以下细节:
                    - 出发地(origin)
                    - 目的地(destination)
                    - 出发日期(start_date,格式:YYYY-MM-DD)
                    - 返回日期(end_date,格式:YYYY-MM-DD)
                    - 预算金额(budget_amount,数值)
                    - 预算货币(budget_currency,例如 USD、LKR、$)

                    第 2 步:如果有信息缺失:
                    - 出发日期缺失时,询问是否默认用今天 {today},或请用户指定日期。
                    - 返回日期缺失但有天数时,根据出发日期推算;若出发日期也没有,则询问或默认今天。
                    - 若未指定货币单位,默认用 "USD"。

                    第 3 步:确认收集到的旅行需求信息,若有歧义,主动与用户确认。

                    第 4 步:将数据分派给子智能体:
                    - 发送给 `flight_agent` 获取航班建议
                    - 发送给 `hotel_agent` 获取酒店建议

                    第 5 步:整合并展示最终结果,包括:
                    - 旅行摘要(出发地、目的地、日期、预算等)
                    - 航班推荐
                    - 酒店推荐
                    - 预算估算
                    - 简单的日程安排(包含活动推荐)

                    与用户沟通时要简洁、清晰、友好。如果遇到信息不完整,请主动询问补充。
                 """,
    sub_agents=[flight_agent, hotel_agent]
)

root_agent = coordinator_agent

协调器智能体的核心是什么?

Coordinator Agent 里,其他字段(比如 namemodeldescriptioninstruction)都跟子智能体类似。新增的是 sub_agents 参数

  • sub_agents:就是指航班智能体和酒店智能体,协调器会把用户需求拆分给它们处理,再把结果合并,给用户一份完整的旅行规划。

此外,我们把协调器定义为 root_agent,意味着它是整个系统的入口点,用户的所有交互都会从它开始。

第 10 步:创建 __init__.py

最后一小步!

为了让你的 travel_planner 目录成为一个完整的 Python 包,需要创建一个空的 __init__.py 文件。

不过我们可以顺便在里面导入 root_agent,方便其他地方调用。

travel_planner/__init__.py 文件中添加:

from . import agent

至此,你的模块化多智能体旅行规划系统已经搭建完成了!🎉

如何运行你的智能体:多种交互方式

现在所有智能体都就绪了,是时候看看它们如何运作了!Google ADK 提供了几种不同的方式运行你的智能体:

截图来自 Google Developers 的Getting started with Agent Development Kit
  • ADK CLI:最简单直接的方法,用终端命令快速运行智能体。
  • ADK Web:超酷!自带一个基于 Angular 的交互式网页界面,可以文本、语音、视频方式与智能体互动。
  • ADK API Server:如果需要和其他应用集成,可以把智能体通过 REST API 的形式暴露出去。
  • 程序调用(Programmatic Call):如果你在写自己的程序,可以直接通过代码调用智能体。

不同方式各有优劣,具体选择取决于你的需求。这篇文章演示的是使用 ADK Web,因为它既直观又容易上手。如果你喜欢命令行,也可以直接用下面的命令运行:

adk run travel_planner

看它运行起来吧:使用 ADK Web 启动你的旅行智能体!

现在,我们来通过 ADK Web 看看我们打造的旅行协调智能体如何实际运作!
这种方式可以让你通过交互式网页界面测试智能体的功能,观察它是如何管理航班和酒店推荐的。

在终端中,进入你的项目父目录(即包含 travel_planner 文件夹的目录),然后运行以下命令:

adk web

你应该会看到类似下面的结果:

截图:命令行界面(由作者拍摄)

按住 CTRL(Mac 上是 CMD),点击 http://localhost:8000,这会在浏览器中打开一个本地服务器。

你将看到一个界面如下:

截图:浏览器上的交互界面(由作者拍摄)

在界面左上角的下拉菜单中,选择你的智能体:“travel_planner”

截图:浏览器上的交互界面(由作者拍摄)

然后,你就可以在文本框里直接跟旅行规划师智能体聊天了!甚至还能用麦克风进行语音交互!

截图:浏览器上的交互界面(由作者拍摄)

除此之外,你还能查看每一次函数调用、响应结果、模型输出等详细过程,只需点击界面上的操作项即可查看细节。

截图:浏览器上的交互界面(由作者拍摄)

总结

到这里,你已经成功搭建并运行了一个多智能体旅行规划系统!🎉
可以看到,使用 Google 的 Agent Development Kit(ADK),从环境搭建到智能体交互,整个过程都变得非常简单顺畅。

虽然这篇指南内容比较多、稍微有点长,但我尽量以最通俗易懂的方式进行讲解,目的是希望让你打下一个扎实的基础,方便以后进一步扩展或者深入开发更高级的 AI 智能体系统。

有了这套系统,你可以自由扩展,比如:

  • 增加更多子智能体(比如景点推荐、美食推荐等)
  • 集成新的外部 API
  • 调整智能体的行为逻辑
  • 打造个性化的用户体验

ADK 的灵活性让你可以根据自己的需求,自由发挥和创新。

无论你是通过网页界面、命令行,还是 API 集成来运行智能体,玩法多样,潜力无限,创造的空间也无限大!

滚动至顶部