Introduction à ADK-Rust
Agent Development Kit (ADK) est un framework flexible et modulaire destiné au développement et au déploiement d’agents d’IA. Bien qu’optimisé pour Gemini et l’écosystème Google, ADK est indépendant des modèles et du déploiement, et conçu pour être compatible avec d’autres frameworks. ADK a été conçu pour que le développement d’agents ressemble davantage au développement logiciel, afin de permettre aux développeurs de créer, déployer et orchestrer plus facilement des architectures agentiques allant de tâches simples à des workflows complexes.
Remarque : ADK-Rust nécessite Rust 1.95.0 ou une version ultérieure.
Installation
Ajoutez ADK-Rust à votre projet :
cargo add adk-rust
Ou ajoutez-le à votre Cargo.toml :
[dependencies]
adk-rust = "2.1.0"
tokio = { version = "1.40", features = ["full"] }
Exemple rapide
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(())
}
Vue d’ensemble de l’architecture
ADK-Rust utilise une architecture en couches conçue pour assurer la modularité et l’extensibilité :
Concepts fondamentaux
ADK-Rust repose sur plusieurs primitives clés qui fonctionnent ensemble pour créer de puissants agents d’IA :
Agents
L’unité de travail fondamentale conçue pour des tâches spécifiques. ADK-Rust fournit plusieurs types d’agents :
- LlmAgent : Utilise un grand modèle de langage pour le raisonnement et la prise de décision. Il s’agit du principal type d’agent pour la plupart des cas d’utilisation.
- RealtimeAgent : Agents dotés de capacités vocales utilisant OpenAI Realtime API ou Gemini Live API pour la diffusion audio bidirectionnelle.
- GraphAgent : Orchestration de workflows de style LangGraph avec gestion de l’état, création de points de contrôle et prise en charge de l’intervention humaine.
- CustomAgent : Permet d’implémenter une logique personnalisée avec un contrôle total du comportement de l’agent.
- Agents de workflow : Agents déterministes qui suivent des chemins d’exécution prédéfinis :
SequentialAgent: Exécute les sous-agents dans l’ordreParallelAgent: Exécute les sous-agents simultanémentLoopAgent: Exécute les sous-agents de manière itérative jusqu’à ce qu’une condition soit remplie
Outils
Les outils donnent aux agents des capacités allant au-delà de la conversation, leur permettant d’interagir avec des APIs externes, de rechercher des informations ou d’effectuer des opérations personnalisées :
- FunctionTool : Encapsule toute fonction Rust asynchrone en tant qu’outil
- GoogleSearchTool : Fonctionnalité intégrée de recherche sur le Web
- BrowserToolset : 46 outils WebDriver pour l’automatisation du Web (navigation, formulaires, captures d’écran, etc.)
- ExitLoopTool : Contrôle l’arrêt de la boucle dans LoopAgent
- McpToolset : Se connecte à un serveur MCP et expose les outils, ressources, invites, complétion, abonnements, élicitation et tâches négociées qui ont été vérifiés
- McpServerManager : Ajoute, met à jour, surveille, redémarre, conserve et agrège un registre évolutif de serveurs MCP locaux pendant l’exécution de l’application
Sessions
Les sessions gèrent le contexte d’une seule conversation, notamment :
- ID de session : Identifiant unique de la conversation
- Événements : Historique de la conversation (messages utilisateur, réponses de l’agent, appels d’outils)
- État : Mémoire de travail de la conversation avec des préfixes étendus (
app:,user:,temp:)
Rappels
Code personnalisé exécuté à des moments précis de l’exécution de l’agent :
before_agent/after_agent: Intercepter les invocations de l’agentbefore_model/after_model: Intercepter les appels LLMbefore_tool/after_tool: Intercepter les exécutions d’outils
Les rappels permettent la journalisation, la mise en place de garde-fous, la mise en cache et la modification du comportement.
Artefacts
Stockage de données binaires pour les fichiers, les images ou tout autre contenu non textuel :
- Enregistrer et charger des artefacts avec gestion des versions
- Gestion des espaces de noms (au niveau de la session ou de l’utilisateur)
- Backends de stockage enfichables
Événements
Unité de base de communication représentant les faits qui se produisent au cours d’une session :
- Messages utilisateur
- Réponses de l’agent
- Appels d’outils et résultats
- Modifications de l’état
Les événements constituent l’historique de la conversation et permettent sa relecture ainsi que le débogage.
Modèles
Le LLM sous-jacent qui alimente LlmAgents. ADK-Rust est optimisé pour Gemini, mais prend en charge plusieurs fournisseurs via le trait Llm :
- 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, déploiements Azure OpenAI - Anthropic :
claude-sonnet-5,claude-opus-5,claude-fable-5 - DeepSeek :
deepseek-v4-flash,deepseek-v4-pro - Groq : Inférence ultrarapide avec
openai/gpt-oss-120betopenai/gpt-oss-20b - Ollama : Inférence locale avec
qwen3.6:35b-a3b,qwen3.5,llama3.2:3b,deepseek-r1:14b - mistral.rs : Inférence locale hautes performances avec accélération matérielle
Tous les fournisseurs implémentent le même trait pour permettre une utilisation interchangeable :
pub trait Llm: Send + Sync {
async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}
Exécuteur
Le moteur qui gère le flux d’exécution, orchestre les interactions entre les agents et coordonne les services backend. L’exécuteur gère :
- L’invocation des agents et le traitement des réponses
- L’exécution des outils
- La gestion des sessions et de l’état
- La diffusion des événements
Indicateurs de fonctionnalités
ADK-Rust utilise les fonctionnalités Cargo pour assurer la modularité. Quatre préréglages contrôlent les crates compilés :
# 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"] }
Fonctionnalités disponibles :
agents: implémentations d’agents (LlmAgent, CustomAgent, agents de workflow)models: intégrations de modèles (Gemini)openai: modèles OpenAI (GPT-5, GPT-5 Mini)anthropic: modèles Anthropic (Claude 4.6, Claude 4.5)deepseek: modèles DeepSeek (chat, raisonneur)groq: inférence ultra-rapide avec Groqollama: modèles Ollama locauxtools: système d’outils et outils intégréssessions: gestion des sessionsartifacts: stockage des artefactsmemory: système de mémoire avec recherche sémantique et backend de graphe de connaissances bi-temporel (GraphMemoryService)runner: environnement d’exécution des agentsserver: serveur HTTP (REST + A2A)telemetry: assistants de traçage ; ajoutertelemetry-otlpuniquement lors de l’exportation vers OTLPcli: lanceur CLI ; ajoutercli-openai,cli-anthropicou une autre fonctionnalité de fournisseur CLI uniquement lorsque nécessairemcp: intégration du Model Context Protocol pouradk-toolrecord-payloads: activer la capture complète des données utiles de traçagegraph: workflows basés sur des graphes (préréglage standard)realtime: streaming vocal et multimodal — OpenAI Realtime et Gemini Live, audio bidirectionnel, images vidéo, dialogue affectif, outils côté serveur (préréglage entreprise)browser: automatisation du navigateur (préréglage entreprise)eval: évaluation des agents (préréglage standard)rag: pipeline RAG (préréglage entreprise)code: exécution de code (préréglage complet)sandbox: exécution en environnement isolé (préréglage complet)audio: traitement audio (préréglage complet)
Autres langages
ADK est disponible dans plusieurs langages :
- Python :
pip install google-adk- Documentation - Go :
go get google.golang.org/adk- Documentation - Java : Maven/Gradle - Documentation
Suivant : Démarrage rapide →