ਸਮੱਗਰੀ ਤੇ ਜਾਓ
ਗਲਤੀਆਂ

ਗਲਤੀਆਂ

ਜੋ ਰਿਕੁਐਸਟ ਅਸਫਲ ਹੁੰਦੀ ਹੈ, ਉਹ ਇੱਕ HTTP ਸਟੇਟਸ ਕੋਡ ਅਤੇ ਗਲਤੀ ਦੀ ਕਿਸਮ ਤੇ ਸੁਨੇਹੇ ਵਾਲੀ JSON body ਵਾਪਸ ਕਰਦੀ ਹੈ। ਇਹ ਪੰਨਾ ਹਰ ਸਟੇਟਸ ਸੂਚੀਬੱਧ ਕਰਦਾ ਹੈ, ਹਰ API ਫਾਰਮੈਟ ਦੀ ਗਲਤੀ body ਦਿਖਾਉਂਦਾ ਹੈ ਅਤੇ ਦੱਸਦਾ ਹੈ ਕਿ ਕਿਹੜੀਆਂ ਗਲਤੀਆਂ ਵਿੱਚ ਦੁਬਾਰਾ ਭੇਜਣਾ ਠੀਕ ਹੈ।

SDK ਇੱਕ ਗਲਤੀ object ਉਠਾਉਂਦੇ ਹਨ ਜਿਸ ਵਿੱਚ ਸਟੇਟਸ ਕੋਡ ਅਤੇ body ਦੇ ਫੀਲਡ ਹੁੰਦੇ ਹਨ। ਇਹ ਰਿਕੁਐਸਟ ਅਜਿਹੇ ਮਾਡਲ ਦਾ ਨਾਂ ਲੈਂਦੀ ਹੈ ਜੋ ਮੌਜੂਦ ਨਹੀਂ ਹੈ:

import openai
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

try:
    client.chat.completions.create(
        model="no-such-model",
        messages=[{"role": "user", "content": "Hello"}],
    )
except openai.APIStatusError as error:
    print(error.status_code)                           # 400
    print(error.type)                                  # invalid_request_error
    print(error.body["message"])                       # unknown model: no-such-model
    print(error.response.headers.get("x-request-id"))  # the id of this request

ਇਹ ਸਟੇਟਸ 400 ਅਤੇ ਇਹ body ਵਾਪਸ ਕਰਦੀ ਹੈ:

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}

ਗਲਤੀ ਦੀ body

ਦੋ bodies ਹਨ। /v1/messages Anthropic ਫਾਰਮੈਟ ਵਿੱਚ ਜਵਾਬ ਦਿੰਦਾ ਹੈ; ਹਰ ਹੋਰ endpoint OpenAI ਫਾਰਮੈਟ ਵਿੱਚ ਜਵਾਬ ਦਿੰਦਾ ਹੈ। ਦੋਵਾਂ ਵਿੱਚ ਵੇਰਵੇ error.type ਅਤੇ error.message ਵਿੱਚ ਹੁੰਦੇ ਹਨ, ਇਸ ਲਈ ਇੱਕ ਹੀ ਰੀਡਰ ਸਾਰੇ endpoints ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ।

