Introduction à ADK-Rust
Agent Development Kit (ADK) est un framework flexible et modulaire pour le développement et le déploiement d'agents d'IA. Bien qu'optimisé pour Gemini et l'écosystème Google, ADK est agnostique au modèle, agnostique au déploiement, et conçu pour la compatibilité avec d'autres frameworks. ADK a été conçu pour que le développement d'agents ressemble davantage au développement logiciel, facilitant ainsi la création, le déploiement et l'orchestration d'architectures agentiques allant de tâches simples à des workflows complexes pour les développeurs.
Note : ADK-Rust v0.2.0 nécessite Rust 1.85.0 ou supérieur
Installation
Ajoutez ADK-Rust à votre projet :
cargo add adk-rust
Ou ajoutez-le à votre Cargo.toml :
[dependencies]
adk-rust = "0.2.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(())
}
Vue d'ensemble de l'architecture
ADK-Rust utilise une architecture en couches conçue pour la modularité et l'extensibilité :
┌─────────────────────────────────────────────────────────────┐
│ Couche Application │
│ CLI • Serveur REST • Interface Web │
├─────────────────────────────────────────────────────────────┤
│ Couche Runner │
│ Exécution d'Agent • Gestion du Contexte │
├─────────────────────────────────────────────────────────────┤
│ Couche Agent │
│ LlmAgent • CustomAgent • Agents de Flux de Travail │
├─────────────────────────────────────────────────────────────┤
│ Couche Service │
│ Models • Tools • Sessions • Artefacts • Mémoire │
└─────────────────────────────────────────────────────────────┘
Principes fondamentaux
ADK-Rust est construit autour de plusieurs primitives clés qui fonctionnent ensemble pour créer de puissants agents IA :
Agents
L'unité de travail fondamentale conçue pour des tâches spécifiques. ADK-Rust propose plusieurs types d'agents :
- LlmAgent : Utilise un Large Language Model pour le raisonnement et la prise de décision. C'est le type d'agent principal pour la plupart des cas d'utilisation.
- RealtimeAgent : Agents vocaux utilisant l'OpenAI Realtime API ou le Gemini Live API pour le streaming audio bidirectionnel.
- GraphAgent : Orchestration de workflow de type LangGraph avec gestion d'état, point de contrôle et support humain dans la boucle.
- CustomAgent : 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 itérativement les sous-agents jusqu'à ce qu'une condition soit remplie
Outils
Les outils confèrent 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 : Encapsule n'importe quelle fonction Rust async en tant qu'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 la terminaison de la boucle dans LoopAgent
- McpToolset : Intégration avec les serveurs Model Context Protocol
Sessions
Les sessions gèrent le contexte d'une seule conversation, y compris :
- Session ID : Identifiant unique de la conversation
- Events : L'historique de la conversation (messages utilisateur, réponses de l'agent, appels d'outils)
- State : Mémoire de travail pour la conversation avec des préfixes de portée (
app:,user:,temp:)
Callbacks
Code personnalisé qui s'exécute à des points spécifiques de l'exécution de l'agent :
before_agent/after_agent: Intercepte les invocations d'agentsbefore_model/after_model: Intercepte les appels LLMbefore_tool/after_tool: Intercepte les exécutions d'outils
Les Callbacks 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 :
- Sauvegarder et charger des artefacts avec versioning
- Portée des espaces de noms (au niveau de la session ou de l'utilisateur)
- Backends de stockage enfichables
Événements
L'unité de communication de base représentant les événements qui se produisent pendant une session :
- Messages utilisateur
- Réponses de l'agent
- Appels et résultats d'outils
- 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 les LlmAgents. ADK-Rust est optimisé pour Gemini mais prend en charge plusieurs fournisseurs via le trait Llm :
- Gemini : Modèles Gemini de Google (
gemini-3-pro-preview,gemini-2.5-flash,gemini-2.5-pro) - OpenAI :
gpt-5.2,gpt-4o,gpt-4o-mini, Azure OpenAI - Anthropic :
claude-sonnet-4-5,claude-opus-4-5,claude-sonnet-4 - DeepSeek :
deepseek-chat,deepseek-reasoneravec mode de pensée - Groq : Inférence ultra-rapide avec
llama-3.3-70b-versatile,mixtral-8x7b-32768 - Ollama : Inférence locale avec
llama3.2,qwen2.5,mistral,phi4 - mistral.rs : Inférence locale haute performance avec accélération matérielle
Tous les fournisseurs implémentent le même trait pour 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>;
}
Runner
Le moteur qui gère le flux d'exécution, orchestre les interactions des agents et se coordonne avec les services backend. Le Runner gère :
- Invocation d'agent et traitement des réponses
- Exécution d'outils
- Gestion de session et d'état
- Streaming d'événements
Indicateurs de fonctionnalités
adk-rust utilise les fonctionnalités Cargo pour la modularité :
# Full installation (default)
adk-rust = "0.2.0"
# Minimal: Only agents + Gemini
adk-rust = { version = "0.2.0", default-features = false, features = ["minimal"] }
# Custom: Pick what you need
adk-rust = { version = "0.2.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-4o)anthropic: Modèles Anthropic (Claude 4.5, Claude 4)deepseek: Modèles DeepSeek (conversation, raisonneur)groq: Inférence ultra-rapide Groqollama: Modèles Ollama locauxtools: Système de Tool et Tools intégréssessions: Gestion de sessionartifacts: Stockage d'artefactsmemory: Système de mémoire avec recherche sémantiquerunner: Environnement d'exécution d'Agentserver: Serveur HTTP (REST + A2A)telemetry: Intégration OpenTelemetrycli: Lanceur CLI
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 →