דילוג לתוכן
NotHolyתיעוד

מדריכים

שגיאות

פורמט השגיאות, קודי הסטטוס ואילו שגיאות כדאי לנסות שוב.

להציג כ-Markdown

השגיאות מגיעות בפורמט של ה-endpoint שאליו נשלחה הקריאה.

פורמטים של OpenAI:

JSON
{"error": {"message": "not enough credits for this request. Add credits in the console", "type": "insufficient_quota", "code": "insufficient_credits", "param": null, "request_id": "req_..."}}

Messages:

JSON
{"type": "error", "error": {"type": "rate_limit_error", "message": "too many requests per minute for this key"}, "request_id": "req_..."}
סטטוסקודלנסות שוב?מה לעשות
400invalid_request, unsupported_parameterלאלתקן את גוף הבקשה
400context_length_exceededאחרי קיצורפרטים באורך הקשר
401invalid_api_keyלאלבדוק את המפתח
402insufficient_credits, key_budget_exceededלאלהוסיף קרדיטים או להעלות את התקציב של המפתח
403key_not_allowed, account_suspendedלאלבדוק את המודלים וכתובות ה-IP שהמפתח מורשה להם, או לפנות לתמיכה
403consent_requiredלאההסכמה של יוצר המפתח לעיבוד במדינות שותפות נדחתה או נמשכה. אפשר לאשר אותה בקונסולה
404model_not_found, not_foundלאלבדוק את המזהה
413request_too_largeלאלשלוח פחות
429rate_limit_exceeded, concurrency_limit_exceeded, capacity_busyכןלחכות את מספר השניות שבכותרת retry-after
500internal_errorכן, עם backoffאם זה חוזר, לדווח על הערך של x-request-id
502, 504upstream_error, upstream_timeoutכן, עם backoff
503model_unavailableכןלנסות שוב עם backoff (retry-after מוגדר בזמן שהשירות עולה מחדש) או להשתמש במודל אחר

retry-after הוא מספר שלם של שניות, לכל היותר 60.

בקשה שנכשלת לפני שהתשובה מתחילה לא מחויבת, והיא מופיעה בפעילות עם הסטטוס וקוד השגיאה (עד 30 בקשות שנכשלו למפתח בדקה). אם תשובה נקטעת באמצע, משלמים על הטוקנים שכבר נוצרו.

אורך הקשר

בקשה שלא נכנסת למודל מחזירה 400. בפורמטים של OpenAI הקוד הוא context_length_exceeded. ב-Messages הסוג הוא invalid_request_error, עם אותה הודעה. כשההערכה לבדה גבוהה בהרבה מהמגבלה, הבקשה נעצרת לפני שהיא מגיעה למודל:

Text
this request has about N tokens and MODEL accepts M; shorten it or compact the conversation

אחרת המודל מסרב לה, בדרך כלל כי הפרומפט יחד עם מגבלת הפלט לא נכנסים, וההודעה היא:

Text
this request is too large for MODEL, which accepts M tokens including the answer; shorten it or compact the conversation

שני המקרים לא מחויבים. N הוא הערכה. המגבלה של כל מודל מופיעה בשדה context_length בתשובה של GET /v1/models.

ה-API לא דוחס שיחות. כמו API אחרים שתואמים ל-OpenAI ול-Anthropic, הוא אף פעם לא משמיט או משכתב את ההודעות שלך, ולכן הלקוח צריך להחזיק את השיחה בתוך המגבלה. יש להסיר את ההודעות הישנות ביותר או להחליף אותן בסיכום, להשאיר כל קריאת כלי יחד עם התוצאות שלה, ולשלוח את הבקשה שוב. סוכן הטרמינל עושה את זה לבד.

ניסיונות חוזרים בטוחים

בבקשות שאינן בסטרימינג שולחים כותרת Idempotency-Key. ניסיון חוזר עם אותו מפתח בתוך 24 שעות מחזיר את התגובה הראשונה, עם x-notholy-idempotent-replay: true, ולא מחויב שוב. רק תגובות מוצלחות מוחזרות כך. התגובה נשמרת בזיכרון של השרת שענה, אף פעם לא בדיסק, ולכן ניסיון חוזר אחרי הפעלה מחדש או כזה שמגיע לשרת אחר רץ שוב ומחויב.

curl
curl https://api.notholy.com/v1/chat/completions \
  -H "Authorization: Bearer $NOTHOLY_API_KEY" \
  -H "Idempotency-Key: report-42-summary" \
  -H "Content-Type: application/json" \
  -d '{"model": "notholy-specter", "messages": [{"role": "user", "content": "One-line summary of an open redirect."}]}'

ה-SDKs הרשמיים כבר מנסים שוב שגיאות 429 ו-5xx עם backoff.

הבא