401 OpenAI ਫਾਰਮੈਟ
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
401 Anthropic ਫਾਰਮੈਟ
{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key"
  }
}
ਫੀਲਡ ਕਿਸਮ ਵੇਰਵਾ
error.type string ਗਲਤੀ ਦੀ ਕਿਸਮ। ਹੇਠਾਂ ਗਲਤੀ ਦੀਆਂ ਕਿਸਮਾਂ ਵੇਖੋ।
error.message string ਮਨੁੱਖ ਲਈ ਇੱਕ ਵਾਕ। ਹੇਠਾਂ ਟੇਬਲਾਂ ਵਿੱਚ ਦਿੱਤੇ ਟੈਕਸਟ ਆਪਣੇ ਬਦਲਣ ਵਾਲੇ ਹਿੱਸਿਆਂ ਨੂੰ ਛੱਡ ਕੇ ਸਥਿਰ ਹਨ, ਜੋ <id>, <n> ਜਾਂ … ਵਜੋਂ ਦਿਖਾਏ ਗਏ ਹਨ।
error.code string | null OpenAI ਫਾਰਮੈਟ ਦੀਆਂ ਕੁਝ ਗਲਤੀਆਂ ਉੱਤੇ ਮੌਜੂਦ: 401 ਨਾਲ invalid_api_key, 413 ਨਾਲ request_too_large, ਗੱਲਬਾਤ ਬਹੁਤ ਲੰਮੀ ਹੋਣ ਉੱਤੇ context_length_exceeded, ਨਹੀਂ ਤਾਂ null ਜਾਂ ਗੈਰਹਾਜ਼ਰ। ਪਹਿਲਾਂ ਸਟੇਟਸ ਅਤੇ error.type ਉੱਤੇ ਫੈਸਲਾ ਕਰੋ ਅਤੇ code ਨੂੰ ਵਾਧੂ ਜਾਣਕਾਰੀ ਮੰਨੋ।
error.param null ਉਨ੍ਹਾਂ ਹੀ ਗਲਤੀਆਂ ਉੱਤੇ ਮੌਜੂਦ ਜਿਨ੍ਹਾਂ ਉੱਤੇ code। ਹਮੇਸ਼ਾ null।
type string ਸਿਰਫ਼ Anthropic ਫਾਰਮੈਟ। ਹਮੇਸ਼ਾ error।

ਗਲਤੀ ਦੀਆਂ ਕਿਸਮਾਂ

ਕਿਸਮ ਸਟੇਟਸ ਵੇਰਵਾ
invalid_request_error 400, 413, 415, 422 ਰਿਕੁਐਸਟ ਆਪ ਗਲਤ ਹੈ: ਕੋਈ ਫੀਲਡ, body, ਮਾਡਲ id ਜਾਂ ਅਜਿਹਾ ਇਨਪੁਟ ਜੋ ਮਾਡਲ ਨਹੀਂ ਲੈਂਦਾ। ਦੁਬਾਰਾ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਰਿਕੁਐਸਟ ਬਦਲੋ।
authentication_error 401 API key ਗੈਰਹਾਜ਼ਰ, ਅਣਜਾਣ ਜਾਂ ਰੱਦ ਕੀਤੀ ਹੋਈ ਹੈ।
not_found_error 404 path ਮੌਜੂਦ ਨਹੀਂ ਹੈ।
rate_limit_error 429 ਬੈਲੇਂਸ ਰਿਕੁਐਸਟ ਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕਰਦਾ, ਫਲੱਡ ਪ੍ਰੋਟੈਕਸ਼ਨ ਨੇ ਇਸ ਨੂੰ ਰੋਕਿਆ, ਜਾਂ ਮਾਡਲ ਰੁੱਝਿਆ ਹੋਇਆ ਹੈ। ਸੁਨੇਹਾ ਦੱਸਦਾ ਹੈ ਕਿ ਕਿਹੜਾ।
api_error 500, 502, 503, 504 ਰਿਕੁਐਸਟ ਠੀਕ ਸੀ ਅਤੇ ਅਸਫਲਤਾ ਸਾਡੇ ਪਾਸੇ ਹੈ। ਇਸ ਨੂੰ ਦੁਬਾਰਾ ਭੇਜੋ।
server_error 500 ਰਿਕੁਐਸਟ ਠੀਕ ਸੀ ਅਤੇ ਅਸਫਲਤਾ ਸਾਡੇ ਪਾਸੇ ਹੈ। ਇਸ ਨੂੰ ਦੁਬਾਰਾ ਭੇਜੋ।

ਸਟੇਟਸ ਕੋਡ

