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é :

Rendering architecture…

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’ordre
    • ParallelAgent : Exécute les sous-agents simultanément
    • LoopAgent : 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’agent
  • before_model / after_model : Intercepter les appels LLM
  • before_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-120b et openai/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 Groq
  • ollama : modèles Ollama locaux
  • tools : système d’outils et outils intégrés
  • sessions : gestion des sessions
  • artifacts : stockage des artefacts
  • memory : système de mémoire avec recherche sémantique et backend de graphe de connaissances bi-temporel (GraphMemoryService)
  • runner : environnement d’exécution des agents
  • server : serveur HTTP (REST + A2A)
  • telemetry : assistants de traçage ; ajouter telemetry-otlp uniquement lors de l’exportation vers OTLP
  • cli : lanceur CLI ; ajouter cli-openai, cli-anthropic ou une autre fonctionnalité de fournisseur CLI uniquement lorsque nécessaire
  • mcp : intégration du Model Context Protocol pour adk-tool
  • record-payloads : activer la capture complète des données utiles de traçage
  • graph : 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 :


Suivant : Démarrage rapide →