त्रुटियाँ
Webway की त्रुटि प्रतिक्रियाओं, स्थिति कोड और सुरक्षित पुनः प्रयास के व्यवहार को समझें।
त्रुटियाँ एक छोटे JSON आवरण का उपयोग करती हैं, जिसे OpenAI-संगत SDK पार्स कर सकते हैं:
{
"error": {
"message": "insufficient credit",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}
type वह व्यापक मान है, जिसके आधार पर क्लाइंट लाइब्रेरी निर्णय लेती हैं। code अधिक सटीक है
और type से केवल तब अलग होता है, जब विफलता प्रदाता की ओर से हुई हो।
आवरण एंडपॉइंट के अनुरूप होता है। /v1/messages Anthropic का प्रारूप लौटाता है, इसलिए
Anthropic SDK और Claude Code इसे पार्स करके इस गेटवे के लिए अलग व्यवस्था किए बिना
अपने पुनः प्रयास के नियम लागू करते हैं:
{
"type": "error",
"error": {
"type": "overloaded_error",
"message": "the provider is over capacity, retry shortly (request 4f2ab910)",
"code": "overloaded"
}
}
स्थिति कोड
| स्थिति | अर्थ | पुनः प्रयास? |
|---|---|---|
400 |
अमान्य JSON, फ़ील्ड या पैरामीटर | नहीं; अनुरोध ठीक करें |
401 |
API कुंजी गुम, अमान्य, समय-सीमा समाप्त या निरस्त है | नहीं; API कुंजी बदलें |
402 |
आपकी शेष राशि अनुरोध की लागत पूरी नहीं कर सकती | क्रेडिट जोड़ने के बाद |
403 |
मॉडल के लिए आपकी अपनी प्रदाता API कुंजी आवश्यक है | नहीं; डैशबोर्ड में एक जोड़ें |
404 |
मॉडल या एंडपॉइंट नहीं मिला | नहीं; आईडी और पाथ जाँचें |
413 |
अनुरोध का मुख्य भाग बहुत बड़ा है | नहीं; पेलोड घटाएँ |
429 |
दर सीमा पूरी हो गई है | हाँ; प्रतीक्षा करके पुनः प्रयास करें |
502 / 503 |
प्रदाता उपलब्ध नहीं है | हाँ; बैकऑफ़ अपनाएँ |
504 |
प्रदाता ने समय पर जवाब नहीं दिया | हाँ; बैकऑफ़ अपनाएँ |
402 हमेशा केवल आपकी शेष राशि से संबंधित होता है। Webway और किसी प्रदाता के बीच
बिलिंग की समस्या 502 होती है, क्योंकि उस पर आप कोई कार्रवाई नहीं कर सकते।
प्रदाता की विफलताएँ
जब विफलता आपके अनुरोध के बजाय प्रदाता की ओर से होती है, तो code
बताता है कि वह कौन-सी विफलता थी:
code |
स्थिति | अर्थ | पुनः प्रयास? |
|---|---|---|---|
model_unavailable |
502 |
प्रदाता यह मॉडल उपलब्ध नहीं कराएगा। इसे ठीक करना हमारा काम है | नहीं |
context_length_exceeded |
400 |
अनुरोध मॉडल की कॉन्टेक्स्ट विंडो से लंबा है | नहीं |
content_filtered |
400 |
प्रदाता की सुरक्षा परत ने अनुरोध अस्वीकार कर दिया | नहीं |
invalid_request |
400 |
प्रदाता ने अनुरोध अस्वीकार कर दिया | नहीं |
rate_limited |
429 |
प्रदाता की ओर से दर सीमा लागू हुई | हाँ |
overloaded |
503 |
प्रदाता की क्षमता पूरी हो चुकी है | हाँ |
timeout |
504 |
प्रदाता ने समय पर जवाब नहीं दिया | हाँ |
transport_error |
502 |
प्रदाता से कनेक्शन विफल हो गया | हाँ |
upstream_error |
502 |
अवर्गीकृत। हमेशा जाँच की जाती है | शायद |
प्रदाता की त्रुटि का मूल टेक्स्ट कभी आगे नहीं भेजा जाता। अपस्ट्रीम सेवाएँ विफलताओं का वर्णन अपनी शब्दावली में करती हैं, कभी दूसरी भाषा में, अक्सर ऐसे इन्फ्रास्ट्रक्चर का नाम लेते हुए जो आपका नहीं है, और वह टेक्स्ट बिना सूचना बदल जाता है। हर त्रुटि को ऊपर दिए वर्गों में रखकर दोबारा लिखा जाता है, इसलिए आपको मिलने वाला संदेश इतना स्थिर रहता है कि उसके आधार पर लॉग रखा जा सके।
हर संदेश के अंत में Webway अनुरोध आईडी होती है। सहायता अनुरोधों में इसे शामिल करें: यही वह पहचानकर्ता है जिसे वास्तव में खोजा जा सकता है।
स्ट्रीमिंग के दौरान त्रुटियाँ
प्रतिक्रिया हेडर भेजे जाने के बाद भी अनुरोध विफल हो सकता है। उस समय स्थिति कोड
बदला नहीं जा सकता, इसलिए विफलता स्ट्रीम में बाकी डेटा वाले प्रोटोकॉल में ही एक इवेंट
के रूप में आती है — /v1/messages पर event: error, /v1/responses पर एक
error इवेंट और /v1/chat/completions पर एक error चंक। code के मान उसी
तालिका के हैं।
अंतिम इवेंट के बिना समाप्त होने वाली स्ट्रीम को विफलता मानें, छोटा उत्तर नहीं।
पुनः प्रयास के नियम
केवल 429 और अस्थायी 5xx प्रतिक्रियाओं पर पुनः प्रयास करें। जिटर के साथ
एक्सपोनेंशियल बैकऑफ़ का उपयोग करें, प्रयासों की संख्या सीमित रखें और Retry-After
मौजूद हो तो उसका पालन करें।
400, 401, 402, 403, 404 या 413 पर अनुरोध में बदलाव किए बिना पुनः प्रयास
न करें। वही अनुरोध फिर विफल होगा।
प्रदाता का काम शुरू होने से पहले अस्वीकार किए गए अनुरोधों का शुल्क नहीं लिया जाता। जनरेशन शुरू होने के बाद विफल होने वाले अनुरोध में पहले से बनाए गए टोकन का शुल्क लग सकता है, जिसमें वह अनुरोध भी शामिल है जिसे आप स्ट्रीम के बीच में रद्द करते हैं।