Introduction Ă ADK-Rust
Agent Development Kit (ADK) est un framework flexible et modulaire pour dĂ©velopper et dĂ©ployer des agents IA. Bien quâoptimisĂ© pour Gemini et lâĂ©cosystĂšme Google, ADK est indĂ©pendant du modĂšle, indĂ©pendant du dĂ©ploiement, et conçu pour ĂȘtre compatible avec dâautres frameworks. ADK a Ă©tĂ© conçu pour faire en sorte 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.
Note : ADK-Rust nécessite Rust 1.95.0 ou une version supérieure.
Installation
Ajoutez ADK-Rust Ă votre projet :
cargo add adk-rust
Ou ajoutez-le Ă votre Cargo.toml :
[dependencies]
adk-rust = "2.0.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-2.5-flash")?;
let agent = LlmAgentBuilder::new("assistant")
.description("A helpful AI assistant")
.model(Arc::new(model))
.build()?;
println!("Agent '{}' ready!", agent.name());
Ok(())
}
Aperçu de lâarchitecture
ADK-Rust utilise une architecture en couches conçue pour la modularitĂ© et lâextensibilitĂ© :
Concepts de base
ADK-Rust repose sur plusieurs primitives clés qui travaillent ensemble pour créer de puissants agents 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 Large Language Model pour le raisonnement et la prise de dĂ©cision. Câest le principal type dâagent pour la plupart des cas dâusage.
- RealtimeAgent : agents avec support vocal utilisant OpenAI Realtime API ou Gemini Live API pour le streaming audio bidirectionnel.
- GraphAgent : orchestration de workflows de style LangGraph avec gestion dâĂ©tat, points de contrĂŽle et support human-in-the-loop.
- CustomAgent : vous permet dâimplĂ©menter une logique personnalisĂ©e avec un contrĂŽle total sur le comportement de lâagent.
- Workflow Agents : 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 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 : Envelopper toute fonction Rust asynchrone comme un outil
- GoogleSearchTool : Capacité de recherche web intégrée
- BrowserToolset : 46 outils WebDriver pour lâautomatisation web (navigation, formulaires, captures dâĂ©cran, etc.)
- ExitLoopTool : ContrĂŽle de la terminaison de la boucle dâexĂ©cution dans LoopAgent
- McpToolset : Connecter un serveur MCP et exposer des outils, ressources, prompts, complétion, abonnements, élicitation et tùches négociées revus
- McpServerManager : Ajouter, mettre Ă jour, surveiller, redĂ©marrer, persister et agrĂ©ger un registre changeant de serveurs MCP locaux pendant lâexĂ©cution de lâapplication
Sessions
Les sessions gĂšrent le contexte dâune conversation unique, y compris :
- ID de session : Identifiant unique de la conversation
- ĂvĂ©nements : Lâ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 de portĂ©e (
app:,user:,temp:)
Rappels
Code personnalisĂ© qui sâexĂ©cute Ă des points spĂ©cifiques 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, les garde-fous, la mise en cache et la modification du comportement.
Artefacts
Stockage de données binaires pour les fichiers, images ou autre contenu non textuel :
- Enregistrer et charger des artefacts avec versioning
- PortĂ©e de lâespace de noms (au niveau de la session ou de lâutilisateur)
- Backends de stockage branchables
ĂvĂ©nements
LâunitĂ© de base de communication reprĂ©sentant les choses qui se produisent pendant une session :
- Messages utilisateur
- RĂ©ponses de lâagent
- Appels dâoutils et rĂ©sultats
- Changements dâĂ©tat
Les Ă©vĂ©nements constituent lâhistorique de la conversation et permettent la relecture et 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 : Les modĂšles Gemini de Google (
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-chatavec mode de réflexion - Groq : Inférence ultra-rapide avec
llama-4-scout,llama-3.1-70b-versatile,mixtral-8x7b-32768 - Ollama : Inférence locale avec
qwen3.6:35b-a3b,qwen3.5,llama3.2:3b,deepseek-r1:14b - mistral.rs : Inférence locale haute performance avec accélération matérielle
Tous les fournisseurs implĂ©mentent le mĂȘme trait pour un usage 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 avec les agents et coordonne avec les services backend. Le Runner gĂšre :
- Appel des agents et traitement des réponses
- Exécution des outils
- Gestion des sessions et de lâĂ©tat
- Diffusion en continu des événements
Indicateurs de fonctionnalités
ADK-Rust utilise des fonctionnalités Cargo pour la modularité. Quatre préréglages contrÎlent quels crates sont compilés :
# 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"] }
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, reasoner)groq: infĂ©rence ultra-rapide 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: runtime dâexĂ©cution des agentsserver: serveur HTTP (REST + A2A)telemetry: aides au traçage ; ajouteztelemetry-otlpuniquement lors de lâexport OTLPcli: lanceur CLI ; ajoutezcli-openai,cli-anthropic, ou une autre fonctionnalitĂ© de fournisseur CLI uniquement si nĂ©cessairemcp: intĂ©gration du Model Context Protocol pouradk-toolrecord-payloads: activer la capture complĂšte des charges utiles de traçagegraph: workflows basĂ©s sur des graphes (prĂ©rĂ©glage standard)realtime: voix + diffusion multimodale â 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 bac Ă sable (prĂ©rĂ©glage complet)audio: traitement audio (prĂ©rĂ©glage complet)
Autres langues
ADK est disponible en plusieurs langues :
- Python :
pip install google-adk- Documentation - Go :
go get google.golang.org/adk- Documentation - Java : Maven/Gradle - Documentation
Suivant : DĂ©marrage rapide â