ChatGPT API के साथ काम करने के लिए Rust एक आदर्श विकल्प क्यों है?
\nजब उच्च-लोड वाले AI सेवाओं के निर्माण की बात आती है, तो अधिकांश डेवलपर्स सहज रूप से Python की ओर आकर्षित होते हैं। लेकिन क्या होगा अगर मैं आपसे कहूँ कि Rust गति और सुरक्षा में Python को टक्कर दे सकता है, साथ ही ChatGPT API के साथ बातचीत की पूरी शक्ति को बनाए रख सकता है? आज हम जानेंगे कि कैसे दो अलग-अलग चीजों को जोड़ा जाए - न्यूरल नेटवर्क की सुंदरता और सिस्टम भाषा का प्रदर्शन।
\nकल्पना करें: आपका Rust पर चैट-बॉट प्रति सेकंड हजारों अनुरोधों को संसाधित करता है, मेमोरी त्रुटियों के साथ क्रैश नहीं होता है, और Python के समकक्षों की तुलना में 10 गुना कम संसाधनों की खपत करता है। क्या यह कल्पना जैसा लगता है? वास्तविकता में आपका स्वागत है। इस लेख में, हम एक पूर्ण AI सहायक का निर्माण करेंगे जो OpenAI API के साथ इतनी तेज़ी से संवाद करेगा कि आप "ChatGPT" कहने से पहले ही बातचीत कर लेंगे।
\nवैसे, अगर आप अभी तक इस भाषा से परिचित नहीं हैं, तो घबराएं नहीं - हम मूल बातों से शुरू करेंगे और धीरे-धीरे एसिंक्रोनस प्रोग्रामिंग की गहराई में उतरेंगे। Rust काटता नहीं है, अगर आप जानते हैं कि इसे कैसे संभालना है।
\n\nशुरुआत करने के लिए हमें क्या चाहिए?
\nकोड में गोता लगाने से पहले, आइए अपने टूलकिट को तैयार करें। आपको आवश्यकता होगी:
\n- \n
- Rust (
rustupके माध्यम से स्थापित) \n - OpenAI API-कुंजी (platform.openai.com पर प्राप्त की जा सकती है) \n
- HTTP अनुरोधों और JSON की बुनियादी समझ \n
- थोड़ा धैर्य और एक कप कॉफी \n
हम सभी कोड आधुनिक क्रेट्स का उपयोग करके लिखेंगे: HTTP अनुरोधों के लिए reqwest, डेटा सीरियलाइजेशन के लिए serde और एसिंक्रोनसिटी के लिए tokio। यह 2024 में Rust API के साथ काम करने के लिए मानक स्टैक है।
प्रोजेक्ट बनाएं और निर्भरताएँ जोड़ें
\nटर्मिनल खोलें और एक नया प्रोजेक्ट बनाएं:
\ncargo new chatgpt_rust --bin\ncd chatgpt_rust\nअब Cargo.toml खोलें और आवश्यक क्रेट्स जोड़ें:
[dependencies]\ntokio = { version = "1", features = ["full"] }\nreqwest = { version = "0.12", features = ["json"] }\nserde = { version = "1", features = ["derive"] }\nserde_json = "1"\ndotenv = "0.15" # .env में API-कुंजी संग्रहीत करने के लिए\nreqwest में features = ["json"] पर ध्यान दें - यह स्वचालित रूप से JSON सीरियलाइजेशन समर्थन को जोड़ेगा। इसके बिना, आपको मैन्युअल रूप से प्रतिक्रियाओं को पार्स करना होगा।
पर्यावरण चर सेट करना
\nप्रोजेक्ट की जड़ में एक .env फ़ाइल बनाएं और उसमें अपनी कुंजी जोड़ें:
OPENAI_API_KEY=sk-your-secret-key-here\n.env को .gitignore में जोड़ना न भूलें - सुरक्षा सर्वोपरि है! Rust प्रकारों के मामले में सख्त है, लेकिन रहस्यों के मामले में यह और भी सख्त है।
ChatGPT API को अनुरोध के लिए डेटा संरचना
\nOpenAI हमसे एक विशिष्ट JSON की अपेक्षा करता है। आइए इसे serde की मदद से वर्णित करें - यह कोड को पढ़ने योग्य और सुरक्षित बनाएगा:
\nuse serde::{Deserialize, Serialize};\n\n#[derive(Serialize)]\nstruct ChatRequest {\n model: String,\n messages: Vec<Message>,\n temperature: f32,\n max_tokens: u32,\n}\n\n#[derive(Serialize, Deserialize)]\nstruct Message {\n role: String,\n content: String,\n}\n\n#[derive(Deserialize)]\nstruct ChatResponse {\n choices: Vec<Choice>,\n}\n\n#[derive(Deserialize)]\nstruct Choice {\n message: Message,\n}\n#[derive] विशेषताओं पर ध्यान दें - यह Rust का जादू है जो स्वचालित रूप से सीरियलाइजेशन के लिए विधियाँ उत्पन्न करता है। serde के बिना, आपको टनों बॉयलरप्लेट कोड लिखना होगा।
OpenAI के लिए एसिंक्रोनस क्लाइंट लिखना
\nअब सबसे दिलचस्प हिस्सा - एक फ़ंक्शन बनाना जो ChatGPT API के साथ संवाद करेगा। हम एसिंक्रोनस अनुरोधों के लिए reqwest और tokio का उपयोग करेंगे:
use std::env;\nuse dotenv::dotenv;\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn std::error::Error>> {\n dote