मुख्य कंटेंट तक स्किप करें

त्रुटियाँ, रेट लिमिट और विश्वसनीयता

मध्यम
What you'll learn
  • HTTP त्रुटि मानचित्र पढ़ें और जानें कि किन स्टेटस को रीट्राई करना है बनाम किन्हें ठीक करना है
  • अस्थायी त्रुटियों को एक्सपोनेंशियल बैकऑफ़ और जिटर के साथ, सीमित रूप में रीट्राई करें
  • retry-after, स्मूदिंग, बैचिंग, और सस्ते मॉडल के साथ रेट लिमिट को संभालें
  • अपने कोड को मॉडल डेप्रिकेशन और माइग्रेशन से सुरक्षित रखें

प्रोडक्शन कोड एक नेटवर्क सेवा से बात करता है, इसलिए इसे विफलता की अपेक्षा करनी चाहिए। यहाँ थोड़ी-सी संरचना एक अस्थिर इंटीग्रेशन और एक भरोसेमंद इंटीग्रेशन के बीच का अंतर है।

त्रुटि मानचित्र

सामान्य HTTP स्टेटस जिन्हें आप संभालेंगे:

स्टेटसअर्थक्या करें
400अमान्य अनुरोधपेलोड ठीक करें; उसी रूप में रीट्राई न करें
401ग़लत/अनुपस्थित API कुंजीक्रेडेंशियल जाँचें
403अनुमति नहींएक्सेस/अनुमतियाँ जाँचें
429रेट लिमिटेडबैक ऑफ़ करें और रीट्राई करें (retry-after का सम्मान करें)
500/529सर्वर त्रुटि / ओवरलोडबैकऑफ़ के साथ रीट्राई करें
Pro tip
  • SDK इन्हें टाइप्ड एक्सेप्शन के रूप में सामने लाते हैं, ताकि आप स्ट्रिंग पार्स करने के बजाय स्पष्ट रूप से शाखाएँ बना सकें।

बैकऑफ़ के साथ रीट्राई

अस्थायी त्रुटियों (429, 5xx) के लिए, एक्सपोनेंशियल बैकऑफ़ + जिटर के साथ रीट्राई करें, सीमित रूप में:

import time, random
for attempt in range(5):
try:
return client.messages.create(...)
except (RateLimitError, APIStatusError) as e:
if attempt == 4 or not should_retry(e):
raise
time.sleep(min(2 ** attempt + random.random(), 30))
Watch out
  • कई SDK अस्थायी त्रुटियों को स्वचालित रूप से रीट्राई करते हैं — अपनी ख़ुद की रीट्राई जोड़ने से पहले अपने क्लाइंट के डिफ़ॉल्ट को जानें, वरना आप रीट्राई दोगुनी कर सकते हैं।

रेट लिमिट

सीमाएँ प्रति-अकाउंट/टियर लागू होती हैं (अनुरोध और प्रति मिनट टोकन)। जब आप किसी सीमा से टकराते हैं तो आपको समय संकेतों के साथ 429 मिलता है। सीमा के नीचे रहने की रणनीतियाँ:

Guided walkthrough1 of 4
  1. जब आपको 429 मिले, तो रिस्पॉन्स में समय संकेत पढ़ें और रीट्राई करने से पहले उतनी देर प्रतीक्षा करें।

अधिक-मात्रा वाले चरणों के लिए सही मॉडल चुनने हेतु एक मॉडल चुनना देखें।

मॉडल माइग्रेशन

मॉडल ID दिनांकित/संस्करणित होते हैं और बंद कर दिए जाते हैं। ख़ुद को सुरक्षित रखें:

Key takeaways
  • 400/401/403 आपकी ग़लती हैं — अनुरोध या क्रेडेंशियल ठीक करें, आँख मूँदकर रीट्राई न करें। 429 और 500/529 रीट्राई करने योग्य हैं।
  • अस्थायी त्रुटियों को एक्सपोनेंशियल बैकऑफ़ + जिटर के साथ, सीमित रूप में रीट्राई करें (जैसे min(2 ** attempt + random(), 30))।
  • 429 पर: retry-after का सम्मान करें, बर्स्ट को सहज बनाएँ, ऑफ़लाइन काम को बैच करें, और अधिक-मात्रा वाले चरणों को सस्ते मॉडल पर रूट करें।
  • मॉडल ID को कॉन्फ़िग से पढ़ें, डेप्रिकेशन पर नज़र रखें, और मॉडल माइग्रेट करते समय evals फिर से चलाएँ।

ख़ुद को परखें

0/4
  1. आपको 400 अमान्य अनुरोध मिलता है। आपको क्या करना चाहिए?
  2. कौन से स्टेटस वे हैं जिन्हें आपको बैकऑफ़ के साथ रीट्राई करना चाहिए?
  3. एक्सपोनेंशियल बैकऑफ़ में जिटर क्यों जोड़ें?
  4. इनमें से कौन सी सुझाई गई रेट-लिमिट रणनीति नहीं है?

आगे