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
VorlageWas du erhältst
basicGemini-Agent mit interaktiver Konsole (Standard)
toolsAgent mit #[tool] Makro-angepassten Tools + schemars-Schema-Generierung
ragRAG Pipeline — Gemini-Einbettungen, In-Memory-Vektorspeicher, Dokumentenaufnahme
apiAxum-REST-Server mit Health Check, bereit für docker build
openaiOpenAI-GPT-5-mini-Agent mit Konsole
a2aA2A-Protokollagent mit A2aServer-Builder und Agent-Card
graphGraphbasierter Workflow mit Checkpoints und dauerhaftem Fortsetzen
realtimeAgent für Sprach-/Audio-Streaming in Echtzeit

Tipp: Verwende das --addon-Flag, um Vorlagen mit optionalen Add-ons wie docker, ci, telemetry und 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(())
}
TeilWas es tut
prelude::*Importiert Kerntypen: GeminiModel, LlmAgentBuilder, Arc, usw.
GeminiModel::new()Erstellt einen LLM-Client mit API-Schlüsselauthentifizierung und Streaming
LlmAgentBuilderBuilder-Pattern: Name, Beschreibung, Anweisung (System-Prompt), Modell, Tools
LauncherFü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

AnbieterModellbeispieleFeature-Flag
Geminigemini-2.5-flash, gemini-2.5-pro, gemini-3-pro-preview(Standard)
OpenAIgpt-5, gpt-5-mini, gpt-4.1openai
Anthropicclaude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5anthropic
DeepSeekdeepseek-chat, deepseek-reasonerdeepseek
Groqmeta-llama/llama-4-scout-17b-16e-instruct, llama-3.3-70b-versatilegroq
Ollamaqwen3.6:35b-a3b, qwen3.5, llama3.2:3bollama

Nächste Schritte


Vorherige: Einleitung | Nächste: LlmAgent