ਸਟੇਟਸ ਕਿਸਮ ਸੁਨੇਹਾ ਕਦੋਂ
400 invalid_request_error Failed to parse the request body as JSON: … body ਜਾਇਜ਼ JSON ਨਹੀਂ ਹੈ।
400 invalid_request_error unknown model: <id> model ਕੋਈ ਪ੍ਰਕਾਸ਼ਿਤ id ਨਹੀਂ ਹੈ। /v1/responses ਉੱਤੇ ਉਦੋਂ ਵੀ ਜਦੋਂ model ਗੈਰਹਾਜ਼ਰ ਹੋਵੇ।
400 invalid_request_error No user message provided Shannon ਟੀਅਰ: ਰਿਕੁਐਸਟ ਵਿੱਚ user ਟੈਕਸਟ ਨਹੀਂ ਹੈ।
400 invalid_request_error <id> does not accept image input ਇਮੇਜ ਇਨਪੁਟ ਤੋਂ ਬਿਨਾਂ ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲ ਨੂੰ ਇੱਕ ਇਮੇਜ ਭੇਜੀ ਗਈ।
400 invalid_request_error audio and video input are not supported by any hosted model ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲ ਨੂੰ ਇੱਕ ਆਡੀਓ ਜਾਂ ਵੀਡੀਓ part ਭੇਜਿਆ ਗਿਆ।
400 invalid_request_error <id> does not accept response_format ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲ ਤੋਂ ਸੰਗਠਿਤ ਆਉਟਪੁੱਟ ਮੰਗੀ ਗਈ ਜਿਸ ਕੋਲ ਇਹ ਨਹੀਂ ਹੈ।
400 invalid_request_error <id> does not accept response_format json_schema; use json_object ਸਿਰਫ਼ json_object ਲੈਣ ਵਾਲੇ ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲ ਨੂੰ ਇੱਕ JSON schema ਭੇਜੀ ਗਈ।
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high ਰੀਜ਼ਨਿੰਗ effort ਸੂਚੀਬੱਧ ਮੁੱਲਾਂ ਵਿੱਚੋਂ ਕੋਈ ਨਹੀਂ ਹੈ। ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲ।
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <id> ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲਾਂ ਤੋਂ ਬਾਹਰ ਦੇ ਮਾਡਲ ਲਈ token ਗਿਣਤੀ ਮੰਗੀ ਗਈ।
401 authentication_error Missing authentication ਕੋਈ API key ਨਹੀਂ ਭੇਜੀ ਗਈ।
401 authentication_error Invalid API key key ਅਣਜਾਣ ਹੈ, ਨਵੀਂ ਨਾਲ ਬਦਲ ਦਿੱਤੀ ਗਈ ਸੀ, ਜਾਂ ਰੱਦ ਕੀਤੀ ਗਈ ਸੀ।
404 not_found_error Not Found path ਮੌਜੂਦ ਨਹੀਂ ਹੈ, ਉਦਾਹਰਣ ਵਜੋਂ /v1/embeddings।
405 api_error Method Not Allowed path ਮੌਜੂਦ ਹੈ ਪਰ ਇਸ HTTP method ਨਾਲ ਨਹੀਂ।
413 invalid_request_error Failed to buffer the request body: … ਰਿਕੁਐਸਟ body 32 MiB ਤੋਂ ਵੱਡੀ ਹੈ।
415 invalid_request_error Expected request with `Content-Type: application/json` Content-Type ਹੈਡਰ ਗੈਰਹਾਜ਼ਰ ਹੈ ਜਾਂ application/json ਨਹੀਂ ਹੈ।
422 invalid_request_error Failed to deserialize the JSON body into the target type: … ਕੋਈ ਲਾਜ਼ਮੀ ਫੀਲਡ ਗੈਰਹਾਜ਼ਰ ਹੈ, ਜਿਵੇਂ messages, ਜਾਂ ਕਿਸੇ ਫੀਲਡ ਦੀ JSON ਕਿਸਮ ਗਲਤ ਹੈ।
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan ਰਿਕੁਐਸਟ ਦੀ ਆਉਟਪੁੱਟ ਸੀਮਾ ਤੁਹਾਡੇ ਬੈਲੇਂਸ ਵਿੱਚ ਬਚੀ ਰਕਮ ਤੋਂ ਵੱਡੀ ਹੈ।
429 rate_limit_error Too many requests. Retry in <n>s. ਫਲੱਡ ਪ੍ਰੋਟੈਕਸ਼ਨ: ਤੁਹਾਡੇ ਖਾਤੇ ਉੱਤੇ ਇੱਕ ਮਿੰਟ ਵਿੱਚ 120 ਤੋਂ ਵੱਧ ਰਿਕੁਐਸਟਾਂ। <n> ਮਿੰਟ ਖਤਮ ਹੋਣ ਤੱਕ ਦੇ ਸਕਿੰਟਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan /v1/chat/completions ਅਤੇ /v1/messages ਉੱਤੇ shannon-coder-1: ਮੌਜੂਦਾ 4 ਘੰਟੇ ਦੀ ਵਿੰਡੋ ਲਈ ਤੁਹਾਡੇ ਪਲਾਨ ਦੀਆਂ Shannon Coder ਕਾਲਾਂ ਵਰਤੀਆਂ ਜਾ ਚੁੱਕੀਆਂ ਹਨ।
429 rate_limit_error Shannon routes are temporarily busy. Please retry. ਮਾਡਲ ਇਸ ਸਮੇਂ ਰੁੱਝਿਆ ਹੋਇਆ ਹੈ।
500 server_error The model backend failed to answer. Please retry. ਮਾਡਲ ਨੇ ਜਵਾਬ ਨਹੀਂ ਬਣਾਇਆ।
500 server_error An internal error occurred. Please retry. ਰਿਕੁਐਸਟ ਤਿਆਰ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਅੰਦਰੂਨੀ ਅਸਫਲਤਾ।
502 api_error The model backend failed to answer. Please retry. ਮਾਡਲ ਨੇ ਜਵਾਬ ਨਹੀਂ ਬਣਾਇਆ। Shannon 3 ਪਰਿਵਾਰ ਅਤੇ ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲ।
503 api_error Could not verify your quota right now. Please retry. ਇਸ ਸਮੇਂ ਤੁਹਾਡਾ ਬੈਲੇਂਸ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।
503 api_error token counting is temporarily unavailable for this model ਇਸ ਸਮੇਂ ਇਸ ਮਾਡਲ ਲਈ token ਗਿਣਤੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।
504 api_error upstream timed out ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲ ਨੇ stream ਨਾ ਹੋਣ ਵਾਲੀ ਰਿਕੁਐਸਟ ਦੀ ਸਮਾਂ ਸੀਮਾ ਤੋਂ ਵੱਧ ਸਮਾਂ ਲਿਆ।

