Einführung in ADK-Rust
Agent Development Kit (ADK) ist ein flexibles und modulares Framework zur Entwicklung und Bereitstellung von KI-Agenten. Obwohl ADK für Gemini und das Google-Ökosystem optimiert ist, ist es modellunabhängig, bereitstellungsunabhängig und auf Kompatibilität mit anderen Frameworks ausgelegt. ADK wurde entwickelt, um die Agentenentwicklung stärker an die Softwareentwicklung anzulehnen und es Entwicklern zu erleichtern, agentenbasierte Architekturen zu erstellen, bereitzustellen und zu orchestrieren, die von einfachen Aufgaben bis hin zu komplexen Workflows reichen.
Hinweis: ADK-Rust erfordert Rust 1.95.0 oder höher.
Installation
Fügen Sie ADK-Rust zu Ihrem Projekt hinzu:
cargo add adk-rust
Oder fügen Sie es zu Ihrer Cargo.toml hinzu:
[dependencies]
adk-rust = "2.1.0"
tokio = { version = "1.40", features = ["full"] }
Schnellbeispiel
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(())
}
Architekturübersicht
ADK-Rust verwendet eine geschichtete Architektur, die auf Modularität und Erweiterbarkeit ausgelegt ist:
Kernkonzepte
ADK-Rust basiert auf mehreren wichtigen Grundelementen, die zusammen leistungsfähige KI-Agenten erstellen:
Agenten
Die grundlegende Arbeitseinheit, die für bestimmte Aufgaben entwickelt wurde. ADK-Rust stellt mehrere Agententypen bereit:
- 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 Unterstützung für die Einbindung von Menschen.
- CustomAgent: Ermöglicht die Implementierung benutzerdefinierter Logik mit vollständiger Kontrolle über das Verhalten des Agenten.
- Workflow-Agenten: Deterministische Agenten, die vordefinierten Ausführungspfaden folgen:
SequentialAgent: Führt Subagenten der Reihe nach ausParallelAgent: Führt Subagenten gleichzeitig ausLoopAgent: Führt Subagenten iterativ aus, bis eine Bedingung erfüllt ist
Werkzeuge
Werkzeuge erweitern die Fähigkeiten von Agenten über die Konversation hinaus, sodass sie mit externen APIs interagieren, Informationen suchen oder benutzerdefinierte Vorgänge ausführen können:
- FunctionTool: Verpackt jede asynchrone Rust-Funktion als Werkzeug
- GoogleSearchTool: Integrierte Websuchfunktion
- BrowserToolset: 46 WebDriver-Werkzeuge für Webautomatisierung (Navigation, Formulare, Screenshots usw.)
- ExitLoopTool: Steuert die Beendigung der Schleife in LoopAgent
- McpToolset: Verbindet einen MCP-Server und stellt geprüfte Werkzeuge, Ressourcen, Prompts, Vervollständigung, Abonnements, Anforderung von Informationen und ausgehandelte Aufgaben bereit
- McpServerManager: Fügt eine sich ändernde Registrierung lokaler MCP-Server hinzu, aktualisiert, überwacht, startet sie neu, speichert sie dauerhaft und fasst sie zusammen, während die Anwendung ausgeführt wird
Sitzungen
Sitzungen verwalten den Kontext einer einzelnen Konversation, einschließlich:
- Sitzungs-ID: Eindeutige Kennung für die Unterhaltung
- Ereignisse: Der Unterhaltungsverlauf (Nachrichten des Benutzers, Antworten des Agents, Tool-Aufrufe)
- Status: Arbeitsspeicher für die Unterhaltung mit bereichsbezogenen Präfixen (
app:,user:,temp:)
Callbacks
Benutzerdefinierter Code, der an bestimmten Punkten während der Ausführung des Agents ausgeführt wird:
before_agent/after_agent: Abfangen von Agent-Aufrufenbefore_model/after_model: Abfangen von LLM-Aufrufenbefore_tool/after_tool: Abfangen von Tool-Ausführungen
Callbacks ermöglichen Protokollierung, Leitplanken, Caching und Verhaltensänderungen.
Artefakte
Speicher für Binärdaten von Dateien, Bildern oder anderen nicht textbasierten Inhalten:
- Artefakte mit Versionsverwaltung speichern und laden
- Namensbereichsbegrenzung auf Sitzungs- oder Benutzerebene
- Austauschbare Speicher-Backends
Ereignisse
Die grundlegende Kommunikationseinheit, die Dinge repräsentiert, die während einer Sitzung geschehen:
- Nachrichten des Benutzers
- Antworten des Agents
- Tool-Aufrufe und Ergebnisse
- Statusänderungen
Ereignisse bilden den Unterhaltungsverlauf und ermöglichen die Wiederholung und das Debugging.
Modelle
Das zugrunde liegende LLM, das LlmAgents antreibt. ADK-Rust ist für Gemini optimiert, unterstützt aber über den Trait Llm mehrere Anbieter:
- 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-Bereitstellungen - Anthropic:
claude-sonnet-5,claude-opus-5,claude-fable-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro - Groq: Hochgeschwindigkeitsinferenz mit
openai/gpt-oss-120bundopenai/gpt-oss-20b - 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 denselben Trait zur austauschbaren Verwendung:
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ührungsablauf verwaltet, Agent-Interaktionen orchestriert und Backend-Dienste koordiniert. Der Runner übernimmt:
- Aufruf von Agents und Verarbeitung von Antworten
- Ausführung von Tools
- Verwaltung von Sitzungen und Zuständen
- Streaming von Ereignissen
Funktionsflags
ADK-Rust verwendet Cargo-Features für Modularität. Vier Voreinstellungen steuern, welche Crates kompiliert werden:
# 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"] }
Verfügbare Funktionen:
agents: Agent-Implementierungen (LlmAgent, CustomAgent, Workflow-Agenten)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: Ultraschnelle Inferenz mit Groqollama: Lokale Ollama-Modelletools: Tool-System und integrierte Toolssessions: Sitzungsverwaltungartifacts: Artefaktspeichermemory: Speichersystem mit semantischer Suche und einem bi-temporalen Wissensgraph-Backend (GraphMemoryService)runner: Laufzeitumgebung für die Agentenausführungserver: HTTP-Server (REST + A2A)telemetry: Tracing-Hilfsfunktionen;telemetry-otlpnur beim Exportieren von OTLP hinzufügencli: CLI-Launcher;cli-openai,cli-anthropicoder ein anderes CLI-Provider-Feature nur bei Bedarf hinzufügenmcp: Integration des Model Context Protocol füradk-toolrecord-payloads: Vollständige Erfassung von Tracing-Nutzdaten aktivierengraph: Graphbasierte Workflows (Standardvoreinstellung)realtime: Sprach- und multimodales Streaming — OpenAI Realtime und Gemini Live, bidirektionales Audio, Videoframes, affektiver Dialog, serverseitige Tools (Enterprise-Voreinstellung)browser: Browserautomatisierung (Enterprise-Voreinstellung)eval: Agentenbewertung (Standardvoreinstellung)rag: RAG-Pipeline (Enterprise-Voreinstellung)code: Codeausführung (vollständige Voreinstellung)sandbox: Sandboxed-Ausführung (vollständige Voreinstellung)audio: Audioverarbeitung (vollständige Voreinstellung)
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
Weiter: Schnellstart →