लॉन्चर

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:

  1. एक इन-मेमोरी session service बनाता है
  2. उपयोगकर्ता के लिए एक session बनाता है
  3. एक इंटरैक्टिव REPL लूप शुरू करता है
  4. real-time में agent प्रतिक्रियाओं को स्ट्रीम करता है
  5. 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:

  1. ऑब्जर्वेबिलिटी के लिए telemetry को इनिशियलाइज़ करता है
  2. एक इन-मेमोरी session service बनाता है
  3. REST API endpoints के साथ एक HTTP server शुरू करता है
  4. आपके 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
serveHTTP server मोडcargo run -- serve
serve --port PORTकस्टम पोर्ट पर HTTP servercargo 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

सर्वोत्तम प्रथाएँ

  1. एनवायरनमेंट वेरिएबल: हमेशा संवेदनशील कॉन्फ़िगरेशन (API keys) को एनवायरनमेंट वेरिएबल से लोड करें
  2. त्रुटि प्रबंधन: Result प्रकारों के साथ उचित त्रुटि प्रबंधन का उपयोग करें
  3. ग्रेसफुल शटडाउन: Launcher दोनों मोड में Ctrl+C को ग्रेसफुली हैंडल करता है
  4. पोर्ट चयन: ऐसे पोर्ट चुनें जो अन्य services के साथ संघर्ष न करें (डिफ़ॉल्ट 8080)
  5. सेशन प्रबंधन: उत्पादन में, इन-मेमोरी sessions के बजाय DatabaseSessionService का उपयोग करने पर विचार करें

संबंधित


पिछला: ← Telemetry | अगला: सर्वर →