ದೋಷ ನಿರ್ವಹಣೆ
ವಿಫಲವಾದ ವಿನಂತಿಯು HTTP ಸ್ಥಿತಿ ಕೋಡ್ ಮತ್ತು ದೋಷ ವಿಧ ಹಾಗೂ ಸಂದೇಶವಿರುವ JSON ಬಾಡಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಈ ಪುಟ ಪ್ರತಿ ಸ್ಥಿತಿಯನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಪ್ರತಿ API ಫಾರ್ಮ್ಯಾಟ್ನ ದೋಷ ಬಾಡಿಯನ್ನು ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಯಾವ ದೋಷಗಳನ್ನು ಮತ್ತೆ ಕಳುಹಿಸುವುದು ಯೋಗ್ಯ ಎಂದು ಹೇಳುತ್ತದೆ.
SDK ಗಳು ಸ್ಥಿತಿ ಕೋಡ್ ಮತ್ತು ಬಾಡಿಯ ಫೀಲ್ಡ್ಗಳನ್ನು ಹೊತ್ತ ದೋಷ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಎಸೆಯುತ್ತವೆ. ಈ ವಿನಂತಿ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಮಾಡೆಲ್ ಅನ್ನು ಹೆಸರಿಸುತ್ತದೆ:
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 import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
try {
await client.chat.completions.create({
model: "no-such-model",
messages: [{ role: "user", content: "Hello" }],
});
} catch (error) {
if (!(error instanceof OpenAI.APIError)) throw error;
console.log(error.status); // 400
console.log(error.type); // invalid_request_error
console.log(error.error.message); // unknown model: no-such-model
} curl -i https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "no-such-model",
"messages": [{"role": "user", "content": "Hello"}]
}' ಇದು ಸ್ಥಿತಿ 400 ಮತ್ತು ಈ ಬಾಡಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ:
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} ದೋಷದ ಬಾಡಿ
ಎರಡು ಬಾಡಿಗಳಿವೆ. /v1/messages Anthropic ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಉತ್ತರಿಸುತ್ತದೆ; ಉಳಿದ ಪ್ರತಿ ಎಂಡ್ಪಾಯಿಂಟ್ OpenAI ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಉತ್ತರಿಸುತ್ತದೆ. ಎರಡರಲ್ಲೂ ವಿವರಗಳು error.type ಮತ್ತು error.message ನಲ್ಲಿವೆ, ಆದ್ದರಿಂದ ಒಂದೇ ರೀಡರ್ ಎಲ್ಲಾ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳಿಗೆ ಸಾಕು.
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"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 | ವಿನಂತಿಯೇ ತಪ್ಪಾಗಿದೆ: ಒಂದು ಫೀಲ್ಡ್, ಬಾಡಿ, ಮಾಡೆಲ್ id ಅಥವಾ ಮಾಡೆಲ್ ತೆಗೆದುಕೊಳ್ಳದ ಇನ್ಪುಟ್. ಮತ್ತೆ ಕಳುಹಿಸುವ ಮೊದಲು ವಿನಂತಿಯನ್ನು ಬದಲಾಯಿಸಿ. |
authentication_error | 401 | API ಕೀ ಇಲ್ಲ, ಗೊತ್ತಿಲ್ಲ ಅಥವಾ ರದ್ದುಗೊಂಡಿದೆ. |
not_found_error | 404 | ಪಥ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ. |
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: … | ಬಾಡಿ ಮಾನ್ಯ 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 | ಚಿತ್ರ ಇನ್ಪುಟ್ ಇಲ್ಲದ ಹೋಸ್ಟ್ ಮಾಡಿದ ಓಪನ್-ವೇಟ್ ಮಾಡೆಲ್ಗೆ ಚಿತ್ರವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ. |
400 | invalid_request_error | audio and video input are not supported by any hosted model | ಹೋಸ್ಟ್ ಮಾಡಿದ ಓಪನ್-ವೇಟ್ ಮಾಡೆಲ್ಗೆ ಆಡಿಯೋ ಅಥವಾ ವೀಡಿಯೋ ಭಾಗವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ. |
400 | invalid_request_error | <id> does not accept response_format | ರಚನಾತ್ಮಕ ಔಟ್ಪುಟ್ ಅದನ್ನು ಬೆಂಬಲಿಸದ ಹೋಸ್ಟ್ ಮಾಡಿದ ಓಪನ್-ವೇಟ್ ಮಾಡೆಲ್ನಿಂದ ಕೇಳಲಾಗಿದೆ. |
400 | invalid_request_error | <id> does not accept response_format json_schema; use json_object | json_object ಮಾತ್ರ ತೆಗೆದುಕೊಳ್ಳುವ ಹೋಸ್ಟ್ ಮಾಡಿದ ಓಪನ್-ವೇಟ್ ಮಾಡೆಲ್ಗೆ JSON schema ಕಳುಹಿಸಲಾಗಿದೆ. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | ರೀಸನಿಂಗ್ effort ಪಟ್ಟಿ ಮಾಡಿದ ಮೌಲ್ಯಗಳಲ್ಲಿ ಒಂದಲ್ಲ. ಹೋಸ್ಟ್ ಮಾಡಿದ ಓಪನ್-ವೇಟ್ ಮಾಡೆಲ್ಗಳು. |
400 | invalid_request_error | count_tokens is available for the hosted open models; unknown model: <id> | ಹೋಸ್ಟ್ ಮಾಡಿದ ಓಪನ್-ವೇಟ್ ಮಾಡೆಲ್ಗಳ ಹೊರಗಿನ ಮಾಡೆಲ್ಗೆ ಟೋಕನ್ ಎಣಿಕೆ ಕೇಳಲಾಗಿದೆ. |
401 | authentication_error | Missing authentication | ಯಾವುದೇ API ಕೀ ಕಳುಹಿಸಲಾಗಿಲ್ಲ. |
401 | authentication_error | Invalid API key | ಕೀ ಗೊತ್ತಿಲ್ಲ, ಹೊಸದರಿಂದ ಬದಲಾಯಿಸಲ್ಪಟ್ಟಿದೆ, ಅಥವಾ ರದ್ದುಗೊಂಡಿದೆ. |
404 | not_found_error | Not Found | ಪಥ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ, ಉದಾಹರಣೆಗೆ /v1/embeddings. |
405 | api_error | Method Not Allowed | ಪಥ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಆದರೆ ಈ HTTP ಮೆಥಡ್ನೊಂದಿಗೆ ಅಲ್ಲ. |
413 | invalid_request_error | Failed to buffer the request 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 ಕುಟುಂಬ ಮತ್ತು ಹೋಸ್ಟ್ ಮಾಡಿದ ಓಪನ್-ವೇಟ್ ಮಾಡೆಲ್ಗಳು. |
503 | api_error | Could not verify your quota right now. Please retry. | ನಿಮ್ಮ ಬ್ಯಾಲೆನ್ಸ್ ಅನ್ನು ಈ ಕ್ಷಣದಲ್ಲಿ ಓದಲಾಗಲಿಲ್ಲ. |
503 | api_error | token counting is temporarily unavailable for this model | ಈ ಮಾಡೆಲ್ಗೆ ಈ ಕ್ಷಣದಲ್ಲಿ ಟೋಕನ್ ಎಣಿಕೆ ಲಭ್ಯವಿಲ್ಲ. |
504 | api_error | upstream timed out | stream ಮಾಡದ ವಿನಂತಿಯ ಸಮಯ ಮಿತಿಗಿಂತ ಹೆಚ್ಚು ಸಮಯವನ್ನು ಹೋಸ್ಟ್ ಮಾಡಿದ ಓಪನ್-ವೇಟ್ ಮಾಡೆಲ್ ತೆಗೆದುಕೊಂಡಿತು. |
ಪರಿಶೀಲನೆಗಳು ಈ ಕ್ರಮದಲ್ಲಿ ನಡೆಯುತ್ತವೆ: API ಕೀ, ವಿನಂತಿ ಬಾಡಿ, ಮಾಡೆಲ್ id, ಫ್ಲಡ್ ಪ್ರೊಟೆಕ್ಷನ್, ಬ್ಯಾಲೆನ್ಸ್. ಆದ್ದರಿಂದ ತಪ್ಪು ಕೀ ಮತ್ತು ತಪ್ಪು ಬಾಡಿ ಇರುವ ವಿನಂತಿ 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 ಒಟ್ಟಾಗಿ ಎಣಿಸುತ್ತದೆ. ನಿಮ್ಮ ಮೊದಲ ವಿನಂತಿಯಿಂದ ನಿಮಿಷ ಆರಂಭವಾಗುತ್ತದೆ.
ಆ ನಿಮಿಷದೊಳಗಿನ 121 ನೇ ವಿನಂತಿ Too many requests. Retry in <n>s. ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಯಾವುದೇ ವೆಚ್ಚವಿಲ್ಲ. ನಿರಾಕರಿಸಿದ ವಿನಂತಿಗಳೂ ಎಣಿಕೆಯಾಗುತ್ತವೆ, ಆದ್ದರಿಂದ ಕಾಯದೆ ಮತ್ತೆ ಕಳುಹಿಸುವ ಕ್ಲೈಂಟ್ ನಿಮಿಷ ಮುಗಿಯುವವರೆಗೆ ನಿರಾಕರಣೆಯಲ್ಲೇ ಇರುತ್ತದೆ. ಸಂದೇಶದಲ್ಲಿರುವ <n> ಸೆಕೆಂಡ್ಗಳು ಕಾಯಿರಿ.
ಸಮಾನಾಂತರವಾಗಿ ಕಳುಹಿಸಿದ ವಿನಂತಿಗಳನ್ನು ಸಮಾನಾಂತರ ಎಂಬ ಕಾರಣಕ್ಕೆ ನಿರಾಕರಿಸಲಾಗುವುದಿಲ್ಲ. ಅವು ಸರದಿಯಲ್ಲಿ ಕಾಯುತ್ತವೆ ಮತ್ತು ಕ್ರಮವಾಗಿ ಉತ್ತರಿಸಲ್ಪಡುತ್ತವೆ.
GET /v1/models ಮತ್ತು ಟೋಕನ್ ಎಣಿಕೆ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳನ್ನು ಎಣಿಸಲಾಗುವುದಿಲ್ಲ.
ಮಿತಿಗಳು ಮತ್ತು ಬ್ಯಾಲೆನ್ಸ್ ಬಗ್ಗೆ ಹೆಚ್ಚು, ಹಾಗೂ ನಿಮ್ಮ ಬ್ಯಾಲೆನ್ಸ್ ಮತ್ತು ಬಳಕೆಯನ್ನು ಎಲ್ಲಿ ನೋಡಬೇಕು: ಮಿತಿಗಳು ಮತ್ತು ಬ್ಯಾಲೆನ್ಸ್ ಕೀಗಳು ಮತ್ತು ಬಳಕೆ
ಏನನ್ನು ಮರುಪ್ರಯತ್ನಿಸಬೇಕು
ಅದೇ ವಿನಂತಿ ಯಶಸ್ವಿಯಾಗಬಹುದಾದಾಗ ಮಾತ್ರ ಮತ್ತೆ ಕಳುಹಿಸಿ. OpenAI ಮತ್ತು Anthropic SDK ಗಳು 429 ಮತ್ತು 5xx ಉತ್ತರಗಳನ್ನು ತಾನಾಗಿಯೇ ಎರಡು ಬಾರಿ ಮರುಪ್ರಯತ್ನಿಸುತ್ತವೆ; ಅದನ್ನು ಬದಲಾಯಿಸಲು max_retries (JavaScript ನಲ್ಲಿ maxRetries) ಹೊಂದಿಸಿ.
| ದೋಷ | ಮತ್ತೆ ಕಳುಹಿಸಬೇಕೇ? | ಹೇಗೆ |
|---|---|---|
400, 404, 405, 413, 415, 422 | ಇಲ್ಲ. ಮೊದಲು ವಿನಂತಿಯನ್ನು ಸರಿಪಡಿಸಿ. | ಸಂದೇಶವು ತಪ್ಪಾಗಿರುವ ಫೀಲ್ಡ್, ಮಾಡೆಲ್ ಅಥವಾ ಇನ್ಪುಟ್ ಅನ್ನು ಹೆಸರಿಸುತ್ತದೆ. |
401 | ಇಲ್ಲ. ಮಾನ್ಯ ಕೀ ಬಳಸಿ. | Keys & usage ಪುಟದಲ್ಲಿ ಕೀಯನ್ನು ರಚಿಸಿ ಅಥವಾ ಬದಲಾಯಿಸಿ. |
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) import OpenAI from "openai";
// maxRetries: 0 — this loop does the retrying, the SDK does not add its own.
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.shannon-ai.com/v1", maxRetries: 0 });
const sleep = (seconds) => new Promise((resolve) => setTimeout(resolve, seconds * 1000));
async function createWithRetry(request, attempts = 5) {
for (let attempt = 0; attempt < attempts; attempt++) {
try {
return await client.chat.completions.create(request);
} catch (error) {
const text = String(error.message);
const flood = text.match(/Retry in (\d+)s/);
if (error.status === 429 && flood) {
await sleep(Number(flood[1])); // flood protection: wait out the minute
} else if (error.status === 429 && text.includes("temporarily busy")) {
await sleep(2 ** attempt);
} else if (error.status >= 500 || error instanceof OpenAI.APIConnectionError) {
await sleep(2 ** attempt); // 1, 2, 4, 8 seconds
} else {
throw error; // wrong request, wrong key or balance
}
}
}
throw new Error("the request failed after all attempts");
}
const response = await createWithRetry({
model: "shannon-3",
messages: [{ role: "user", content: "Hello" }],
});
console.log(response.choices[0].message.content); stream ಒಳಗಿನ ದೋಷಗಳು
stream ಗೆ ಅದರ ಮೊದಲ ಬೈಟ್ನಿಂದಲೇ ಸ್ಥಿತಿ 200 ಇರುತ್ತದೆ. ಅದರ ನಂತರದ ವೈಫಲ್ಯ stream ಒಳಗೆ ಈವೆಂಟ್ ಆಗಿ ಬರುತ್ತದೆ: /v1/chat/completions ನಲ್ಲಿ error ಸದಸ್ಯವಿರುವ chunk, /v1/messages ನಲ್ಲಿ error ಈವೆಂಟ್, /v1/responses ನಲ್ಲಿ response.failed ಅಥವಾ error ಈವೆಂಟ್. stream ನ ಮುಕ್ತಾಯ ಈವೆಂಟ್ಗಳು ಆಗಲೂ ಅನುಸರಿಸುತ್ತವೆ. ಅಂತಹ ಉತ್ತರವನ್ನು ವಿಫಲ ಎಂದು ಪರಿಗಣಿಸಿ, 5xx ಸ್ಥಿತಿಯಂತೆಯೇ ವಿನಂತಿಯನ್ನು ಮತ್ತೆ ಕಳುಹಿಸಿ.
ಮಾಡೆಲ್ನ ಕಾಂಟೆಕ್ಸ್ಟ್ ವಿಂಡೋಗಿಂತ ಉದ್ದವಾದ ಸಂಭಾಷಣೆಯನ್ನು ಈ ರೀತಿಯಲ್ಲಿ ವರದಿ ಮಾಡಲಾಗುತ್ತದೆ, ವಿಧ invalid_request_error ಮತ್ತು ಕೋಡ್ context_length_exceeded ಜೊತೆ. ಮತ್ತೆ ಕಳುಹಿಸುವ ಮೊದಲು ಸಂಭಾಷಣೆಯನ್ನು ಚಿಕ್ಕದಾಗಿಸಿ.
ನಿಖರವಾದ ಫ್ರೇಮ್ಗಳನ್ನು ಸ್ಟ್ರೀಮಿಂಗ್ ಜೊತೆ ವಿವರಿಸಲಾಗಿದೆ. ಸ್ಟ್ರೀಮಿಂಗ್
ವಿನಂತಿ id ಗಳು
ಪ್ರತಿ ಉತ್ತರಕ್ಕೂ, ದೋಷಗಳು ಸೇರಿದಂತೆ, x-request-id ಹೆಡರ್ ಇರುತ್ತದೆ. ಅದು ನೀವು ನಿಮ್ಮ ಸ್ವಂತ x-request-id ಹೆಡರ್ನಲ್ಲಿ ಕಳುಹಿಸಿದ ಮೌಲ್ಯ, ಅಥವಾ ಏನನ್ನೂ ಕಳುಹಿಸದಿದ್ದರೆ 12 ಹೆಕ್ಸಾಡೆಸಿಮಲ್ ಅಕ್ಷರಗಳು. ಅದನ್ನು ಲಾಗ್ ಮಾಡಿ, ಮತ್ತು ವಿನಂತಿಯ ಬಗ್ಗೆ ಸಹಾಯ ಕೇಳುವಾಗ ಉಲ್ಲೇಖಿಸಿ.