ADK-Rust 简介
Agent Development Kit(ADK)是一个灵活且模块化的框架,用于开发和部署 AI agent。虽然它针对 Gemini 和 Google 生态系统进行了优化,但 ADK 与模型无关、与部署无关,并且为与其他框架兼容而构建。ADK 的设计目标是让 agent 开发更像软件开发,使开发者更容易创建、部署和编排从简单任务到复杂工作流的 agentic 架构。
注意: ADK-Rust 需要 Rust 1.95.0 或更高版本。
安装
将 ADK-Rust 添加到你的项目中:
cargo add adk-rust
或者将其添加到你的 Cargo.toml 中:
[dependencies]
adk-rust = "2.0.0"
tokio = { version = "1.40", features = ["full"] }
快速示例
use adk_rust::prelude::*;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
let agent = LlmAgentBuilder::new("assistant")
.description("A helpful AI assistant")
.model(Arc::new(model))
.build()?;
println!("Agent '{}' ready!", agent.name());
Ok(())
}
架构概览
ADK-Rust 使用分层架构,旨在实现模块化和可扩展性:
核心概念
ADK-Rust 围绕几个关键原语构建,它们协同工作以创建强大的 AI agent:
Agents
为特定任务设计的基本工作单元。ADK-Rust 提供了几种 agent 类型:
- LlmAgent:使用大语言模型进行推理和决策。这是大多数用例的主要 agent 类型。
- RealtimeAgent:支持语音的 agent,使用 OpenAI Realtime API 或 Gemini Live API 进行双向音频流传输。
- GraphAgent:LangGraph 风格的工作流编排,带有状态管理、检查点和 human-in-the-loop 支持。
- CustomAgent:允许你实现自定义逻辑,并对 agent 行为拥有完全控制权。
- 工作流 Agents:遵循预定义执行路径的确定性 agent:
SequentialAgent:按顺序执行子 agentParallelAgent:并发执行子 agentLoopAgent:迭代执行子 agent,直到满足某个条件
工具
工具为 agent 提供超越对话的能力,使它们能够与外部 APIs 交互、搜索信息或执行自定义操作:
- FunctionTool: 将任何异步 Rust 函数包装为工具
- GoogleSearchTool: 内置网页搜索能力
- BrowserToolset: 用于网页自动化的 46 个 WebDriver 工具(导航、表单、截图等)
- ExitLoopTool: 控制 LoopAgent 中的循环终止
- McpToolset: 连接一个 MCP 服务器并公开经过审查的工具、资源、 提示、完成、订阅、引导和协商任务
- McpServerManager: 在应用运行期间添加、更新、监控、重启、持久化并聚合一个 不断变化的本地 MCP 服务器注册表
会话
会话处理单次对话的上下文,包括:
- 会话 ID:对话的唯一标识符
- 事件:对话历史(用户消息、agent 响应、工具调用)
- 状态:对话的工作内存,带有作用域前缀(
app:、user:、temp:)
回调
在 agent 执行的特定点运行的自定义代码:
before_agent/after_agent:拦截 agent 调用before_model/after_model:拦截 LLM 调用before_tool/after_tool:拦截工具执行
回调支持日志记录、护栏、缓存和行为修改。
产物
用于文件、图像或其他非文本内容的二进制数据存储:
- 以版本控制方式保存和加载产物
- 命名空间作用域划分(会话级或用户级)
- 可插拔存储后端
事件
表示会话期间发生之事的通信基本单位:
- 用户消息
- agent 响应
- 工具调用和结果
- 状态变化
事件构成对话历史,并支持重放和调试。
模型
驱动 LlmAgents 的底层 LLM。ADK-Rust 针对 Gemini 进行了优化,但通过 Llm trait 支持多个提供方:
- Gemini:Google 的 Gemini 模型(
gemini-3-pro、gemini-3-flash、gemini-2.5-flash、gemini-2.5-pro) - OpenAI:
gpt-5.1、gpt-5、gpt-5-mini、Azure OpenAI - Anthropic:
claude-opus-4-6、claude-sonnet-4-6、claude-haiku-4-5 - DeepSeek:
deepseek-r1、deepseek-v3.1、deepseek-chat,带思考模式 - Groq:使用
llama-4-scout、llama-3.1-70b-versatile、mixtral-8x7b-32768的超快速推理 - Ollama:使用
qwen3.6:35b-a3b、qwen3.5、llama3.2:3b、deepseek-r1:14b的本地推理 - mistral.rs:具有硬件加速的高性能本地推理
所有提供方都实现相同的 trait,可互换使用:
pub trait Llm: Send + Sync {
async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}
运行器
管理执行流程、协调 agent 交互并与后端服务协作的引擎。Runner 负责:
- Agent 调用和响应处理
- Tool 执行
- Session 和状态管理
- Event 流式传输
功能标志
ADK-Rust 使用 Cargo features 实现模块化。四个预设控制哪些 crate 会被编译:
# Minimal (default) — Gemini, agents, runner, sessions
adk-rust = "2.0.0"
# Standard — adds tools, memory, telemetry, server, auth, graph, eval, guardrail, plugins, artifacts, skills
adk-rust = { version = "2.0.0", features = ["standard"] }
# Enterprise — standard + realtime, browser, RAG, payments, AWP
adk-rust = { version = "2.0.0", features = ["enterprise"] }
# Full — enterprise + audio, code execution, sandbox
adk-rust = { version = "2.0.0", features = ["full"] }
# Equivalent explicit minimal selection
adk-rust = { version = "2.0.0", default-features = false, features = ["minimal"] }
# Custom: Pick what you need
adk-rust = { version = "2.0.0", default-features = false, features = ["agents", "gemini", "tools"] }
可用的 features:
agents:Agent 实现(LlmAgent、CustomAgent、workflow agents)models:模型集成(Gemini)openai:OpenAI 模型(GPT-5、GPT-5 Mini)anthropic:Anthropic 模型(Claude 4.6、Claude 4.5)deepseek:DeepSeek 模型(chat、reasoner)groq:Groq 超高速推理ollama:本地 Ollama 模型tools:Tool 系统和内置工具sessions:Session 管理artifacts:Artifact 存储memory:带有语义搜索和双时态知识图谱后端(GraphMemoryService)的 Memory 系统runner:Agent 执行运行时server:HTTP 服务器(REST + A2A)telemetry:tracing 辅助工具;仅在导出 OTLP 时添加telemetry-otlpcli:CLI 启动器;仅在需要时添加cli-openai、cli-anthropic或其他 CLI provider featuremcp:用于adk-tool的 Model Context Protocol 集成record-payloads:启用完整 tracing 负载捕获graph:基于图的 workflows(标准预设)realtime:语音 + 多模态流式传输 — OpenAI Realtime 和 Gemini Live、双向音频、视频帧、情感对话、服务端工具(企业预设)browser:浏览器自动化(企业预设)eval:Agent 评估(标准预设)rag:RAG pipeline(企业预设)code:代码执行(完整预设)sandbox:沙箱执行(完整预设)audio:音频处理(完整预设)
其他语言
ADK 提供多种语言版本:
- Python:
pip install google-adk- Documentation - Go:
go get google.golang.org/adk- Documentation - Java:Maven/Gradle - Documentation
Next: Quickstart →