Schnellstart
Erstelle deinen ersten KI-Agenten in unter 5 Minuten.
Voraussetzungen
- Rust 1.95.0 oder höher (
rustup update stable) - Einen Google API-Schlüssel (hier einen holen)
Schritt 1: Erstelle die Projektgrundstruktur
cargo install cargo-adk
cargo adk new my_agent
cd my_agent
Dies erzeugt ein funktionsfähiges Projekt mit den richtigen Abhängigkeiten und dem erforderlichen Grundgerüst.
Andere Vorlagen
# Agent with custom tools using #[tool] macro
cargo adk new my_agent --template tools
# RAG agent with Gemini embeddings and in-memory vector search
cargo adk new my_agent --template rag
# REST API server ready for deployment
cargo adk new my_agent --template api
# OpenAI GPT-5-mini agent
cargo adk new my_agent --template openai
# A2A protocol agent with builder API
cargo adk new my_agent --template a2a
# Use any provider with any template
cargo adk new my_agent --template tools --provider anthropic
# Add optional addons to any template
cargo adk new my_agent --template tools --addon docker --addon ci
| Vorlage | Was du erhältst |
|---|---|
basic | Gemini-Agent mit interaktiver Konsole (Standard) |
tools | Agent mit #[tool] Makro-angepassten Tools + schemars-Schema-Generierung |
rag | RAG Pipeline — Gemini-Einbettungen, In-Memory-Vektorspeicher, Dokumentenaufnahme |
api | Axum-REST-Server mit Health Check, bereit für docker build |
openai | OpenAI-GPT-5-mini-Agent mit Konsole |
a2a | A2A-Protokollagent mit A2aServer-Builder und Agent-Card |
graph | Graphbasierter Workflow mit Checkpoints und dauerhaftem Fortsetzen |
realtime | Agent für Sprach-/Audio-Streaming in Echtzeit |
Tipp: Verwende das
--addon-Flag, um Vorlagen mit optionalen Add-ons wiedocker,ci,telemetryund mehr zusammenzustellen. Siehe die Seite Composable Templates für die vollständige Liste von 9 Add-ons und 5 Enterprise-Mustern.
Schritt 2: Füge deinen API-Schlüssel hinzu
cp .env.example .env
# Edit .env and add your GOOGLE_API_KEY
Schritt 3: Ausführen
cargo run
Das ist alles — du hast jetzt einen funktionierenden Agenten. Chatte mit ihm in deinem Terminal.
ADK Console Mode
Agent: my_agent
Type your message and press Enter. Ctrl+C to exit.
> Hello! What can you help me with?
I'm a helpful AI assistant. I can help you with answering questions,
explaining concepts, and having a friendly conversation.
Zero-Config-Alternative — adk::run()
Wenn du einfach schnell einen Agenten ohne Scaffolding ausführen möchtest, verwende die Einzeile:
use adk_rust::run;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
// Minimal default: set GOOGLE_API_KEY. Add provider features for OpenAI/Anthropic.
let response = run("You are a helpful assistant.", "Explain Rust in one sentence.").await?;
println!("{response}");
Ok(())
}
Dies übernimmt die Provider-Erkennung für kompilierte Provider, die Erstellung der Session, den Aufbau des Agenten und die Ausführung in einem einzigen Aufruf. Ideal für Skripte, Prototypen und schnelle Experimente.
Das generierte Code verstehen
Der scaffolded src/main.rs:
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
let agent = LlmAgentBuilder::new("my_agent")
.description("A helpful AI assistant")
.instruction("You are a friendly assistant. Be concise and helpful.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
| Teil | Was es tut |
|---|---|
prelude::* | Importiert Kerntypen: GeminiModel, LlmAgentBuilder, Arc, usw. |
GeminiModel::new() | Erstellt einen LLM-Client mit API-Schlüsselauthentifizierung und Streaming |
LlmAgentBuilder | Builder-Pattern: Name, Beschreibung, Anweisung (System-Prompt), Modell, Tools |
Launcher | Führt den Agenten standardmäßig im Konsolenmodus aus; verwende die api-Vorlage für HTTP Serving |
Eigene Tools hinzufügen
Der schnellste Weg, Tools hinzuzufügen, ist das #[tool]-Makro. Füge adk-tool zu deinen Abhängigkeiten hinzu:
[dependencies]
adk-tool = "2.0.0"
schemars = "1"
serde = { version = "1", features = ["derive"] }
Definiere dann ein Tool — der Doc-Comment wird zur Beschreibung, die Args-Struktur wird zum JSON-Schema:
use adk_tool::{tool, AdkError};
use schemars::JsonSchema;
use serde::Deserialize;
use serde_json::{json, Value};
#[derive(Deserialize, JsonSchema)]
struct WeatherArgs {
/// The city to look up
city: String,
}
/// Get the current weather for a city.
#[tool]
async fn get_weather(args: WeatherArgs) -> std::result::Result<Value, AdkError> {
Ok(json!({ "temp": 22, "city": args.city, "condition": "sunny" }))
}
Das Makro erzeugt eine GetWeather-Struktur, die Tool implementiert. Füge sie deinem Agenten hinzu:
let agent = LlmAgentBuilder::new("weather_agent")
.instruction("Use the get_weather tool for weather questions.")
.model(Arc::new(model))
.tool(Arc::new(GetWeather)) // Generated by #[tool]
.build()?;
Tipp: Oder scaffold ein Projekt, in dem Tools bereits eingerichtet sind:
cargo adk new my-agent --template tools
Eingebaute Tools
ADK enthält außerdem direkt nutzbare Tools:
// Google Search (handled server-side by Gemini)
.tool(Arc::new(GoogleSearchTool::new()))
// Exit a LoopAgent
.tool(Arc::new(ExitLoopTool::new()))
Als Webserver ausführen
Scaffold ein Serverprojekt, wenn du HTTP-Serving möchtest:
cargo adk new my-api --template api
cd my-api
cargo run
Die standardmäßige Basisschablone verwendet den leichten Console-Launcher für die schnellsten Installationen.
Andere Modelle verwenden
Aktiviere Provider über Feature-Flags. Der Standard-Build bleibt für schnelle Installationen auf Gemini beschränkt, also füge nur den Provider hinzu, den du brauchst:
[dependencies]
adk-rust = { version = "2.0.0", features = ["openai"] }
Oder scaffold mit einem Provider: cargo adk new my-agent --provider openai
OpenAI
let api_key = std::env::var("OPENAI_API_KEY")?;
let model = OpenAIClient::new(OpenAIConfig::new(api_key, "gpt-5-mini"))?;
Anthropic
let api_key = std::env::var("ANTHROPIC_API_KEY")?;
let model = AnthropicClient::new(AnthropicConfig::new(api_key, "claude-sonnet-4-6"))?;
DeepSeek
let api_key = std::env::var("DEEPSEEK_API_KEY")?;
let model = DeepSeekClient::chat(api_key)?; // standard
// let model = DeepSeekClient::reasoner(api_key)?; // chain-of-thought
Groq
let api_key = std::env::var("GROQ_API_KEY")?;
let model = GroqClient::new(GroqConfig::llama70b(api_key))?;
Ollama (Lokal)
// Requires: ollama serve && ollama pull llama3.2
let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;
Unterstützte Modelle
| Anbieter | Modellbeispiele | Feature-Flag |
|---|---|---|
| Gemini | gemini-2.5-flash, gemini-2.5-pro, gemini-3-pro-preview | (Standard) |
| OpenAI | gpt-5, gpt-5-mini, gpt-4.1 | openai |
| Anthropic | claude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5 | anthropic |
| DeepSeek | deepseek-chat, deepseek-reasoner | deepseek |
| Groq | meta-llama/llama-4-scout-17b-16e-instruct, llama-3.3-70b-versatile | groq |
| Ollama | qwen3.6:35b-a3b, qwen3.5, llama3.2:3b | ollama |
Nächste Schritte
- LlmAgent Konfiguration — alle Konfigurationsoptionen
- Funktions-Tools — benutzerdefinierte Tools mit
#[tool]erstellen - Workflow-Agents — sequentielle, parallele und Schleifen-Pipelines
- Sitzungen — Gesprächszustand verwalten
- Callbacks — Agentenverhalten anpassen
Vorherige: Einleitung | Nächste: LlmAgent