ਜਾਂਚਾਂ ਇਸ ਕ੍ਰਮ ਵਿੱਚ ਚੱਲਦੀਆਂ ਹਨ: API key, ਰਿਕੁਐਸਟ body, ਮਾਡਲ id, ਫਲੱਡ ਪ੍ਰੋਟੈਕਸ਼ਨ, ਬੈਲੇਂਸ। ਇਸ ਲਈ ਗਲਤ key ਅਤੇ ਗਲਤ body ਵਾਲੀ ਰਿਕੁਐਸਟ 401 ਵਾਪਸ ਕਰਦੀ ਹੈ। ਜੋ ਰਿਕੁਐਸਟ 4xx ਸਟੇਟਸ ਨਾਲ ਰੱਦ ਹੁੰਦੀ ਹੈ, ਉਸ ਦਾ ਕੋਈ ਚਾਰਜ ਨਹੀਂ ਲੱਗਦਾ।

ਬੈਲੇਂਸ ਅਤੇ ਫਲੱਡ ਪ੍ਰੋਟੈਕਸ਼ਨ

ਹਰ ਰਿਕੁਐਸਟ ਨੂੰ ਬਰਾਬਰ ਸੇਵਾ ਮਿਲਦੀ ਹੈ: ਕੋਈ ਰੇਟ ਟੀਅਰ ਨਹੀਂ ਅਤੇ ਕੋਈ ਵੱਖਰਾ API ਕੋਟਾ ਨਹੀਂ। ਫਿਰ ਵੀ ਦੋ ਚੀਜ਼ਾਂ 429 ਨਾਲ ਜਵਾਬ ਦੇ ਸਕਦੀਆਂ ਹਨ, ਦੋਵੇਂ ਕਿਸਮ rate_limit_error ਨਾਲ। ਸੁਨੇਹਾ ਦੋਵਾਂ ਵਿੱਚ ਫ਼ਰਕ ਦੱਸਦਾ ਹੈ।

