Agent Development Kit (ADK)¶
无缝构建、评估和部署智能体!
ADK 旨在帮助开发者构建、管理、评估和部署 AI 驱动的智能体。它为创建会话式和非会话式智能体提供了一个强大而灵活的环境,能够处理复杂的任务和工作流程。
核心概念¶
ADK 围绕几个关键原语和概念构建,这使其强大而灵活。以下是基本要素:
- 智能体: 为特定任务设计的基本工作单元。智能体可以使用语言模型(
LlmAgent
)进行复杂推理,或作为执行的确定性控制器,这些被称为"工作流智能体"(SequentialAgent
、ParallelAgent
、LoopAgent
)。 - 工具: 赋予智能体超越对话的能力,让它们能够与外部 API 交互、搜索信息、运行代码或调用其他服务。
- 回调: 你提供的在智能体处理过程中特定点运行的自定义代码片段,用于检查、日志记录或行为修改。
- 会话管理(
Session
和State
): 处理单个对话(Session
)的上下文,包括其历史记录(Events
)和智能体用于该对话的工作内存(State
)。 - 记忆: 使智能体能够在多个会话中回忆用户信息,提供长期上下文(区别于短期会话
State
)。 - 资源管理(
Artifact
): 允许智能体保存、加载和管理与会话或用户相关的文件或二进制数据(如图片、PDF)。 - 代码执行: 智能体(通常通过工具)生成和执行代码以执行复杂计算或操作的能力。
- 规划: 一种高级能力,智能体可以将复杂目标分解为更小的步骤,并规划如何实现它们,如 ReAct 规划器。
- 模型: 为
LlmAgent
提供动力的底层 LLM,支持其推理和语言理解能力。 - 事件: 表示会话期间发生的事情(用户消息、智能体回复、工具使用)的基本通信单元,形成对话历史。
- 运行器: 管理执行流程的引擎,基于事件协调智能体交互,并与后端服务协调。
注意: 多模态流式处理、评估、部署、调试和追踪等功能也是更广泛的 ADK 生态系统的一部分,支持实时交互和开发生命周期。
主要功能¶
ADK 为开发者构建智能体应用程序提供了几个关键优势:
- 多智能体系统设计: 轻松构建由多个专业智能体组成的分层应用程序。智能体可以协调复杂任务,使用 LLM 驱动的转移或显式
AgentTool
调用来委派子任务,实现模块化和可扩展的解决方案。 - 丰富的工具生态系统: 为智能体配备多样化的能力。ADK 支持集成自定义函数(
FunctionTool
)、使用其他智能体作为工具(AgentTool
)、利用内置功能如代码执行,以及与外部数据源和 API(如搜索、数据库)交互。对长时间运行工具的支持允许有效处理异步操作。 - 灵活的编排: 使用内置的工作流智能体(
SequentialAgent
、ParallelAgent
、LoopAgent
)和 LLM 驱动的动态路由定义复杂的智能体工作流。这允许既有可预测的管道,又有自适应的智能体行为。 - 集成的开发者工具: 轻松进行本地开发和迭代。ADK 包括命令行界面(CLI)和开发者 UI 等工具,用于运行智能体、检查执行步骤(事件、状态变化)、调试交互和可视化智能体定义。
- 原生流式支持: 通过原生支持双向流式传输(文本和音频)构建实时交互体验。这与底层功能(如 Gemini Developer API 的多模态实时 API,或用于 Vertex AI 的 API)无缝集成,通常只需简单的配置更改即可启用。
- 内置智能体评估: 系统地评估智能体性能。该框架包括创建多轮评估数据集的工具,并可以在本地(通过 CLI 或开发 UI)运行评估以衡量质量并指导改进。
- 广泛的 LLM 支持: 虽然针对 Google 的 Gemini 模型进行了优化,但该框架设计灵活,通过其
BaseLlm
接口允许集成各种 LLM(可能包括开源或微调模型)。 - 资源管理: 使智能体能够处理文件和二进制数据。该框架提供机制(
ArtifactService
、上下文方法)让智能体在执行过程中保存、加载和管理版本化的资源,如图片、文档或生成的报告。 - 可扩展性和互操作性: ADK 促进开放生态系统。在提供核心工具的同时,它允许开发者轻松集成和重用来自其他流行智能体框架(包括 LangChain 和 CrewAI)的工具。
- 状态和记忆管理: 自动处理由
SessionService
管理的短期对话记忆(Session
中的State
)。为长期Memory
服务提供集成点,允许智能体在多个会话中回忆用户信息。
开始使用¶
- 准备构建你的第一个智能体?试试快速入门