Einführung in ADK-Rust
Agent Development Kit (ADK) ist ein flexibles und modulares Framework für die Entwicklung und Bereitstellung von KI-Agenten. Obwohl für Gemini und das Google-Ökosystem optimiert, ist ADK modell-agnostisch, deployment-agnostisch und auf Kompatibilität mit anderen Frameworks ausgelegt. ADK wurde entwickelt, um die Entwicklung von Agenten eher wie Softwareentwicklung wirken zu lassen, damit Entwickler agentische Architekturen, die von einfachen Aufgaben bis zu komplexen Workflows reichen, leichter erstellen, bereitstellen und orchestrieren können.
Hinweis: ADK-Rust erfordert Rust 1.95.0 oder höher.
Installation
Füge ADK-Rust zu deinem Projekt hinzu:
cargo add adk-rust
Oder füge es zu deinem Cargo.toml hinzu:
[dependencies]
adk-rust = "2.0.0"
tokio = { version = "1.40", features = ["full"] }
Kurzes Beispiel
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(())
}
Architekturübersicht
ADK-Rust verwendet eine geschichtete Architektur, die auf Modularität und Erweiterbarkeit ausgelegt ist:
Kernkonzepte
ADK-Rust basiert auf mehreren zentralen Grundelementen, die zusammenarbeiten, um leistungsstarke KI-Agenten zu erstellen:
Agenten
Die grundlegende Arbeitseinheit, die für bestimmte Aufgaben entwickelt wurde. ADK-Rust bietet mehrere Agententypen:
- LlmAgent: Verwendet ein Large Language Model für Schlussfolgerungen und Entscheidungsfindung. Dies ist der primäre Agententyp für die meisten Anwendungsfälle.
- RealtimeAgent: Sprachfähige Agenten, die OpenAI Realtime API oder Gemini Live API für bidirektionales Audio-Streaming verwenden.
- GraphAgent: LangGraph-artige Workflow-Orchestrierung mit Zustandsverwaltung, Checkpointing und Human-in-the-Loop-Unterstützung.
- CustomAgent: Ermöglicht es dir, benutzerdefinierte Logik mit voller Kontrolle über das Agentenverhalten zu implementieren.
- Workflow-Agenten: Deterministische Agenten, die vordefinierten Ausführungspfaden folgen:
SequentialAgent: Führt Unteragenten in Reihenfolge ausParallelAgent: Führt Unteragenten gleichzeitig ausLoopAgent: Führt Unteragenten iterativ aus, bis eine Bedingung erfüllt ist
Werkzeuge
Werkzeuge geben Agenten Fähigkeiten über die Unterhaltung hinaus und ermöglichen es ihnen, mit externen APIs zu interagieren, Informationen zu suchen oder benutzerdefinierte Operationen auszuführen:
- FunctionTool: Jede asynchrone Rust-Funktion als Tool einbinden
- GoogleSearchTool: Integrierte Websuche-Funktion
- BrowserToolset: 46 WebDriver-Tools für Webautomatisierung (Navigation, Formulare, Screenshots usw.)
- ExitLoopTool: Beendigung der Steuerungsschleife in LoopAgent
- McpToolset: Einen MCP-Server verbinden und geprüfte Tools, Ressourcen, Prompts, Completion, Subscriptions, Elicitation und ausgehandelte Aufgaben bereitstellen
- McpServerManager: Einen sich ändernden Registry lokaler MCP-Server hinzufügen, aktualisieren, überwachen, neu starten, persistieren und aggregieren, während die Anwendung läuft
Sitzungen
Sitzungen verwalten den Kontext einer einzelnen Unterhaltung, einschließlich:
- Session-ID: Eindeutiger Bezeichner für die Unterhaltung
- Ereignisse: Der Verlauf der Unterhaltung (Benutzernachrichten, Agentenantworten, Tool-Aufrufe)
- Status: Arbeitsspeicher für die Unterhaltung mit bereichsbezogenen Präfixen (
app:,user:,temp:)
Callbacks
Benutzerdefinierter Code, der an bestimmten Punkten in der Ausführung des Agenten läuft:
before_agent/after_agent: Agent-Aufrufe abfangenbefore_model/after_model: LLM-Aufrufe abfangenbefore_tool/after_tool: Tool-Ausführungen abfangen
Callbacks ermöglichen Protokollierung, Guardrails, Caching und Verhaltensänderungen.
Artefakte
Binärspeicher für Dateien, Bilder oder andere nicht-textuelle Inhalte:
- Artefakte mit Versionierung speichern und laden
- Namensraum-Abgrenzung (auf Sitzungsebene oder Benutzerebene)
- Austauschbare Storage-Backends
Ereignisse
Die grundlegende Kommunikationseinheit, die Dinge darstellt, die während einer Sitzung passieren:
- Benutzernachrichten
- Agentenantworten
- Tool-Aufrufe und Ergebnisse
- Statusänderungen
Ereignisse bilden den Gesprächsverlauf und ermöglichen Wiedergabe und Debugging.
Modelle
Das zugrunde liegende LLM, das LlmAgents antreibt. ADK-Rust ist für Gemini optimiert, unterstützt aber über das Llm-Trait mehrere Anbieter:
- Gemini: Googles Gemini-Modelle (
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-chatmit Thinking-Modus - Groq: Ultraschnelle Inferenz mit
llama-4-scout,llama-3.1-70b-versatile,mixtral-8x7b-32768 - Ollama: Lokale Inferenz mit
qwen3.6:35b-a3b,qwen3.5,llama3.2:3b,deepseek-r1:14b - mistral.rs: Hochleistungsfähige lokale Inferenz mit Hardwarebeschleunigung
Alle Anbieter implementieren dasselbe Trait für austauschbare Nutzung:
pub trait Llm: Send + Sync {
async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}
Ausführer
Die Engine, die den Ausführungsfluss verwaltet, Agent-Interaktionen orchestriert und mit Backend-Diensten koordiniert. Der Runner übernimmt:
- Aufruf von Agents und Verarbeitung von Antworten
- Ausführung von Tools
- Verwaltung von Sessions und Zuständen
- Ereignis-Streaming
Feature-Flags
ADK-Rust verwendet Cargo-Features für Modularität. Vier Presets steuern, welche Crates kompiliert werden:
# 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"] }
Verfügbare Features:
agents: Agent-Implementierungen (LlmAgent, CustomAgent, Workflow-Agents)models: Modellintegrationen (Gemini)openai: OpenAI-Modelle (GPT-5, GPT-5 Mini)anthropic: Anthropic-Modelle (Claude 4.6, Claude 4.5)deepseek: DeepSeek-Modelle (chat, reasoner)groq: Groq-Super-Schnell-Inferenzollama: Lokale Ollama-Modelletools: Tool-System und integrierte Toolssessions: Sitzungsverwaltungartifacts: Artefaktspeicherungmemory: Speichersystem mit semantischer Suche und einem bi-temporalen Knowledge-Graph-Backend (GraphMemoryService)runner: Laufzeitumgebung für Agent-Ausführungserver: HTTP-Server (REST + A2A)telemetry: Tracing-Helfer; fügetelemetry-otlpnur beim Export von OTLP hinzucli: CLI-Launcher; fügecli-openai,cli-anthropicoder ein anderes CLI-Provider-Feature nur bei Bedarf hinzumcp: Model Context Protocol-Integration füradk-toolrecord-payloads: aktiviere die vollständige Erfassung von Tracing-Nutzdatengraph: Graph-basierte Workflows (Standardpreset)realtime: Sprache + multimodales Streaming — OpenAI Realtime & Gemini Live, bidirektionales Audio, Videoframes, affektiver Dialog, serverseitige Tools (Enterprise-Preset)browser: Browser-Automatisierung (Enterprise-Preset)eval: Agent-Bewertung (Standardpreset)rag: RAG-Pipeline (Enterprise-Preset)code: Code-Ausführung (Full-Preset)sandbox: Sandbox-Ausführung (Full-Preset)audio: Audioverarbeitung (Full-Preset)
Andere Sprachen
ADK ist in mehreren Sprachen verfügbar:
- Python:
pip install google-adk- Dokumentation - Go:
go get google.golang.org/adk- Dokumentation - Java: Maven/Gradle - Dokumentation
Nächster Schritt: Schnellstart →