ਬੈਲੇਂਸ

ਤੁਹਾਡਾ ਬੈਲੇਂਸ ਅੱਜ ਦਾ ਪਲਾਨ ਦਾ ਰੋਜ਼ਾਨਾ ਹਿੱਸਾ ਹੈ, ਜੋ 00:00 UTC ਉੱਤੇ ਮੁੜ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਉਸ ਤੋਂ ਬਾਅਦ ਤੁਹਾਡਾ ਖਰੀਦਿਆ ਕ੍ਰੈਡਿਟ। ਚੈਟ ਅਤੇ API ਇੱਕੋ ਬੈਲੇਂਸ ਵਿੱਚੋਂ ਖਰਚ ਕਰਦੇ ਹਨ।

ਹਰ ਰਿਕੁਐਸਟ ਪਹਿਲਾਂ ਆਪਣੀ ਆਉਟਪੁੱਟ ਸੀਮਾ ਵੱਖ ਰੱਖਦੀ ਹੈ: max_tokens, ਜਾਂ /v1/responses ਉੱਤੇ max_output_tokens, ਅਤੇ ਜੇ ਤੁਸੀਂ ਕੋਈ ਵੀ ਨਾ ਭੇਜੋ ਤਾਂ 4,096। ਜਵਾਬ ਪੂਰਾ ਹੋਣ ਉੱਤੇ, ਵੱਖ ਰੱਖੀ ਰਕਮ ਉਸ ਨਾਲ ਬਦਲ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ ਜੋ ਰਿਕੁਐਸਟ ਨੇ ਵਰਤਿਆ। ਜੇ ਰਕਮ ਬਾਕੀ ਬੈਲੇਂਸ ਵਿੱਚ ਨਾ ਸਮਾਏ, ਤਾਂ ਮਾਡਲ ਦੇ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਰਿਕੁਐਸਟ Quota exceeded ਵਾਪਸ ਕਰਦੀ ਹੈ।

ਜੋ ਰਿਕੁਐਸਟਾਂ ਇੱਕੋ ਸਮੇਂ ਚੱਲਦੀਆਂ ਹਨ, ਉਹ ਹਰ ਇੱਕ ਆਪਣੀ ਰਕਮ ਵੱਖ ਰੱਖਦੀ ਹੈ। ਇਸ ਲਈ ਉੱਚੇ max_tokens ਵਾਲੀਆਂ ਕਈ ਸਮਾਂਤਰ ਰਿਕੁਐਸਟਾਂ ਕੁਝ ਪਲ ਲਈ ਬੈਲੇਂਸ ਨੂੰ ਪੂਰਾ ਵਰਤ ਸਕਦੀਆਂ ਹਨ, ਭਾਵੇਂ ਹਰ ਜਵਾਬ ਛੋਟਾ ਹੋਵੇ। ਛੋਟਾ max_tokens ਘੱਟ ਵੱਖ ਰੱਖਦਾ ਹੈ।

ਫਲੱਡ ਪ੍ਰੋਟੈਕਸ਼ਨ

