मुख्य सामग्री पर जाएँ

त्रुटियाँ

Webway की त्रुटि प्रतिक्रियाओं, स्थिति कोड और सुरक्षित पुनः प्रयास के व्यवहार को समझें।

त्रुटियाँ एक छोटे JSON आवरण का उपयोग करती हैं, जिसे OpenAI-संगत SDK पार्स कर सकते हैं:

json
{
  "error": {
    "message": "insufficient credit",
    "type": "insufficient_quota",
    "code": "insufficient_quota"
  }
}

type वह व्यापक मान है, जिसके आधार पर क्लाइंट लाइब्रेरी निर्णय लेती हैं। code अधिक सटीक है और type से केवल तब अलग होता है, जब विफलता प्रदाता की ओर से हुई हो।

आवरण एंडपॉइंट के अनुरूप होता है। /v1/messages Anthropic का प्रारूप लौटाता है, इसलिए Anthropic SDK और Claude Code इसे पार्स करके इस गेटवे के लिए अलग व्यवस्था किए बिना अपने पुनः प्रयास के नियम लागू करते हैं:

json
{
  "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 पर अनुरोध में बदलाव किए बिना पुनः प्रयास न करें। वही अनुरोध फिर विफल होगा।

प्रदाता का काम शुरू होने से पहले अस्वीकार किए गए अनुरोधों का शुल्क नहीं लिया जाता। जनरेशन शुरू होने के बाद विफल होने वाले अनुरोध में पहले से बनाए गए टोकन का शुल्क लग सकता है, जिसमें वह अनुरोध भी शामिल है जिसे आप स्ट्रीम के बीच में रद्द करते हैं।