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'ordre
    • ParallelAgent : Exécute les sous-agents simultanément
    • LoopAgent : 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'agents
  • before_model / after_model : Intercepte les appels LLM
  • before_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-reasoner avec 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 Groq
  • ollama : Modèles Ollama locaux
  • tools : Système de Tool et Tools intégrés
  • sessions : Gestion de session
  • artifacts : Stockage d'artefacts
  • memory : Système de mémoire avec recherche sémantique
  • runner : Environnement d'exécution d'Agent
  • server : Serveur HTTP (REST + A2A)
  • telemetry : Intégration OpenTelemetry
  • cli : Lanceur CLI

Autres Langages

ADK est disponible dans plusieurs langages :


Suivant : Démarrage rapide →