新手也能理解的 Agentic AI 系统入门,绝对让你大开眼界
Google 刚刚发布了全新的 Agent Development Kit(ADK)。如果你对构建 AI 智能体哪怕只有一点点好奇,这个工具你绝对不能错过。
你可能已经接触过像 AutoGen 或 CrewAI 这样的框架,它们可以把大型语言模型(LLM)强大地串联起来。而 ADK 也属于这个领域,但它带来了新的思路,主打实时多模态处理、智能体协作,以及极简的开发体验。
而且,它不仅仅是个科研玩具。ADK 基于 Google 自己用于生产环境的工程实践构建,用起来更像是一个现代化开发工具箱,而不是一个抽象的框架。
最惊人的是,不到 100 行代码,你就能搭建起一个拥有实时音视频处理、云端或本地部署、自带 UI 演练场的多智能体系统。
这篇文章将带你逐步了解,我是如何使用 ADK 构建了一个智能旅行规划师,过程中遇到了什么、有何惊喜,以及为什么我认为它非常值得一试——如果你对 AI 的未来发展感兴趣的话。
我们先从了解 ADK 是什么开始吧。
什么是 Google 的 Agent Development Kit(ADK)?
Google 最新推出的 Agent Development Kit(ADK) 是一个开源框架,目的是让构建先进 AI 智能体变得更简单、更快速、也更容易上手。
不用再东拼西凑各种工具和 API,ADK 提供了一个统一且即开即用的框架。
它有什么亮点呢?
- 模型无关性:你可以使用任何 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
如果安装成功,你会看到类似下面的输出。
这就说明 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 密钥。
- 访问 Google AI Studio(确保已登录你的 Google 账号)。
- 点击“获取 API 密钥”。
- 点击“创建 API 密钥”。
- 选择“在新项目中创建密钥”(如果已有项目,也可以选“在现有项目中创建”)。
- 复制生成的 API 密钥。
**重要提醒:绝不要把你的 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 里,其他字段(比如 name
、model
、description
、instruction
)都跟子智能体类似。新增的是 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 提供了几种不同的方式运行你的智能体:
- 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 集成来运行智能体,玩法多样,潜力无限,创造的空间也无限大!