شروع کار
خطاها
قالب دقیق خطا در /v1، فهرست وضعیتها و کدها و اینکه کدام خطا را باید دوباره فرستاد.
قالب خطا
خطاهای /v1 به قالب OpenAI برمیگردند:
{
"error": {
"message": "The model 'openai/unknown' does not exist or you do not have access to it.",
"type": "invalid_request_error",
"code": "model_not_found",
"param": "model",
"request_id": "6f1d3c52-8a0e-4b1e-9d7a-2f6f1c3b9a10"
}
}message: متن انگلیسی برای لاگ. برای نشان دادن به کاربر نهایی مناسب نیست.type: دستهی خطا. مقدارهای ممکنinvalid_request_error،authentication_error،insufficient_quota،permission_error،rate_limit_error،guardrail_errorوapi_errorهستند. در خطای 429 ناشی ازrate_limit_exceededبهجای اینهاrequestsیاtokensمیآید، یعنی کدام پنجره پر شده.code: شناسهی پایدار خطا. منطق برنامه را رویcodeبنویسید، نه رویmessage.param: پارامتر مشکلدار، یاnull.request_id: شناسهی درخواست. همان در سرآیندx-request-idهم هست. برای پشتیبانی همین را بفرستید.details: فقط در بعضی خطاها. در 402 مقدارrequiredوavailable(اعتبار) را دارد.
وضعیت 499 (بسته شدن اتصال توسط کلاینت) هیچوقت به شما نمیرسد، چون کلاینت رفته است.
قالب Anthropic و Gemini
روی /v1/messages خطا به قالب Anthropic میآید: {"type": "error", "error": {"type", "message"}, "request_id"}. وضعیت 446 (مسدود شدن توسط قاعدهی نگهبان) در آن 400 و وضعیت 503 برابر 529 میشود. روی /v1beta خطا به قالب Google است: {"error": {"code", "message", "status"}} و 446 به 400 تبدیل میشود. کدهای وان ای آی در این دو قالب نیستند، پس تصمیمگیری را روی وضعیت HTTP بگذارید.
وضعیتها و کدها
| وضعیت | کد | معنا | دوباره بفرستم؟ |
|---|---|---|---|
| 400 | invalid_request | بدنه با طرح درخواست نمیخواند. param نام فیلد را میدهد. | خیر، درخواست را اصلاح کنید |
| 400 | invalid_json | بدنه JSON معتبر نیست | خیر |
| 400 | context_length_exceeded | ورودی از پنجرهی متن مدل بلندتر است | خیر، ورودی را کوتاه کنید |
| 400 | model_kind_mismatch | نوع مدل با مسیر نمیخواند (مثلاً مدل تصویر در چت) | خیر |
| 400 | provider_invalid_request | مدل پارامترها یا پیامها را نپذیرفت | خیر |
| 400 | invalid_image_url | تصویری که در درخواست آمده خوانده نشد | خیر |
| 400 | provider_model_not_found | مدل فعلاً از سمت سرویس بالادستی در دسترس نیست | بعداً، یا مدل دیگر |
| 400 | invalid_config، config_not_found | مقدار سرآیند x-1ai-config معتبر نیست یا پیدا نشد | خیر |
| 400 | no_routable_target | مدل الان هیچ مسیر سالمی ندارد | بعد از چند ثانیه |
| 401 | invalid_api_key | کلید نامعتبر یا غیرفعال است | خیر. احراز هویت |
| 402 | insufficient_credits | اعتبار کافی نیست | فقط بعد از شارژ |
| 402 | key_cap_reached | سقف ماهانهی این کلید پر شده | بعد از تغییر سقف یا ماه بعد |
| 402 | member_cap_reached | سقف ماهانهی شما در فضای کاری تیمی پر شده | خیر |
| 402 | model_price_missing | قیمت این مدل هنوز تعیین نشده | خیر |
| 403 | model_not_allowed | کلید اجازهی استفاده از این مدل را ندارد | خیر |
| 403 | model_not_available_for_tier | مدل برای سطح API شما باز نیست | خیر |
| 404 | model_not_found | مدل وجود ندارد یا به آن دسترسی ندارید | خیر |
| 404 | not_found | مسیر یا متد ناشناخته است | خیر |
| 413 | request_too_large | بدنه از حد مجاز بزرگتر است (۲۵ مگابایت) | خیر |
| 413 | file_too_large | فایل آپلودی از ۲۵ مگابایت بزرگتر است | خیر |
| 429 | rate_limit_exceeded | سقف درخواست یا توکن پر شده. سرآیند retry-after را دارد. | بله، بعد از retry-after |
| 429 | budget_exceeded | یک بودجهی تعریفشده پر شده | خیر، تا پایان دوره یا تغییر بودجه |
| 429 | provider_rate_limit_exceeded | سرویس بالادستی موقتاً کند کرده است | بله، با تأخیر |
| 446 | guardrail_denied | یک قاعدهی نگهبان درخواست یا پاسخ را مسدود کرد | خیر |
| 500 | internal_error | خطای غیرمنتظره در دروازه | بله، با تأخیر |
| 502 | provider_connection_error، provider_api_error، provider_authentication_error | سرویس بالادستی در دسترس نبود یا خطا داد | بله، با تأخیر |
| 503 | provider_service_unavailable | سرویس بالادستی موقتاً در دسترس نیست | بله، با تأخیر |
| 504 | provider_timeout | سرویس بالادستی بهموقع جواب نداد | بله، با تأخیر |
کدام را دوباره بفرستم
بله: 429 با rate_limit_exceeded یا provider_rate_limit_exceeded، و 500، 502، 503، 504. با تأخیر نمایی و کمی تصادف دوباره بفرستید و اگر retry-after آمده، همان را رعایت کنید. دروازه خودش پیش از رسیدن خطا به شما مسیر بعدی را امتحان میکند (پایداری)، پس خطای 5xx یعنی چند مسیر شکست خوردهاند.
خیر: همهی 4xx دیگر. تکرار همان درخواست همان خطا را میدهد. 402 با شارژ حل میشود و 400 با اصلاح درخواست.
درخواستهای ناموفقی که پیش از اجرای مدل رد شدند یا خطای سرویس بالادستی دادند، اعتباری کم نمیکنند.
خطا در میانهی استریم
اگر استریم پس از ارسال اولین بایت قطع شود، وضعیت HTTP دیگر قابل تغییر نیست. خطا به شکل یک فریم داده میآید و بعد از آن [DONE]. استریم را ببینید.
صفحههای مرتبط
- محدودیت نرخپنجرههای محدودیت درخواست و توکن، سرآیندهای پاسخ و کاری که هنگام خطای 429 باید کرد.
- اعتبار و صورتحسابهزینهی API چگونه از اعتبار کم میشود: رزرو پیش از اجرا، تسویه بعد از آن، خطای 402 و جای دیدن قیمتها.
- پایداریرفتار قابل دیدن برای مشتری: مسیر جایگزین خودکار، شناسهی درخواست برای پیگیری و مهلت زمانی.
- احراز هویتکلید API را چگونه بفرستید، قالب آن چیست، چه چیزی باعث رد شدن کلید میشود و چطور آن را امن نگه دارید.