ਫਲੱਡ ਪ੍ਰੋਟੈਕਸ਼ਨ ਪ੍ਰਤੀ ਖਾਤਾ ਪ੍ਰਤੀ ਮਿੰਟ 120 ਰਿਕੁਐਸਟਾਂ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ। ਇਹ /v1/chat/completions, /v1/responses ਅਤੇ /v1/messages ਨੂੰ ਇਕੱਠੇ ਗਿਣ ਕੇ ਖਾਤੇ ਨੂੰ ਗਿਣਦੀ ਹੈ, key ਨੂੰ ਨਹੀਂ। ਮਿੰਟ ਤੁਹਾਡੀ ਪਹਿਲੀ ਰਿਕੁਐਸਟ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ।

ਉਸ ਮਿੰਟ ਦੇ ਅੰਦਰ ਰਿਕੁਐਸਟ ਨੰਬਰ 121 Too many requests. Retry in <n>s. ਵਾਪਸ ਕਰਦੀ ਹੈ ਅਤੇ ਇਸ ਦੀ ਕੋਈ ਲਾਗਤ ਨਹੀਂ ਹੁੰਦੀ। ਰੱਦ ਕੀਤੀਆਂ ਰਿਕੁਐਸਟਾਂ ਵੀ ਗਿਣੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਇਸ ਲਈ ਜੋ ਕਲਾਇੰਟ ਉਡੀਕ ਕੀਤੇ ਬਿਨਾਂ ਦੁਬਾਰਾ ਭੇਜਦਾ ਹੈ, ਉਹ ਮਿੰਟ ਖਤਮ ਹੋਣ ਤੱਕ ਰੱਦ ਹੁੰਦਾ ਰਹਿੰਦਾ ਹੈ। ਸੁਨੇਹੇ ਵਿੱਚ ਦਿੱਤੇ <n> ਸਕਿੰਟ ਉਡੀਕ ਕਰੋ।

ਸਮਾਂਤਰ ਭੇਜੀਆਂ ਰਿਕੁਐਸਟਾਂ ਨੂੰ ਸਮਾਂਤਰ ਹੋਣ ਕਰਕੇ ਰੱਦ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ। ਉਹ ਕਤਾਰ ਵਿੱਚ ਉਡੀਕ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਵਾਰੀ ਨਾਲ ਜਵਾਬ ਪਾਉਂਦੀਆਂ ਹਨ।

GET /v1/models ਅਤੇ token ਗਿਣਤੀ ਵਾਲੇ endpoints ਨਹੀਂ ਗਿਣੇ ਜਾਂਦੇ।

ਸੀਮਾਵਾਂ ਅਤੇ ਬੈਲੇਂਸ ਬਾਰੇ ਹੋਰ, ਅਤੇ ਆਪਣਾ ਬੈਲੇਂਸ ਅਤੇ ਵਰਤੋਂ ਕਿੱਥੇ ਵੇਖਣੇ ਹਨ: ਸੀਮਾਵਾਂ ਅਤੇ ਬੈਲੇਂਸ Keys ਅਤੇ ਵਰਤੋਂ

ਕੀ ਦੁਬਾਰਾ ਅਜ਼ਮਾਉਣਾ ਹੈ

ਰਿਕੁਐਸਟ ਸਿਰਫ਼ ਉਦੋਂ ਦੁਬਾਰਾ ਭੇਜੋ ਜਦੋਂ ਉਹੀ ਰਿਕੁਐਸਟ ਸਫਲ ਹੋ ਸਕਦੀ ਹੋਵੇ। OpenAI ਅਤੇ Anthropic SDK ਪਹਿਲਾਂ ਹੀ 429 ਅਤੇ 5xx ਜਵਾਬਾਂ ਨੂੰ ਆਪਣੇ-ਆਪ ਦੋ ਵਾਰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਨ; ਇਸ ਨੂੰ ਬਦਲਣ ਲਈ max_retries (JavaScript ਵਿੱਚ maxRetries) ਸੈੱਟ ਕਰੋ।

