ADK-Rust简介

Agent Development Kit(ADK)是一个用于开发和部署 AI agent 的灵活、模块化框架。虽然针对 Gemini 和 Google 生态系统进行了优化,但ADK与模型无关、与部署方式无关,并且旨在兼容其他框架。ADK旨在让 agent 开发更接近软件开发,使开发者能够更轻松地创建、部署和编排从简单任务到复杂工作流的 agent 架构。

注意: ADK-Rust需要 Rust 1.95.0 或更高版本。

安装

将ADK-Rust添加到你的项目中:

cargo add adk-rust

或者将其添加到你的Cargo.toml中:

[dependencies]
adk-rust = "2.1.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-3.7-flash")?;
    
    let agent = LlmAgentBuilder::new("assistant")
        .description("A helpful AI assistant")
        .model(Arc::new(model))
        .build()?;
    
    println!("Agent '{}' ready!", agent.name());
    Ok(())
}

架构概览

ADK-Rust采用了分层架构,旨在实现模块化和可扩展性:

Rendering architecture…

核心概念

ADK-Rust围绕多个相互协作的关键原语构建,用于创建强大的 AI agent:

Agent

为特定任务设计的基本工作单元。ADK-Rust提供了多种 agent 类型:

  • LlmAgent:使用大型语言模型进行推理和决策。这是大多数使用场景中的主要 agent 类型。
  • RealtimeAgent:使用 OpenAI Realtime API 或 Gemini Live API 进行双向音频流传输的语音 agent。
  • GraphAgent:LangGraph 风格的工作流编排,支持状态管理、检查点和人在回路中。
  • CustomAgent:允许你实现自定义逻辑,并完全控制 agent 的行为。
  • 工作流 Agent:遵循预定义执行路径的确定性 agent:
    • SequentialAgent:按顺序执行子 agent
    • ParallelAgent:并发执行子 agent
    • LoopAgent:重复执行子 agent,直到满足某个条件

工具

工具赋予 agent 超越对话的能力,使其能够与外部 APIs 交互、搜索信息或执行自定义操作:

  • FunctionTool:将任意异步 Rust 函数封装为工具
  • GoogleSearchTool:内置网页搜索功能
  • BrowserToolset:用于网页自动化的 46 个 WebDriver 工具(导航、表单、屏幕截图等)
  • ExitLoopTool:控制 LoopAgent 中循环的终止
  • McpToolset:连接一个 MCP 服务器,并公开经过审核的工具、资源、 提示、补全、订阅、征询和协商任务
  • McpServerManager:在应用运行期间添加、更新、监控、重启、持久化和聚合不断变化的本地 MCP 服务器注册表

会话

会话处理单次对话的上下文,包括:

  • 会话 ID:对话的唯一标识符
  • 事件:对话历史记录(用户消息、代理响应、工具调用)
  • 状态:带有作用域前缀的对话工作内存(app:、user:、temp:)

回调

在代理执行过程中的特定时间点运行的自定义代码:

  • before_agent / after_agent:拦截代理调用
  • before_model / after_model:拦截 LLM 调用
  • before_tool / after_tool:拦截工具执行

回调支持日志记录、护栏、缓存和行为修改。

制品

用于存储文件、图像或其他非文本内容的二进制数据:

  • 使用版本控制保存和加载制品
  • 命名空间作用域(会话级或用户级)
  • 可插拔的存储后端

事件

表示会话期间发生的事项的基本通信单元:

  • 用户消息
  • 代理响应
  • 工具调用和结果
  • 状态更改

事件构成对话历史记录,并支持重放和调试。

模型

为 LlmAgents 提供支持的底层 LLM。ADK-Rust 针对 Gemini 进行了优化,但通过 Llm trait 支持多个提供商:

  • Gemini:gemini-3.7-flash、gemini-3.6-flash、gemini-3.5-flash-lite
  • OpenAI:gpt-5.6-terra、gpt-5.6-sol、gpt-5.6-luna、Azure OpenAI 部署
  • Anthropic:claude-sonnet-5、claude-opus-5、claude-fable-5
  • DeepSeek:deepseek-v4-flash、deepseek-v4-pro
  • Groq:借助 openai/gpt-oss-120b 和 openai/gpt-oss-20b 实现超快速推理
  • 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>;
}

运行器

管理执行流程、协调代理交互并与后端服务协作的引擎。Runner 负责:

  • 代理调用和响应处理
  • 工具执行
  • 会话和状态管理
  • 事件流

功能标志

ADK-Rust 使用 Cargo 功能实现模块化。四种预设控制要编译哪些 crate:

# Minimal (default) — Gemini, agents, runner, sessions
adk-rust = "2.1.0"

# Standard — adds tools, memory, telemetry, server, auth, graph, eval, guardrail, plugins, artifacts, skills
adk-rust = { version = "2.1.0", features = ["standard"] }

# Enterprise — standard + realtime, browser, RAG, payments, AWP
adk-rust = { version = "2.1.0", features = ["enterprise"] }

# Full — enterprise + audio, code execution, sandbox
adk-rust = { version = "2.1.0", features = ["full"] }

# Equivalent explicit minimal selection
adk-rust = { version = "2.1.0", default-features = false, features = ["minimal"] }

# Custom: Pick what you need
adk-rust = { version = "2.1.0", default-features = false, features = ["agents", "gemini", "tools"] }

可用功能:

  • agents:代理实现(LlmAgent、CustomAgent、工作流代理)
  • models:模型集成(Gemini)
  • openai:OpenAI模型(GPT-5、GPT-5 Mini)
  • anthropic:Anthropic 模型(Claude 4.6、Claude 4.5)
  • deepseek:DeepSeek模型(聊天、推理)
  • groq:Groq 超快速推理
  • ollama:本地 Ollama 模型
  • tools:工具系统和内置工具
  • sessions:会话管理
  • artifacts:工件存储
  • memory:支持语义搜索和双时态知识图谱后端(GraphMemoryService)的记忆系统
  • runner:代理执行运行时
  • server:HTTP服务器(REST + A2A)
  • telemetry:追踪辅助工具;仅在导出 OTLP 时添加 telemetry-otlp
  • cli:CLI启动器;仅在需要时添加 cli-openai、cli-anthropic或其他 CLI提供程序功能
  • mcp:adk-tool的模型上下文协议集成
  • record-payloads:选择加入完整追踪负载捕获
  • graph:基于图的工作流(标准预设)
  • realtime:语音 + 多模态流式传输 — OpenAI Realtime 和 Gemini Live、双向音频、视频帧、情感对话、服务器端工具(企业预设)
  • browser:浏览器自动化(企业预设)
  • eval:代理评估(标准预设)
  • rag:RAG流水线(企业预设)
  • code:代码执行(完整预设)
  • sandbox:沙箱执行(完整预设)
  • audio:音频处理(完整预设)

其他语言

ADK支持多种语言:

  • Python:pip install google-adk - 文档
  • Go:go get google.golang.org/adk - 文档
  • Java:Maven/Gradle - 文档

下一步:快速入门 →

ADK-Rust简介 - ADK-Rust 文档 | ADK-Rust