Lanceur
Le Launcher fournit une mĂ©thode simple, en une seule ligne, pour exĂ©cuter des agents ADK. Dans le niveau minimal par dĂ©faut, il sâagit dâun lanceur lĂ©ger pour console provenant de adk-runner. Activez une fonctionnalitĂ© CLI facultative telle que cli-openai lorsque vous avez besoin de lâanalyseur dâarguments CLI complet et du mode serveur HTTP.
Vue dâensemble
Le lanceur est conçu pour rendre le dĂ©ploiement dâagents aussi simple que possible. Avec une seule ligne de code, vous pouvez :
- Exécuter votre agent dans une console interactive pour les tests et le développement
- DĂ©ployer votre agent en tant que serveur HTTP avec une interface web lorsquâune fonctionnalitĂ©
cli-*ou le modĂšleapicargo-adk est utilisĂ© - Personnaliser le nom de lâapplication et le stockage des artefacts
Utilisation de base
Mode console (par défaut)
La maniĂšre la plus simple dâutiliser le lanceur consiste Ă le crĂ©er avec votre agent et Ă appeler run() :
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<()> {
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = Arc::new(GeminiModel::new(&api_key, "gemini-3.7-flash")?);
let agent = LlmAgentBuilder::new("my_agent")
.description("A helpful assistant")
.instruction("You are a helpful assistant.")
.model(model)
.build()?;
// Run with the lightweight console launcher
Launcher::new(Arc::new(agent)).run().await
}
Exécutez votre agent :
# Interactive console (default)
cargo run
# Full CLI mode is available when your app enables a `cli-*` feature
Mode serveur
Pour exécuter votre agent en tant que serveur HTTP avec une interface web, utilisez le modÚle api ou activez une fonctionnalité cli-* :
cargo adk new my-api --template api
cd my-api
cargo run
Le serveur démarrera et affichera :
đ ADK Server starting on http://localhost:8080
đ± Open http://localhost:8080 in your browser
Press Ctrl+C to stop
Options de configuration
Nom dâapplication personnalisĂ©
Par dĂ©faut, le lanceur utilise le nom de lâagent comme nom de lâapplication. Vous pouvez le personnaliser :
Launcher::new(Arc::new(agent))
.app_name("my_custom_app")
.run()
.await
Service dâartefacts personnalisĂ©
Fournissez votre propre implĂ©mentation de service dâartefacts :
use adk_artifact::InMemoryArtifactService;
let artifact_service = Arc::new(InMemoryArtifactService::new());
Launcher::new(Arc::new(agent))
.with_artifact_service(artifact_service)
.run()
.await
Détails du mode console
En mode console, le lanceur :
- Crée un service de session en mémoire
- CrĂ©e une session pour lâutilisateur
- Démarre une boucle REPL interactive
- Diffuse les rĂ©ponses de lâagent en temps rĂ©el
- GĂšre les transferts dâagents dans les systĂšmes multi-agents
Interaction avec la console
đ€ Agent ready! Type your questions (or 'exit' to quit).
You: What is the capital of France?
Assistant: The capital of France is Paris.
You: exit
đ Goodbye!
Console multi-agents
Lors de lâutilisation de systĂšmes multi-agents, la console indique quel agent rĂ©pond :
You: I need help with my order
[Agent: customer_service]
Assistant: I'll help you with your order. What's your order number?
You: ORDER-12345
đ [Transfer requested to: order_lookup]
[Agent: order_lookup]
Assistant: I found your order. It was shipped yesterday.
Détails du mode serveur
En mode serveur, le lanceur :
- Initialise la tĂ©lĂ©mĂ©trie pour lâobservabilitĂ©
- Crée un service de session en mémoire
- Démarre un serveur HTTP avec des points de terminaison REST API
- Sert une interface web pour interagir avec votre agent
Solution de secours pour la production
Pour les applications de production qui nécessitent des routes personnalisées, des intergiciels, des métriques ou la maßtrise de la boucle de service, utilisez build_app() :
let app = Launcher::new(Arc::new(agent))
.with_a2a_base_url("https://agent.example.com")
.build_app()?;
let app = app.merge(my_admin_routes());
let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await?;
axum::serve(listener, app).await?;
Utilisez build_app_with_a2a(...) si vous souhaitez activer explicitement les routes A2A.
Points de terminaison disponibles
Le serveur expose les points de terminaison REST API suivants :
GET /health- Point de terminaison de vĂ©rification de lâĂ©tatPOST /run_sse- ExĂ©cuter lâagent avec un flux dâĂ©vĂ©nements envoyĂ©s par le serveurGET /sessions- RĂ©pertorier les sessionsPOST /sessions- CrĂ©er une nouvelle sessionGET /sessions/:app_name/:user_id/:session_id- Obtenir les dĂ©tails dâune sessionDELETE /sessions/:app_name/:user_id/:session_id- Supprimer une session
Consultez la documentation Serveur API pour obtenir les spécifications détaillées des points de terminaison.
Interface web
Le serveur inclut une interface web intĂ©grĂ©e accessible Ă lâadresse http://localhost:8080/ui/. Lâinterface fournit :
- Une interface de discussion interactive
- Lâinspection des sessions, de lâĂ©tat, des artefacts et de la chronologie des Ă©vĂ©nements
- Des rĂ©ponses diffusĂ©es en temps rĂ©el et lâactivitĂ© des outils
- La dĂ©lĂ©gation exacte de lâĂ©quipe et la topologie des transferts
- La dĂ©couverte des capacitĂ©s de lâagent et du protocole de lâinterface utilisateur
Arguments de CLI
Le lanceur CLI complet prend en charge les commandes suivantes lorsquâune fonctionnalitĂ© cli-* est activĂ©e :
| Command | Description | Example |
|---|---|---|
| (aucune) | Console interactive (par défaut) | cargo run |
chat | Console interactive (explicite) | cargo run -- chat |
serve | HTTP mode serveur | cargo run -- serve |
serve --port PORT | HTTP serveur sur un port personnalisé | cargo run -- serve --port 3000 |
Exemple complet
Voici un exemple complet présentant les deux modes :
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<()> {
// Load API key
let api_key = std::env::var("GOOGLE_API_KEY")
.expect("GOOGLE_API_KEY environment variable not set");
// Create model
let model = Arc::new(GeminiModel::new(&api_key, "gemini-3.7-flash")?);
// Create agent with tools
let weather_tool = FunctionTool::new(
"get_weather",
"Get the current weather for a location",
|params, _ctx| async move {
let location = params["location"].as_str().unwrap_or("unknown");
Ok(json!({
"location": location,
"temperature": 72,
"condition": "sunny"
}))
},
);
let agent = LlmAgentBuilder::new("weather_agent")
.description("An agent that provides weather information")
.instruction("You are a weather assistant. Use the get_weather tool to provide weather information.")
.model(model)
.tool(Arc::new(weather_tool))
.build()?;
// Run with Launcher. Enable a `cli-*` feature for full CLI/server mode.
Launcher::new(Arc::new(agent))
.app_name("weather_app")
.run()
.await
}
Exécuter en mode console :
cargo run
Exécuter en mode serveur depuis un projet API généré :
cargo adk new weather-api --template api
cd weather-api
cargo run
Vérification avant déploiement
Avant de déployer votre agent, utilisez cargo adk build pour vérifier que le projet se compile correctement sans procéder au déploiement :
# Verify compilation (no deployment)
cargo adk build
# Build with release optimizations
cargo adk build --release
Cela permet de dĂ©tecter les erreurs de compilation, les dĂ©pendances manquantes et les problĂšmes de configuration avant de procĂ©der au dĂ©ploiement. Câest particuliĂšrement utile dans les pipelines CI comme Ă©tape de contrĂŽle avant cargo adk deploy.
Consultez cargo adk build pour obtenir la documentation complĂšte de la commande.
Bonnes pratiques
- Variables dâenvironnement : chargez toujours les configurations sensibles (clĂ©s API) depuis des variables dâenvironnement
- Gestion des erreurs : utilisez une gestion appropriée des erreurs avec les types
Result - ArrĂȘt progressif : le Launcher gĂšre correctement Ctrl+C dans les deux modes
- SĂ©lection des ports : choisissez des ports qui nâentrent pas en conflit avec dâautres services (8080 par dĂ©faut)
- Gestion des sessions : en production, envisagez dâutiliser
PostgresSessionServiceouSqliteSessionServiceplutÎt que des sessions en mémoire - Vérification avant déploiement : exécutez
cargo adk buildavant le déploiement afin de détecter rapidement les problÚmes
Voir aussi
- Serveur API - Documentation détaillée de REST API
- Sessions - Gestion des sessions
- Artefacts - Stockage des artefacts
- Observabilité - Télémétrie et journalisation
PrĂ©cĂ©dent : â TĂ©lĂ©mĂ©trie | Suivant : Serveur â