ਗਲਤੀ ਦੁਬਾਰਾ ਭੇਜੀਏ? ਕਿਵੇਂ
400, 404, 405, 413, 415, 422 ਨਹੀਂ। ਪਹਿਲਾਂ ਰਿਕੁਐਸਟ ਨੂੰ ਠੀਕ ਕਰੋ। ਸੁਨੇਹਾ ਉਸ ਫੀਲਡ, ਮਾਡਲ ਜਾਂ ਇਨਪੁਟ ਦਾ ਨਾਂ ਦੱਸਦਾ ਹੈ ਜੋ ਗਲਤ ਹੈ।
401 ਨਹੀਂ। ਜਾਇਜ਼ key ਵਰਤੋ। Keys & usage ਪੰਨੇ ਉੱਤੇ key ਬਣਾਓ ਜਾਂ ਬਦਲੋ।
429 Too many requests ਹਾਂ, ਉਡੀਕ ਤੋਂ ਬਾਅਦ। ਸੁਨੇਹੇ ਵਿੱਚ ਦਿੱਤੇ ਸਕਿੰਟ ਉਡੀਕ ਕਰੋ, ਫਿਰ ਉਹੀ ਰਿਕੁਐਸਟ ਭੇਜੋ।
429 Quota exceeded ਜਿਉਂ ਦੀ ਤਿਉਂ ਨਹੀਂ। max_tokens ਘਟਾਓ, 00:00 UTC ਉੱਤੇ ਰੋਜ਼ਾਨਾ ਰੀਸੈਟ ਦੀ ਉਡੀਕ ਕਰੋ, ਜਾਂ ਕ੍ਰੈਡਿਟ ਜੋੜੋ।
429 Shannon Coder call quota reached ਹਾਂ, ਅਗਲੀ ਵਿੰਡੋ ਵਿੱਚ। ਵਿੰਡੋਆਂ 00:00 UTC ਤੋਂ ਹਰ 4 ਘੰਟੇ ਬਾਅਦ ਸ਼ੁਰੂ ਹੁੰਦੀਆਂ ਹਨ। ਕੋਈ ਹੋਰ ਮਾਡਲ ਤੁਰੰਤ ਜਵਾਬ ਦਿੰਦਾ ਹੈ।
429 … temporarily busy ਹਾਂ। ਕੁਝ ਸਕਿੰਟ ਉਡੀਕ ਕਰੋ, ਫਿਰ ਹਰ ਅਗਲੀ ਕੋਸ਼ਿਸ਼ ਉੱਤੇ ਹੋਰ ਵੱਧ।
500, 502, 503 ਹਾਂ। 1 ਸਕਿੰਟ ਉਡੀਕ ਕਰੋ, ਫਿਰ 2, 4 ਅਤੇ 8। ਕੁਝ ਕੋਸ਼ਿਸ਼ਾਂ ਤੋਂ ਬਾਅਦ ਰੁਕ ਜਾਓ ਅਤੇ ਰਿਕੁਐਸਟ id ਦੀ ਰਿਪੋਰਟ ਕਰੋ।
504 ਹਾਂ। ਇਸ ਨੂੰ stream ਨੂੰ true ਕਰ ਕੇ ਭੇਜੋ: ਸਮਾਂ ਸੀਮਾ ਉਨ੍ਹਾਂ ਜਵਾਬਾਂ ਉੱਤੇ ਲਾਗੂ ਹੁੰਦੀ ਹੈ ਜੋ stream ਨਹੀਂ ਹੁੰਦੇ।

ਇੱਕ ਰੀਟ੍ਰਾਈ ਲੂਪ ਜੋ ਇਸ ਟੇਬਲ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ:

import re
import time

import openai
from openai import OpenAI

# max_retries=0: this loop does the retrying, the SDK does not add its own.
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1", max_retries=0)


