Évaluation des performances

Le crate adk-bench et la commande cargo adk bench fournissent une évaluation des performances réelle de LLM pour les agents ADK-Rust. Contrairement aux microévaluations synthétiques, adk-bench mesure les performances réelles de bout en bout avec des appels à des modÚles en direct, en isolant la surcharge du framework de la latence du fournisseur.

Ce qui est mesuré

MétriqueDescription
Démarrage à froidTemps écoulé entre le lancement du processus et la premiÚre réponse LLM
Surcharge de la boucle de l’agentCoĂ»t du framework par aller-retour d’appel d’outil (exclut le temps d’attente de LLM)
DĂ©bitRequĂȘtes par seconde sous charge soutenue
MĂ©moireRSS maximal pendant l’exĂ©cution
Surcharge de jetonsJetons supplĂ©mentaires ajoutĂ©s par l’instrumentation du framework
CV (coefficient de variation)StabilitĂ© des mesures d’une exĂ©cution Ă  l’autre

Démarrage rapide

# Run all benchmarks with default settings
cargo adk bench

# Run a specific workload
cargo adk bench --workload simple_tool_call

# Dry run (no LLM calls, validates config only)
cargo adk bench --dry-run

Référence de CLI

cargo adk bench [OPTIONS]

OPTIONS:
    --workload <NAME>          Run a specific workload (simple_tool_call,
                               multi_step_reasoning, parallel_tool_invocation)
    --iterations <N>           Number of iterations per workload [default: 10]
    --warmup <N>               Warmup iterations before measurement [default: 2]
    --provider <NAME>          LLM provider to benchmark [default: gemini]
    --model <MODEL>            Model ID to use [default: gemini-3.5-flash-lite]
    --output <FORMAT>          Output format: table, json, csv [default: table]
    --output-file <PATH>       Write results to file instead of stdout

    # Cost control
    --dry-run                  Validate configuration without making LLM calls
    --max-cost-usd <AMOUNT>    Abort if estimated cost exceeds this amount
    --confirm-cost             Prompt for confirmation before running

    # Regression detection
    --save-baseline <NAME>     Save results as a named baseline
    --check-regression <NAME>  Compare against a saved baseline
    --tolerance <PERCENT>      Regression threshold percentage [default: 10]

    # External comparison
    --ebp                      Enable External Benchmark Protocol output
    --harness <PATH>           Path to external framework harness config

ContrÎle des coûts

Les benchmarks effectuent de véritables appels à LLM. Utilisez ces indicateurs pour éviter les factures imprévues :

# Preview what would run without spending anything
cargo adk bench --dry-run

# Set a hard cost ceiling
cargo adk bench --max-cost-usd 5.00

# Require manual confirmation after cost estimate
cargo adk bench --confirm-cost

L’estimateur de coĂ»ts utilise le nombre de tokens des exĂ©cutions prĂ©cĂ©dentes (ou des estimations basĂ©es sur la dĂ©finition de la charge de travail), multipliĂ© par la tarification publiĂ©e par le fournisseur pour chaque token.

Détection des régressions

Suivez les performances au fil des versions :

# Establish a baseline after a release
cargo adk bench --save-baseline v1.0.0

# On the next change, check for regressions
cargo adk bench --check-regression v1.0.0 --tolerance 10

# Tighter tolerance for critical paths
cargo adk bench --workload simple_tool_call --check-regression v1.0.0 --tolerance 5

Codes de sortie :

  • 0 — aucune rĂ©gression dĂ©tectĂ©e
  • 1 — au moins une mĂ©trique a rĂ©gressĂ© au-delĂ  de la tolĂ©rance
  • 2 — erreur de configuration ou d’exĂ©cution

Les références sont stockées dans .adk-bench/baselines/ sous forme de fichiers JSON.

Comparaison avec des frameworks externes (EBP)

Le protocole de benchmark externe (EBP) permet une comparaison Ă©quitable avec d’autres frameworks d’agents. EBP dĂ©finit un format de charge de travail et un protocole de mesure standard afin que les rĂ©sultats soient comparables entre les implĂ©mentations.

# Output EBP-compatible results
cargo adk bench --ebp --output json > results.json

# Run against an external harness (e.g., LangGraph, Python SDK)
cargo adk bench --harness harnesses/langraph.toml

Les fichiers de configuration du harnais dĂ©finissent comment invoquer des frameworks externes avec les mĂȘmes charges de travail et mesurer leurs rĂ©sultats selon la mĂȘme mĂ©thodologie.

Résultats des benchmarks

RĂ©sultats publiĂ©s comparant ADK-Rust Ă  d’autres frameworks (configuration dĂ©terministe, mĂȘme modĂšle, mĂȘme charge de travail) :

MétriqueADK-RustGemini Python SDKLangGraph
Démarrage à froid109 ms501 ms502 ms
Surcharge de boucle568 ÎŒs253 ÎŒs1228 ms
simple_tool_call1,2 s au total1,8 s au total2,1 s au total
multi_step_reasoning4,1 s au total5,9 s au total7,3 s au total
parallel_tool_invocation2,3 s au total3,7 s au total4,8 s au total

Méthodologie :

  • Appels rĂ©els Ă  Gemini 3.5 Flash-Lite (non simulĂ©s)
  • Configuration dĂ©terministe : temperature=0, valeur de dĂ©part fixe
  • 10 itĂ©rations aprĂšs 2 exĂ©cutions de prĂ©chauffage
  • Isolation de la surcharge : temps total moins la latence mesurĂ©e de LLM
  • MĂȘmes dĂ©finitions d’outils et mĂȘmes invites dans tous les frameworks

Charges de travail

simple_tool_call

Un seul message utilisateur → un appel d’outil → une rĂ©ponse. Mesure la surcharge minimale d’un aller-retour.

multi_step_reasoning

Conversation Ă  plusieurs tours nĂ©cessitant 3 Ă  5 appels d’outils sĂ©quentiels, avec un raisonnement entre chacun. Mesure les performances soutenues de la boucle.

parallel_tool_invocation

Un seul message utilisateur dĂ©clenchant 3 appels d’outils parallĂšles. Mesure la surcharge de distribution concurrente.

Utilisation programmatique

use adk_bench::{BenchmarkSuite, BenchConfig, Workload};

let config = BenchConfig::builder()
    .iterations(10)
    .warmup(2)
    .provider("gemini")
    .model("gemini-3.5-flash-lite")
    .build()?;

let suite = BenchmarkSuite::new(config);
let results = suite.run_all().await?;

for result in &results {
    println!("{}: cold_start={}ms overhead={}ÎŒs",
        result.workload,
        result.cold_start_ms,
        result.loop_overhead_us,
    );
}

Pour aller plus loin

Consultez adk-bench/README.md pour :

  • DĂ©finitions personnalisĂ©es de charges de travail
  • Guide de rĂ©daction du harness
  • ModĂšles d’intĂ©gration CI
  • Suivi historique des rĂ©sultats

PrĂ©cĂ©dent : ← ExĂ©cution de code | Suivant : Outils ACP →

Évaluation des performances - Documentation ADK-Rust | ADK-Rust