लॉन्चर
Launcher आपके ADK agents को इंटरैक्टिव कंसोल मोड और HTTP सर्वर मोड दोनों के लिए अंतर्निहित समर्थन के साथ चलाने का एक सरल, एक-पंक्ति तरीका प्रदान करता है। यह CLI तर्क पार्सिंग, session प्रबंधन को संभालता है और agents को डिप्लॉय करने के लिए एक सुसंगत इंटरफ़ेस प्रदान करता है।
अवलोकन
Launcher को agent डिप्लॉयमेंट को यथासंभव सरल बनाने के लिए डिज़ाइन किया गया है। कोड की एक ही पंक्ति के साथ, आप कर सकते हैं:
- परीक्षण और विकास के लिए अपने agent को एक इंटरैक्टिव कंसोल में चलाएं
- अपने agent को वेब UI के साथ HTTP सर्वर के रूप में डिप्लॉय करें
- एप्लिकेशन का नाम और artifact storage को कस्टमाइज़ करें
मूल उपयोग
कंसोल मोड (डिफ़ॉल्ट)
Launcher का उपयोग करने का सबसे सरल तरीका इसे अपने agent के साथ बनाना और 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-2.5-flash")?);
let agent = LlmAgentBuilder::new("my_agent")
.description("A helpful assistant")
.instruction("You are a helpful assistant.")
.model(model)
.build()?;
// Run with CLI support (console by default)
Launcher::new(Arc::new(agent)).run().await
}
अपने agent को चलाएं:
# Interactive console (default)
cargo run
# Or explicitly specify console mode
cargo run -- chat
सर्वर मोड
अपने agent को वेब UI के साथ HTTP सर्वर के रूप में चलाने के लिए:
# Start server on default port (8080)
cargo run -- serve
# Start server on custom port
cargo run -- serve --port 3000
सर्वर शुरू होगा और प्रदर्शित करेगा:
🚀 ADK Server starting on http://localhost:8080
📱 Open http://localhost:8080 in your browser
Press Ctrl+C to stop
कॉन्फ़िगरेशन विकल्प
कस्टम एप्लिकेशन नाम
डिफ़ॉल्ट रूप से, Launcher agent के नाम का उपयोग एप्लिकेशन नाम के रूप में करता है। आप इसे कस्टमाइज़ कर सकते हैं:
Launcher::new(Arc::new(agent))
.app_name("my_custom_app")
.run()
.await
कस्टम Artifact Service
अपनी स्वयं की artifact service इम्प्लीमेंटेशन प्रदान करें:
use adk_artifact::InMemoryArtifactService;
let artifact_service = Arc::new(InMemoryArtifactService::new());
Launcher::new(Arc::new(agent))
.with_artifact_service(artifact_service)
.run()
.await
कंसोल मोड विवरण
कंसोल मोड में, Launcher:
- एक इन-मेमोरी session service बनाता है
- उपयोगकर्ता के लिए एक session बनाता है
- एक इंटरैक्टिव REPL लूप शुरू करता है
- real-time में agent प्रतिक्रियाओं को स्ट्रीम करता है
- multi-agent systems में agent transfers को संभालता है
कंसोल इंटरेक्शन
🤖 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!
Multi-Agent Console
multi-agent systems का उपयोग करते समय, कंसोल दिखाता है कि कौन सा agent प्रतिक्रिया दे रहा है:
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.
सर्वर मोड विवरण
इन-सर्वर मोड में, Launcher:
- ऑब्जर्वेबिलिटी के लिए telemetry को इनिशियलाइज़ करता है
- एक इन-मेमोरी session service बनाता है
- REST API endpoints के साथ एक HTTP server शुरू करता है
- आपके agent के साथ इंटरैक्ट करने के लिए एक web UI प्रदान करता है
उपलब्ध एंडपॉइंट्स
सर्वर निम्नलिखित REST API endpoints को उजागर करता है:
GET /health- हेल्थ चेक एंडपॉइंटPOST /run_sse- Server-Sent Events स्ट्रीमिंग के साथ agent चलाएँGET /sessions- सेशन्स की सूची बनाएँPOST /sessions- एक नया session बनाएँGET /sessions/:app_name/:user_id/:session_id- session विवरण प्राप्त करेंDELETE /sessions/:app_name/:user_id/:session_id- एक session हटाएँ
विस्तृत एंडपॉइंट स्पेसिफिकेशन्स के लिए Server API डॉक्यूमेंटेशन देखें।
वेब UI
सर्वर में http://localhost:8080/ui/ पर एक बिल्ट-इन web UI शामिल है। UI प्रदान करता है:
- इंटरैक्टिव चैट इंटरफेस
- सेशन प्रबंधन
- रियल-टाइम स्ट्रीमिंग प्रतिक्रियाएँ
- मल्टी-agent विज़ुअलाइज़ेशन
CLI आर्ग्युमेंट्स
Launcher निम्नलिखित CLI कमांड्स का समर्थन करता है:
| कमांड | विवरण | उदाहरण |
|---|---|---|
| (कोई नहीं) | इंटरैक्टिव कंसोल (डिफ़ॉल्ट) | cargo run |
chat | इंटरैक्टिव कंसोल (स्पष्ट) | cargo run -- chat |
serve | HTTP server मोड | cargo run -- serve |
serve --port PORT | कस्टम पोर्ट पर HTTP server | cargo run -- serve --port 3000 |
पूरा उदाहरण
यहां दोनों मोड्स को दर्शाने वाला एक पूरा उदाहरण दिया गया है:
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-2.5-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 (supports both console and server modes via CLI)
Launcher::new(Arc::new(agent))
.app_name("weather_app")
.run()
.await
}
कंसोल मोड में चलाएँ:
cargo run
सर्वर मोड में चलाएँ:
cargo run -- serve --port 8080
सर्वोत्तम प्रथाएँ
- एनवायरनमेंट वेरिएबल: हमेशा संवेदनशील कॉन्फ़िगरेशन (API keys) को एनवायरनमेंट वेरिएबल से लोड करें
- त्रुटि प्रबंधन:
Resultप्रकारों के साथ उचित त्रुटि प्रबंधन का उपयोग करें - ग्रेसफुल शटडाउन: Launcher दोनों मोड में Ctrl+C को ग्रेसफुली हैंडल करता है
- पोर्ट चयन: ऐसे पोर्ट चुनें जो अन्य services के साथ संघर्ष न करें (डिफ़ॉल्ट 8080)
- सेशन प्रबंधन: उत्पादन में, इन-मेमोरी sessions के बजाय
DatabaseSessionServiceका उपयोग करने पर विचार करें
संबंधित
- Server API - विस्तृत REST API डॉक्यूमेंटेशन
- सेशन्स - सेशन प्रबंधन
- आर्टिफैक्ट्स - आर्टिफैक्ट स्टोरेज
- ऑब्जर्वेबिलिटी - Telemetry और लॉगिंग
पिछला: ← Telemetry | अगला: सर्वर →