LLM Inference APIGuide
सामान्य AI चैट API त्रुटियों का निदान
एक AI चैट API इंटीग्रेशन को डीबग करते समय अक्सर गलत कॉन्फ़िगर किए गए हेडर, गलत समझे गए टोकन सीमाओं या असंगत स्ट्रीमिंग हैंडलिंग के कारण विफलता होती है। यह गाइड उन सबसे आम अमलीजमाई त्रुटियों को संबोधित करती है जिनका सामना तब होता है जब डेवलपर OpenAI-कम्पैटिबल एंडपॉइंट्स को इंटीग्रेट करते हैं, यह सुनिश्चित करते हुए कि आपका कोड प्रोडक्शन में विश्वसनीय रूप से चले।
अपडेट किया गया:
मुख्य बिंदु
- कॉन्टेक्स्ट विंडो ओवरफ्लो से बचने के लिए केवल वर्ण गणना के बजाय हमेशा विशिष्ट मॉडल के टोकनाइज़र के आधार पर टोकन उपयोग की गणना करें।
- नेटवर्क ड्रॉप स्ट्रीम को असंगत स्थिति में छोड़ सकते हैं, इसलिए JSON स्ट्रीम को पार्स करने से पहले HTTP स्टेटस कोड जाँचकर स्ट्रीमिंग त्रुटियों को संभालें।
- सुनिश्चित करें कि आपके अनुरोध हेडर API विनिर्देश के साथ कड़े रूप से मेल खाते हैं, विशेष रूप से Content-Type और Authorization फ़ील्ड्स, ताकि चुपचाप 400 या 401 त्रुटियां न आएं।
- प्रति मिनट 300 अनुरोधों से अधिक होने पर 429 त्रुटियाँ आती हैं जो आपकी एप्लिकेशन को रोक सकती हैं, इसलिए तुरंत रेट लिमिट बैकऑफ़ रणनीतियाँ लागू करें।
कॉन्टेक्स्ट विंडो को समझना
API विफलताओं के सबसे सामान्य कारणों में से एक कॉन्टेक्स्ट विंडो से अधिक होना है। कॉन्टेक्स्ट विंडो एकल अनुरोध में अनुमत टोकनों की कुल संख्या को परिभाषित करता है, जिसमें इनपुट प्रॉम्प्ट और जनरेट की गई पूर्णता दोनों शामिल हैं। जब यह सीमा पूरी हो जाती है, तो API अनुरोध को त्रुटि के साथ अस्वीकार कर देगा, अक्सर यह संकेत देते हुए कि अनुक्रम बहुत लंबा है।
अक्सर डेवलपर टोकन की संख्या के बजाय वर्णों की गणना में भ्रमित हो जाते हैं। टोकनाइज़र पर निर्भर करके एक शब्द कई टोकन हो सकता है। उदाहरण के लिए, inference api द्वारा प्रदान की गई 100,000 टोकन की कॉन्टेक्स्ट विंडो जैसे बड़े संवाद इतिहास या बड़े दस्तावेज़ प्रसंस्करण की अनुमति देती है, लेकिन यह अनंत नहीं है।
- टोकन उपयोग की निगरानी करें: अनुरोध भेजने से पहले अपने मॉडल के लिए आधिकारिक टोकनाइज़र का उपयोग करके टोकन की सटीक गणना करें।
- बुद्धिमानी से ट्रंकेट करें: यदि आप सीमा से अधिक हो जाते हैं, तो नवीनतम संदेशों के बजाय संवाद इतिहास से सबसे पुराने संदेश हटाएं।
- ओवरहेड का हिसाब रखें: मॉडल के उत्तर के लिए कुछ टोकन आरक्षित रखें। यदि आपका प्रॉम्प्ट 63,000 टोकन का उपयोग करता है, तो कम्प्लीशन के लिए आपके पास केवल 1,000 टोकन शेष रह जाते हैं।
इस सीमा का प्रबंधन न करने से कनेक्शन टूट सकते हैं या अपूर्ण प्रतिक्रियाएँ मिल सकती हैं। प्रोडक्शन में डिप्लॉय करने से पहले हमेशा मॉडल की दस्तावेज़ीकरण के सापेक्ष अपनी टोकन गणना की पुष्टि करें।
स्ट्रीमिंग त्रुटियों को संभालना
सर्वर-सेंट इवेंट्स (SSE) के माध्यम से स्ट्रीमिंग प्रतिक्रियाएँ अच्छे उपयोगकर्ता अनुभव के लिए आवश्यक हैं, लेकिन वे त्रुटि हैंडलिंग में जटिलता लाती हैं। मानक JSON प्रतिक्रियाओं के विपरीत, एक स्ट्रीम बीच में टूट सकती है। यदि नेटवर्क त्रुटि होती है, तो आपका क्लाइंट आंशिक डेटा प्राप्त कर सकता है, जिससे स्ट्रीम एक अपरिभाषित स्थिति में छोड़ दी जाती है।
स्ट्रीम कन्ज्यूमर लागू करते समय, आपको स्ट्रीम के जीवनचक्र का सावधानी से प्रबंधन करना चाहिए। स्ट्रीम को पार्स करने से पहले HTTP स्टेटस कोड जाँचें। यदि कनेक्शन टूट जाता है, तो आपको त्रुटि लॉग करनी चाहिए और निर्णय लेना चाहिए कि पुनः प्रयास करना है या उपयोगकर्ता को संदेश दिखाना है।
इसके अतिरिक्त, सुनिश्चित करें कि आपका क्लाइंट स्ट्रीम के अंत के मार्कर को सही ढंग से संभालता है। कुछ लाइब्रेरी एक विशिष्ट बंद इवेंट की उम्मीद करती हैं, जबकि अन्य कनेक्शन बंद होने पर निर्भर करते हैं। इसकी गलत समझ लटकते प्रोसेस या मेमोरी लीक का कारण बन सकती है।
अपने स्ट्रीम अनुरोधों के लिए हमेशा टाइमआउट लागू करें। यदि API उचित समय के भीतर प्रतिक्रिया नहीं भेजता है, तो संसाधनों को मुक्त करने के लिए अनुरोध रद्द करें। यह उच्च-समानांतर वातावरण में स्थिरता बनाए रखने के लिए महत्वपूर्ण है।
टोकन गणना और सीमाएँ
टोकन गणना केवल कॉन्टेक्स्ट विंडो के भीतर रहने के बारे में नहीं है; यह लागत प्रबंधन के बारे में भी है। प्रत्येक टोकन की एक विशिष्ट कीमत होती है, और उपयोग की गलत गणना अप्रत्याशित बिलों का कारण बन सकती है। जबकि हमारी कीमत पारदर्शी है, इनपुट और आउटपुट के लिए प्रति-टोकन दरों के साथ, आपको अभी भी उपयोग की सटीक ट्रैकिंग की आवश्यकता है।
अधिकांश डेवलपर्स टोकन गिनने के लिए एक लाइब्रेरी का उपयोग करते हैं, लेकिन यह महत्वपूर्ण है कि आप जिस मॉडल का उपयोग कर रहे हैं उसके लिए सही टोकनाइज़र का उपयोग करें। अलग-अलग मॉडल अलग-अलग टोकनाइज़र का उपयोग करते हैं, और गलत टोकनाइज़र का उपयोग गिने गए टोकनों में महत्वपूर्ण अंतर का कारण बन सकता है। उदाहरण के लिए, अंग्रेजी पाठ पर प्रशिक्षित एक टोकनाइज़र विराम चिह्नों को कोड पर प्रशिक्षित एक के अलग तरीके से संभाल सकता है।
अपने उपयोग सीमाओं पर नज़र रखें। हमारी API प्रति कुंजी प्रति मिनट 300 अनुरोध की अनुमति देती है। यदि आप इससे अधिक हो जाते हैं, तो आपको 429 Too Many Requests त्रुटि मिलेगी। अपने एप्लिकेशन में एक सरल काउंटर लागू करने से आप इन सीमाओं के भीतर रहने और सेवा विघटन से बचने में मदद मिल सकती है।
अंत में, याद रखें कि टोकन गणना एक ही टोकनाइज़र के अलग-अलग इम्प्लीमेंटेशन के बीच थोड़ी भिन्न हो सकती है। सुसंगतता सुनिश्चित करने के लिए अपनी टोकन गणना तर्क की कुछ ज्ञात इनपुट के साथ परीक्षण करें।
हेडर कॉन्फ़िगरेशन की चालें
हेडर आपके API अनुरोधों की कॉन्फ़िगरेशन परत हैं। इन्हें गलत कॉन्फ़िगर करना 400 Bad Request या 401 Unauthorized त्रुटियों का एक सामान्य स्रोत है। दो सबसे महत्वपूर्ण हेडर Content-Type और Authorization हैं।
Content-Type हेडर को application/json पर सेट किया जाना चाहिए। यदि यह गायब है या गलत है, तो API आपके अनुरोध बॉडी को सही ढंग से पार्स नहीं कर सकता है। Authorization हेडर में Bearer YOUR_API_KEY फॉर्मेट में आपकी API कुंजी शामिल होनी चाहिए। एक सामान्य गलती Bearer प्रीफ़िक्स भूल जाना है, जिससे प्रमाणीकरण त्रुटि आती है।
- टाइपो की जाँच करें: सुनिश्चित करें कि आपकी API कुंजी सही ढंग से कॉपी की गई है, जिसमें कोई भी ट्रेलिंग स्पेस या न्यूलाइन शामिल हैं।
- हेडर की पुष्टि करें: भेजे जा रहे हेडर का निरीक्षण करने के लिए
curlया Postman जैसे टूल का उपयोग करें। - केस सेंसिटिविटी हैंडल करें: कुछ APIs हेडर नामों के लिए केस-सेंसिटिव हैं, हालाँकि अधिकांश आधुनिक APIs नहीं हैं।
अनुरोध भेजने से पहले हमेशा अपने हेडर की पुष्टि करें। हेडर में एक छोटी सी गलती पूरे अनुरोध को विफल कर सकती है, जिससे भ्रम और बर्बाद डीबगिंग समय होता है।
रेट लिमिट प्रबंधन
उचित उपयोग को सुनिश्चित करने और दुरुपयोग को रोकने के लिए रेट लिमिट लागू किए गए हैं। हमारा API प्रति कुंजी प्रति मिनट 300 अनुरोध की अनुमति देता है। यदि आप इस सीमा से अधिक हो जाते हैं, तो आपको 429 Too Many Requests त्रुटि मिलती है। इस त्रुटि में एक Retry-After हेडर होता है, जो इंगित करता है कि आपको अगला अनुरोध करने से पहले कितना समय प्रतीक्षा करनी चाहिए।
रेट लिमिट का प्रभावी प्रबंधन करने के लिए एक बैकऑफ़ रणनीति लागू करें। तुरंत पुनः प्रयास करने के बजाय, प्रत्येक पुनः प्रयास के साथ बढ़ते समय के लिए प्रतीक्षा करें। यह आपके एप्लिकेशन को पीक समय पर API को ओवरलोड होने से रोकता है।
अपने उपयोग मेट्रिक्स की निगरानी करें। अधिकांश APIs आपको अपने अनुरोध वॉल्यूम को ट्रैक करने के लिए एक डैशबोर्ड या API एंडपॉइंट प्रदान करते हैं। अपने एप्लिकेशन के अनुरोध पैटर्न को अनुकूलित करने के लिए इस डेटा का उपयोग करें। यदि आप बहुत सारे छोटे अनुरोध बना रहे हैं, तो उन्हें एक साथ बैच करने पर विचार करें।
याद रखें कि रेट लिमिट प्रति खाते के बजाय प्रति कुंजी होते हैं। यदि आपके पास कई कुंजियाँ हैं, तो प्रत्येक कुंजी की अपनी सीमा होती है। अप्रत्याशित रूप से सीमाओं पर पहुँचने से बचने के लिए अपनी कुंजी वितरण की योजना बनाएँ।
त्रुटि कोड व्याख्या
त्रुटि कोड को समझना डीबगिंग के लिए महत्वपूर्ण है। आप जिस सामान्य त्रुटियों का सामना करेंगे वे 400 Bad Request, 401 Unauthorized, 429 Too Many Requests, और 500 Internal Server Error हैं।
- 400 Bad Request: यह आमतौर पर अनुरोध बॉडी में किसी समस्या को इंगित करता है, जैसे कि गायब फ़ील्ड या अमान्य JSON। गलत फ़ील्ड के बारे में विवरण के लिए त्रुटि संदेश की जाँच करें।
- 401 Unauthorized: यह आपकी API कुंजी में किसी समस्या को इंगित करता है। सत्यापित करें कि कुंजी सही है और उसे रद्द नहीं किया गया है।
- 429 Too Many Requests: यह इंगित करता है कि आपने रेट लिमिट से अधिक हो गया है। इसे प्रभावी ढंग से हैंडल करने के लिए बैकऑफ़ रणनीति लागू करें।
- 500 Internal Server Error: यह सर्वर साइड पर किसी समस्या को इंगित करता है। छोटी देरी के बाद अनुरोध को पुनः प्रयास करें।
हमेशा त्रुटि प्रतिक्रिया बॉडी को लॉग करें। इसमें अक्सर यह जानकारी होती है कि क्या गलत हुआ, जैसे कि विशिष्ट फ़ील्ड जिसने त्रुटि का कारण बना। यह आपको घंटों का डीबगिंग समय बचा सकता है।
अनुरोध बॉडी को अनुकूलित करना
अनुरोध बॉडी आपकी API इंटरैक्शन का मुख्य हिस्सा है। इसे अनुकूलित करने से प्रदर्शन में सुधार और लागत में कमी हो सकती है। एक आम गलती एक ही अनुरोध में बहुत अधिक डेटा भेजना है। यदि आपका प्रॉम्प्ट बहुत बड़ा है, तो आप कॉन्टेक्स्ट विंडो से बाहर हो सकते हैं या अधिक लागत उठा सकते हैं।
अपने JSON को सावधानी से संरचित करें। सुनिश्चित करें कि सभी आवश्यक फ़ील्ड मौजूद हैं और वैकल्पिक फ़ील्ड केवल आवश्यकता पड़ने पर शामिल हैं। उदाहरण के लिए, यदि आपको स्ट्रीमिंग की आवश्यकता नहीं है, तो stream पैरामीटर शामिल न करें। इससे पेलोड साइज़ कम होती है और प्रतिक्रिया सरल होती है।
अपने अनुरोध बॉडी को परीक्षण करने के लिए curl या Postman जैसे टूल का उपयोग करें। इससे आपको सत्यापित करने की अनुमति मिलती है कि JSON मान्य है और API इसे सही ढंग से व्याख्या कर रहा है। यह आपको भेजे जा रहे किसी भी अनावश्यक डेटा की पहचान करने में भी मदद करता है।
अंत में, समान अनुरोधों के लिए प्रतिक्रियाओं को कैश करने पर विचार करें। यदि आप एक ही प्रॉम्प्ट कई बार भेज रहे हैं, तो आप प्रतिक्रिया को स्थानीय रूप से संग्रहीत कर सकते हैं और API कॉल फिर से करने से बच सकते हैं। इससे दोहराव वाले कार्यों के लिए लेटेंसी और लागत में काफी कमी आ सकती है।
टूल कॉलिंग का डीबगिंग
टूल कॉलिंग मॉडल को उपयोगकर्ता इनपुट के आधार पर फ़ंक्शन निष्पादित करने की अनुमति देती है। टूल कॉलिंग का डीबगिंग चुनौतीपूर्ण हो सकता है क्योंकि इसमें कई चरण शामिल हैं: अनुरोध भेजना, टूल कॉल प्राप्त करना, फ़ंक्शन निष्पादित करना और परिणाम मॉडल को वापस भेजना।
सुनिश्चित करें कि आपके फ़ंक्शन परिभाषाएँ सटीक हैं। स्कीमा को वास्तविक फ़ंक्शन सिग्नेचर से मेल खाना चाहिए। यदि स्कीमा गलत है, तो मॉडल अमान्य तर्क उत्पन्न कर सकता है, जिससे फ़ंक्शन निष्पादित करने का प्रयास करने पर त्रुटियाँ आ सकती हैं।
टूल कॉल तर्कों और फ़ंक्शन आउटपुट को लॉग करें। इससे आपको सत्यापित करने में मदद मिलती है कि मॉडल सही तर्क उत्पन्न कर रहा है और आपका फ़ंक्शन अपेक्षित अनुसार निष्पादित हो रहा है। यदि कोई त्रुटि है, तो लॉग आपको समस्या की पहचान करने में मदद करेगा।
त्रुटियों को सहजता से संभालें। यदि फ़ंक्शन निष्पादन विफल हो जाता है, तो मॉडल को त्रुटि संदेश भेजें ताकि वह अपनी प्रतिक्रिया समायोजित कर सके। इससे बेहतर उपयोगकर्ता अनुभव मिलता है और मॉडल त्रुटियों से स्वयं को पुनर्स्थापित करने में सक्षम होता है।
प्रश्न और उत्तर
मेरे API अनुरोधों के लिए टोकन उपयोग की गणना कैसे करें?
अपने विशिष्ट मॉडल के लिए प्रदान की गई आधिकारिक टोकनाइज़र लाइब्रेरी का उपयोग करें। कैरेक्टर काउंट टोकन काउंट का एक विश्वसनीय संकेतक नहीं है, क्योंकि अलग-अलग कैरेक्टर अलग-अलग संख्या में टोकन का प्रतिनिधित्व कर सकते हैं। अधिकांश SDK टोकन की सटीक गणना करने के लिए एक उपयोगिता फ़ंक्शन प्रदान करते हैं।
यदि मैं रेट लिमिट से अधिक हो जाता हूँ तो क्या होता है?
आपको 429 Too Many Requests त्रुटि मिलेगी। प्रतिक्रिया में एक <code>Retry-After</code> हेडर शामिल होगा जो इंगित करेगा कि आपको पुनः प्रयास करने से पहले कितना समय प्रतीक्षा करनी चाहिए। एक एक्सपोनेंशियल बैकऑफ़ रणनीति लागू करने की सलाह दी जाती है ताकि इसे प्रभावी ढंग से संभाला जा सके।
क्या मैं इस API के साथ कोई भी OpenAI-कम्पैटिबल SDK का उपयोग कर सकता हूँ?
हाँ, कोई भी SDK जो OpenAI API फॉर्मेट का समर्थन करता है, <code>base_url</code> और <code>API_KEY</code> एनवायरनमेंट वेरिएबल्स को बदलकर केवल उपयोग किया जा सकता है। इसमें Python, Node.js और अन्य लोकप्रिय भाषाएँ शामिल हैं।
अपने एप्लिकेशन में स्ट्रीमिंग त्रुटियों को कैसे संभालें?
स्ट्रीम को पार्स करने से पहले HTTP स्टेटस कोड जाँचें। यदि कनेक्शन टूट जाता है, तो त्रुटि को लॉग करें और निर्णय लें कि पुनः प्रयास करना है या उपयोगकर्ता को संदेश दिखाना है। हैंगिंग प्रोसेस से बचने के लिए टाइमआउट लागू करें।
आपकी कुंजी बस एक फ़ॉर्म दूर है
एक खाता बनाएँ, कुंजी कॉपी करें, बेस URL बदलें। सेटअप यही है।
API कुंजी पाएँ