त्रुटियाँ, रेट लिमिट और विश्वसनीयता
- HTTP त्रुटि मानचित्र पढ़ें और जानें कि किन स्टेटस को रीट्राई करना है बनाम किन्हें ठीक करना है
- अस्थायी त्रुटियों को एक्सपोनेंशियल बैकऑफ़ और जिटर के साथ, सीमित रूप में रीट्राई करें
- retry-after, स्मूदिंग, बैचिंग, और सस्ते मॉडल के साथ रेट लिमिट को संभालें
- अपने कोड को मॉडल डेप्रिकेशन और माइग्रेशन से सुरक्षित रखें
प्रोडक्शन कोड एक नेटवर्क सेवा से बात करता है, इसलिए इसे विफलता की अपेक्षा करनी चाहिए। यहाँ थोड़ी-सी संरचना एक अस्थिर इंटीग्रेशन और एक भरोसेमंद इंटीग्रेशन के बीच का अंतर है।
त्रुटि मानचित्र
सामान्य HTTP स्टेटस जिन्हें आप संभालेंगे:
| स्टेटस | अर्थ | क्या करें |
|---|---|---|
| 400 | अमान्य अनुरोध | पेलोड ठीक करें; उसी रूप में रीट्राई न करें |
| 401 | ग़लत/अनुपस्थित API कुंजी | क्रेडेंशियल जाँचें |
| 403 | अनुमति नहीं | एक्सेस/अनुमतियाँ जाँचें |
| 429 | रेट लिमिटेड | बैक ऑफ़ करें और रीट्राई करें (retry-after का सम्मान करें) |
| 500/529 | सर्वर त्रुटि / ओवरलोड | बैकऑफ़ के साथ रीट्राई करें |
- 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))
- कई SDK अस्थायी त्रुटियों को स्वचालित रूप से रीट्राई करते हैं — अपनी ख़ुद की रीट्राई जोड़ने से पहले अपने क्लाइंट के डिफ़ॉल्ट को जानें, वरना आप रीट्राई दोगुनी कर सकते हैं।
रेट लिमिट
सीमाएँ प्रति-अकाउंट/टियर लागू होती हैं (अनुरोध और प्रति मिनट टोकन)। जब आप किसी सीमा से टकराते हैं तो आपको समय संकेतों के साथ 429 मिलता है। सीमा के नीचे रहने की रणनीतियाँ:
Guided walkthrough1 of 4
- जब आपको 429 मिले, तो रिस्पॉन्स में समय संकेत पढ़ें और रीट्राई करने से पहले उतनी देर प्रतीक्षा करें।
- अनुरोधों को एक साथ दागने के बजाय समय के साथ फैलाएँ।
- अधिक-मात्रा वाले, गैर-इंटरैक्टिव जॉब्स को बैच प्रोसेसिंग में ले जाएँ।
- अधिक-मात्रा वाले चरणों को सस्ते मॉडल पर रूट करें — एक मॉडल चुनना देखें।
अधिक-मात्रा वाले चरणों के लिए सही मॉडल चुनने हेतु एक मॉडल चुनना देखें।
मॉडल माइग्रेशन
मॉडल ID दिनांकित/संस्करणित होते हैं और बंद कर दिए जाते हैं। ख़ुद को सुरक्षित रखें:
- मॉडल ID को कॉन्फ़िग से पढ़ें, बिखरे हुए लिटरल्स से नहीं।
- डेप्रिकेशन पर नज़र रखें — देखें डेप्रिकेशन और माइग्रेशन वॉच और मॉडल तालिका।
- मॉडल बदलते समय अपने evals फिर से चलाएँ।
- 400/401/403 आपकी ग़लती हैं — अनुरोध या क्रेडेंशियल ठीक करें, आँख मूँदकर रीट्राई न करें। 429 और 500/529 रीट्राई करने योग्य हैं।
- अस्थायी त्रुटियों को एक्सपोनेंशियल बैकऑफ़ + जिटर के साथ, सीमित रूप में रीट्राई करें (जैसे min(2 ** attempt + random(), 30))।
- 429 पर: retry-after का सम्मान करें, बर्स्ट को सहज बनाएँ, ऑफ़लाइन काम को बैच करें, और अधिक-मात्रा वाले चरणों को सस्ते मॉडल पर रूट करें।
- मॉडल ID को कॉन्फ़िग से पढ़ें, डेप्रिकेशन पर नज़र रखें, और मॉडल माइग्रेट करते समय evals फिर से चलाएँ।