adk-rust के साथ शुरुआत करना: Rust में आपका पहला AI एजेंट
Rust के साथ AI एजेंटों की शक्ति को अनलॉक करें। यह मार्गदर्शिका आपको अपना पहला बुद्धिमान एजेंट बनाने, चलाने और तैनात करने का तरीका बताती है।
विषय-सूची
- 1. adk-rust का परिचय
- 2. पूर्वापेक्षाएँ और सेटअप
- 3. अपना पहला ADK प्रोजेक्ट बनाना
- 4. adk-rust एजेंट की संरचना
- 5. अपने सरल AI एजेंट को लागू करना
- 6. अपने एजेंट का निर्माण और संचालन
- 7. अगले कदम
1. adk-rust का परिचय
एजेंट विकास चुनौती
जटिल कार्यों में सक्षम बुद्धिमान एजेंटों का निर्माण लंबे समय से चुनौतियों से भरा एक क्षेत्र रहा है। बड़े भाषा मॉडल (LLMs) को व्यवस्थित करना, स्थिति का प्रबंधन करना, विविध इनपुट को संभालना और इन एजेंटों को प्रभावी ढंग से तैनात करना अक्सर विशेष समाधानों और महत्वपूर्ण इंजीनियरिंग प्रयासों की मांग करता है। यह जटिलता उन डेवलपर्स के लिए एक बड़ी बाधा हो सकती है जो अपनी अनुप्रयोगों में शक्तिशाली AI क्षमताओं को एकीकृत करना चाहते हैं।
पेश है adk-rust: AI एजेंट विकास को सुव्यवस्थित करना
एजेंट डेवलपमेंट किट (ADK) का लक्ष्य AI एजेंट विकास को पारंपरिक सॉफ्टवेयर विकास जैसा महसूस कराना है, और `adk-rust` इसका मजबूत Rust कार्यान्वयन है। यह परिष्कृत AI एजेंटों को विकसित करने और तैनात करने के लिए डिज़ाइन किया गया एक लचीला, मॉड्यूलर ढाँचा प्रदान करता है। जबकि Gemini और Google पारिस्थितिकी तंत्र के लिए अनुकूलित, `adk-rust` मॉडल-अज्ञेयवादी और परिनियोजन-अज्ञेयवादी है, जो विभिन्न प्लेटफार्मों पर संगतता और लचीलापन सुनिश्चित करता है। यह मार्गदर्शिका आपको अपने वातावरण को स्थापित करने, अपना पहला `adk-rust` प्रोजेक्ट बनाने और एक बुनियादी AI सहायक को तैनात करने में मदद करेगी, जिससे आपको अपने एजेंटिक उद्यमों के लिए एक ठोस आधार मिलेगा।
2. पूर्वापेक्षाएँ और सेटअप
adk-rust लाइब्रेरी जोड़ने की आवश्यकता होगी। adk-rust को Gemini जैसे मॉडल के साथ इंटरैक्ट करने के लिए Google API कुंजी की भी आवश्यकता होती है।
सबसे पहले, सुनिश्चित करें कि आपके पास Rust स्थापित है। यदि नहीं, तो अनुशंसित तरीका rustup के माध्यम से है:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
सुनिश्चित करें कि आपका Rust संस्करण 1.75 या उससे अधिक है:
rustc --version
इसके बाद, हम adk-rust को एक डिपेंडेंसी के रूप में जोड़ेंगे। हम asynchronous ऑपरेशंस के लिए tokio और आपके API कुंजी जैसे एनवायरनमेंट वेरिएबल्स को मैनेज करने के लिए dotenv भी जोड़ेंगे। आप उन्हें cargo add के साथ जोड़ सकते हैं एक बार जब आप अपना प्रोजेक्ट बना लेते हैं (जो हम अगले चरण में करेंगे):
cargo add adk-rust
cargo add tokio --features full
cargo add dotenv
वैकल्पिक रूप से, आप इन्हें मैन्युअल रूप से अपनी Cargo.toml फ़ाइल में जोड़ सकते हैं:
[dependencies]
adk-rust = "0.1"
tokio = { version = "1.40", features = ["full"] }
dotenv = "0.15"
अंत में, आपको Gemini के लिए एक Google API कुंजी की आवश्यकता होगी। इसे Google AI Studio या Google Cloud Console से प्राप्त करें। अपने प्रोजेक्ट की रूट डायरेक्टरी में एक .env फ़ाइल बनाएं और अपनी कुंजी जोड़ें:
GOOGLE_API_KEY="YOUR_GEMINI_API_KEY_HERE"3. अपना पहला ADK प्रोजेक्ट बनाना
adk-rust एजेंट के लिए कंटेनर के रूप में काम करेगा। हम शुरू करने के लिए मानक cargo new कमांड का उपयोग करेंगे।
अपना टर्मिनल खोलें और चलाएं:
cargo new my_first_adk_agent
cd my_first_adk_agent
यह कमांड my_first_adk_agent नामक एक नया Rust प्रोजेक्ट इनिशियलाइज़ करता है। जेनरेटेड प्रोजेक्ट संरचना Rust डेवलपर्स के लिए परिचित लगेगी:
my_first_adk_agent/
├── Cargo.toml # Project manifest and dependencies
└── src/
└── main.rs # Your agent's main logic goes here
अब, आप इस my_first_adk_agent डायरेक्टरी के भीतर पिछले अनुभाग से cargo add कमांड चला सकते हैं। अपने GOOGLE_API_KEY के लिए रूट डायरेक्टरी (my_first_adk_agent/) में मैन्युअल रूप से एक .env फ़ाइल बनाना याद रखें।4. एक adk-rust एजेंट की संरचना
adk-rust एजेंट आमतौर पर LlmAgentBuilder के इर्द-गिर्द बनाया जाता है और Launcher का उपयोग करके निष्पादित किया जाता है। मुख्य विचार आपके एजेंट के व्यक्तित्व, निर्देशों और LLM को परिभाषित करना है जिसका उसे उपयोग करना चाहिए। आइए उन आवश्यक घटकों को देखें जो आपको एक adk-rust एजेंट की src/main.rs फ़ाइल में मिलेंगे।
adk-rust में, एक LlmAgent को एक विवरण, एक निर्देश (LLM के लिए एक सिस्टम प्रॉम्प्ट के रूप में कार्य करता है), और एक विशिष्ट भाषा मॉडल (जैसे Gemini) के साथ कॉन्फ़िगर किया जाता है। फिर Launcher इस एजेंट को लेता है और निष्पादन को संभालता है, एक इंटरैक्टिव कंसोल या एक वेब सर्वर इंटरफ़ेस प्रदान करता है। यह एब्स्ट्रैक्शन बाहरी दुनिया के साथ एजेंट की बातचीत को सरल बनाता है।
नीचे एक adk-rust एजेंट के लिए पूर्ण 'हैलो वर्ल्ड' समकक्ष है। इस कोड को अपनी src/main.rs फ़ाइल में कॉपी करें। हम अगले अनुभाग में प्रत्येक भाग को विस्तार से समझाएंगे।
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
// 1. Load environment variables from .env file
dotenv::dotenv().ok();
// 2. Get API key from environment
let api_key = std::env::var("GOOGLE_API_KEY")
.expect("GOOGLE_API_KEY environment variable not set");
// 3. Create the Gemini model
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
// 4. Build your agent
let agent = LlmAgentBuilder::new("my_assistant")
.description("A helpful AI assistant")
.instruction("You are a friendly and helpful assistant. Answer questions clearly and concisely.")
.model(Arc::new(model))
.build()?;
// 5. Run the agent with the CLI launcher
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}5. अपने सरल AI एजेंट को लागू करना
adk-rust एजेंट के लिए 'हैलो वर्ल्ड' समकक्ष को देखें, इस बात पर ध्यान केंद्रित करते हुए कि कोड का प्रत्येक भाग एक कार्यात्मक AI सहायक बनाने में कैसे योगदान देता है। आपको पिछले अनुभाग से कोड को अपनी src/main.rs फ़ाइल में कॉपी कर लेना चाहिए।
1. **एनवायरनमेंट वेरिएबल लोडिंग**: dotenv::dotenv().ok(); आपकी .env फ़ाइल से वेरिएबल्स लोड करता है, जिससे आपका GOOGLE_API_KEY आपके Rust एप्लिकेशन के भीतर उपलब्ध हो जाता है।
2. **API कुंजी पुनर्प्राप्ति**: std::env::var("GOOGLE_API_KEY") एनवायरनमेंट से आपकी API कुंजी प्राप्त करता है। .expect() कॉल सुनिश्चित करता है कि यदि कुंजी नहीं मिलती है तो प्रोग्राम पैनिक करेगा और एक स्पष्ट त्रुटि संदेश प्रदान करेगा, जिससे मॉडल को इनिशियलाइज़ करते समय साइलेंट विफलताओं को रोका जा सकेगा।
3. **मॉडल इनिशियलाइज़ेशन**: let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?; एक GeminiModel को इंस्टेंशिएट करता है। यहां, हम अपनी API कुंजी प्रदान करते हैं और वांछित Gemini मॉडल संस्करण (gemini-2.5-flash) निर्दिष्ट करते हैं। यह ऑब्जेक्ट वास्तविक LLM सेवा के साथ कनेक्शन और इंटरैक्शन लॉजिक को समाहित करता है, API कॉल्स की जटिलताओं को दूर करता है।
4. **एजेंट निर्माण**: यह वह जगह है जहाँ आप LlmAgentBuilder का उपयोग करके अपने एजेंट की मुख्य पहचान और व्यवहार को परिभाषित करते हैं:
* LlmAgentBuilder::new("my_assistant"): एक एजेंट का निर्माण शुरू करता है, उसे एक अद्वितीय आईडी असाइन करता है।
* .description("A helpful AI assistant"): आपके एजेंट के उद्देश्य का एक मानव-पठनीय विवरण प्रदान करता है, जो दस्तावेज़ीकरण या उच्च-स्तरीय ऑर्केस्ट्रेशन के लिए उपयोगी है।
* .instruction("You are a friendly and helpful assistant. Answer questions clearly and concisely."): यह आपका सिस्टम प्रॉम्प्ट है। यह अंतर्निहित LLM को यह बताता है कि कैसे व्यवहार करना है, प्रतिक्रिया देनी है, और उसका समग्र व्यक्तित्व क्या है।
* .model(Arc::new(model)): एजेंट को हमारे द्वारा बनाए गए GeminiModel के साथ जोड़ता है। Arc (एटॉमिक रेफरेंस काउंटेड) एक थ्रेड-सेफ रेफरेंस-काउंटिंग पॉइंटर है, जिसका उपयोग यहां साझा स्वामित्व के लिए किया जाता है, जो asynchronous Rust एप्लिकेशनों में आम है।
* .build()?: एजेंट निर्माण को अंतिम रूप देता है। यह एक Result लौटाता है, और ? का उपयोग सुविधाजनक त्रुटि प्रसार के लिए किया जाता है।
5. **एजेंट लॉन्च**: Launcher::new(Arc::new(agent)).run().await?; आपके कॉन्फ़िगर किए गए एजेंट को लेता है और उसे निष्पादित करता है। Launcher::run() का डिफ़ॉल्ट व्यवहार एक इंटरैक्टिव कंसोल शुरू करना है जहाँ आप अपने एजेंट को प्रॉम्प्ट टाइप कर सकते हैं और उसकी प्रतिक्रियाएँ देख सकते हैं। await कीवर्ड इंगित करता है कि यह एक asynchronous ऑपरेशन है, जो I/O-बाउंड कार्यों जैसे कि LLM के साथ इंटरैक्ट करने के लिए विशिष्ट है।6. अपने एजेंट का निर्माण और संचालन
src/main.rs फ़ाइल एजेंट कोड से भर जाती है और आपकी Cargo.toml डिपेंडेंसी के साथ अपडेट हो जाती है, तो आप अपने एजेंट को जीवंत करने के लिए तैयार हैं! cargo इसके लिए आपका प्राथमिक उपकरण है।
सबसे पहले, Rust कोड को एक निष्पादन योग्य में संकलित करने के लिए अपना प्रोजेक्ट बनाएं:
cargo build
यह कमांड आपके एजेंट और उसकी डिपेंडेंसी को संकलित करता है। यदि सफल होता है, तो आपके पास target/debug/ डायरेक्टरी में एक निष्पादन योग्य होगा (या target/release/ यदि आप --release के साथ निर्माण करते हैं)।
अपने एजेंट को इंटरैक्टिव कंसोल मोड में चलाने के लिए, जो परीक्षण और त्वरित इंटरैक्शन के लिए उत्कृष्ट है, उपयोग करें:
cargo run
आपका टर्मिनल एक इंटरैक्टिव चैट इंटरफ़ेस बन जाएगा जहाँ आप प्रश्न टाइप कर सकते हैं, और आपका एजेंट कॉन्फ़िगर किए गए Gemini मॉडल का उपयोग करके प्रतिक्रिया देगा। बाहर निकलने के लिए, आमतौर पर आप exit टाइप कर सकते हैं या Ctrl+C दबा सकते हैं।
adk-rust आपके एजेंट को वेब सर्वर के रूप में चलाने का एक तरीका भी प्रदान करता है, जिससे आप HTTP अनुरोधों के माध्यम से इसके साथ इंटरैक्ट कर सकते हैं। यह आपके एजेंट को वेब एप्लिकेशनों या अन्य सेवाओं में एकीकृत करने के लिए विशेष रूप से उपयोगी है:
cargo run -- serve
डिफ़ॉल्ट रूप से, यह सर्वर को http://127.0.0.1:8080 पर शुरू करेगा। यदि आवश्यक हो तो आप एक अलग पोर्ट निर्दिष्ट कर सकते हैं:
cargo run -- serve --port 3000
अब, आपका एजेंट एक वेब API के माध्यम से सुलभ है! आप curl जैसे टूल या वेब ब्राउज़र का उपयोग करके कॉन्फ़िगर किए गए एंडपॉइंट (जैसे, http://127.0.0.1:8080/v1/agent) पर अनुरोध भेज सकते हैं। यह आपके AI एजेंट को एक डिप्लॉय करने योग्य, कॉलेबल सेवा बनाता है।7. अगले कदम
adk-rust का उपयोग करके अपना पहला AI एजेंट सफलतापूर्वक बनाया और चलाया है। यह तो बस शुरुआत है जो आप इस फ्रेमवर्क के साथ हासिल कर सकते हैं। आगे बढ़ने के लिए कुछ सुझाव यहां दिए गए हैं:
* **ADK दस्तावेज़ देखें**: आधिकारिक adk-rust दस्तावेज़ में गहराई से जाएं ताकि अधिक उन्नत सुविधाओं को समझा जा सके, जैसे कि अन्य घटकों के साथ एकीकृत करना, स्थिति का प्रबंधन करना, या अधिक जटिल एजेंट वर्कफ़्लो बनाना।
* **कस्टम उपकरण और क्षमताएं**: जानें कि अपने एजेंट को कस्टम उपकरणों से कैसे लैस करें, जिससे वह बाहरी APIs, डेटाबेस के साथ इंटरैक्ट कर सके, या केवल टेक्स्ट जनरेशन से परे विशिष्ट गणनाएं कर सके। यह एजेंट क्षमताओं का विस्तार करने के लिए एक शक्तिशाली सुविधा है।
* **डिप्लॉयमेंट विकल्प**: अपने adk-rust एजेंटों के लिए विभिन्न डिप्लॉयमेंट रणनीतियों की जांच करें, चाहे वह Docker के साथ कंटेनराइज़ेशन हो, क्लाउड प्लेटफॉर्म पर डिप्लॉय करना हो, या मौजूदा Rust सेवाओं में एकीकृत करना हो।
* **सामुदायिक सहभागिता**: adk-rust समुदाय में शामिल हों। अपने प्रोजेक्ट साझा करना, प्रश्न पूछना और चर्चाओं में योगदान देना आपकी सीखने और समस्या-समाधान को काफी तेज कर सकता है। नवीनतम विकास और सर्वोत्तम प्रथाओं से जुड़े रहें।