def create_with_retry(attempts=5, **request):
    for attempt in range(attempts):
        try:
            return client.chat.completions.create(**request)
        except openai.RateLimitError as error:
            text = str(error)
            flood = re.search(r"Retry in (\d+)s", text)
            if flood:
                time.sleep(int(flood.group(1)))   # flood protection: wait out the minute
            elif "temporarily busy" in text:
                time.sleep(2 ** attempt)
            else:
                raise                             # balance: a wait of seconds does not help
        except (openai.InternalServerError, openai.APIConnectionError):
            time.sleep(2 ** attempt)              # 1, 2, 4, 8 seconds
    raise RuntimeError("the request failed after all attempts")


response = create_with_retry(
    model="shannon-3",
    messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)

stream ਦੇ ਅੰਦਰ ਦੀਆਂ ਗਲਤੀਆਂ

stream ਦਾ ਸਟੇਟਸ ਉਸ ਦੇ ਪਹਿਲੇ ਬਾਈਟ ਤੋਂ 200 ਹੁੰਦਾ ਹੈ। ਉਸ ਤੋਂ ਬਾਅਦ ਦੀ ਅਸਫਲਤਾ stream ਦੇ ਅੰਦਰ ਇੱਕ event ਵਜੋਂ ਆਉਂਦੀ ਹੈ: /v1/chat/completions ਉੱਤੇ error ਮੈਂਬਰ ਵਾਲਾ chunk, /v1/messages ਉੱਤੇ error event, /v1/responses ਉੱਤੇ response.failed ਜਾਂ error event। stream ਦੇ ਬੰਦ ਕਰਨ ਵਾਲੇ events ਫਿਰ ਵੀ ਪਿੱਛੇ ਆਉਂਦੇ ਹਨ। ਅਜਿਹੇ ਜਵਾਬ ਨੂੰ ਅਸਫਲ ਮੰਨੋ ਅਤੇ ਰਿਕੁਐਸਟ ਦੁਬਾਰਾ ਭੇਜੋ, ਜਿਵੇਂ 5xx ਸਟੇਟਸ ਲਈ।

ਜੋ ਗੱਲਬਾਤ ਮਾਡਲ ਦੀ ਕਾਂਟੈਕਸਟ ਵਿੰਡੋ ਤੋਂ ਲੰਮੀ ਹੋਵੇ, ਉਹ ਇਸੇ ਤਰ੍ਹਾਂ ਦੱਸੀ ਜਾਂਦੀ ਹੈ, ਕਿਸਮ invalid_request_error ਅਤੇ ਕੋਡ context_length_exceeded ਨਾਲ। ਦੁਬਾਰਾ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਗੱਲਬਾਤ ਨੂੰ ਛੋਟਾ ਕਰੋ।

ਸਹੀ frames ਦਾ ਵੇਰਵਾ ਸਟ੍ਰੀਮਿੰਗ ਦੇ ਨਾਲ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਸਟ੍ਰੀਮਿੰਗ

ਰਿਕੁਐਸਟ ids

ਹਰ ਜਵਾਬ, ਗਲਤੀਆਂ ਸਮੇਤ, ਵਿੱਚ ਇੱਕ x-request-id ਹੈਡਰ ਹੁੰਦਾ ਹੈ। ਇਹ ਉਹ ਮੁੱਲ ਹੈ ਜੋ ਤੁਸੀਂ ਆਪਣੇ x-request-id ਹੈਡਰ ਵਿੱਚ ਭੇਜਿਆ, ਜਾਂ ਕੁਝ ਨਾ ਭੇਜਣ ਉੱਤੇ 12 ਹੈਕਸਾਡੈਸੀਮਲ ਅੱਖਰ। ਇਸ ਨੂੰ ਲੌਗ ਕਰੋ, ਅਤੇ ਕਿਸੇ ਰਿਕੁਐਸਟ ਬਾਰੇ ਮਦਦ ਮੰਗਦੇ ਸਮੇਂ ਇਸ ਦਾ ਹਵਾਲਾ ਦਿਓ।