איך זה עובד
Markdownמה קורה לבקשה בין התוכנה שלכם למודל.
המדריך המלא
אתם שולחים בקשה ל-Ailoot API כפי שהייתם שולחים אותה ישירות ל-OpenAI, ל-Anthropic או ל-Google. Ailoot בודק את המפתח והיתרה, מעביר את הבקשה למודל, מחזיר תשובה באותו פורמט ומחייב לפי השימוש בפועל.
מפתח אחד — שלושה פורמטים
הפורמט נקבע לפי נתיב הבקשה ולא לפי המודל. אפשר לקרוא לאותו מודל Claude דרך OpenAI Chat, OpenAI Responses או Anthropic Messages — התשובה תגיע בפורמט של הנתיב שאליו פניתם.
| פורמט | נתיב | מי משתמש בו |
|---|---|---|
| OpenAI Chat Completions | /v1/chat/completions | OpenAI SDK, רוב הצ'אטים והעורכים, n8n, LangChain |
| OpenAI Responses | /v1/responses | Codex CLI, OpenAI Agents SDK, גרסאות חדשות של SDK |
| Anthropic Messages | /v1/messages | Claude Code, Anthropic SDK, Zed, Cline |
| Gemini | /v1beta/models/{model}:generateContent | Gemini CLI, Google GenAI SDK |
כספים: רזרבה וחיוב יחיד
- לפני שליחת בקשת טקסט חדשה, Ailoot שומר כרזרבה את אומדן עלות הקלט והתשובה הטיפוסית, תוך התחשבות במגבלה (
max_tokens) ובתנאי המודל המסוים. אם הרזרבה חורגת מהיתרה הפנויה או ממגבלת המפתח, אפשר להקטין את המגבלה שנשלחת רק במודל ובמתודה שמקיימים אותה בפועל, ולא מתחת ל-256 טוקנים ולא מתחת למינימום הפלט שנקבע. עבור תמונות, וידאו ושמע בפלט נשמרת כרזרבה מלוא עלות התוצאה. - לאחר התשובה — חיוב יחיד לפי השימוש בפועל. הרזרבה שלא נוצלה משתחררת ליתרה מיד.
- אם התשובה יקרה מהרזרבה, ההפרש נלקח מהיתרה הפנויה. היתרה לעולם אינה הופכת לשלילית.
- אם אין די כסף אפילו לרזרבה המינימלית, הבקשה אינה נשלחת: מתקבלת שגיאה ברורה 402 ולא מחויב דבר.
- שגיאה שלא התקבלה אחריה תוצאה אינה מחויבת.
הפרטים ודוגמת החישוב נמצאים בעמוד רזרבה וחיוב.
שגיאות עם Request ID
כל תשובה מקבלת מזהה בקשה: בכותרת X-Request-ID ובהודעת השגיאה. השגיאות מגיעות ב-JSON של הפורמט שאליו פניתם, ולכן ערכות SDK מזהות אותן נכון. אם משהו השתבש, שלחו Request ID ל- תמיכה — כך נוכל למצוא את הבקשה בתוך דקה.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}זרמים וזמני המתנה
תשובות בזרם (stream: true) מגיעות כ-Server-Sent Events. Ailoot מחזיר את תשובת הטקסט בתשלום לאחר חישוב העלות. לכן עם stream: true הפורמט נשאר זרם (SSE), אך הטקסט מגיע כבלוק אחד כשהמודל מסיים, ולא מילה אחר מילה. אם הכנת התשובה נמשכת יותר מכ-15 שניות, בזרמים של Chat Completions, Responses ו-Messages מגיעות תחילה שורות השירות : ping (בערך פעם ב-10 שניות), ולאחר מכן השורה : ailoot-charged-usd … עם סכום החיוב והנתונים עצמם. ערכות SDK מדלגות על שורות כאלה.
פורמט Gemini אינו כולל שורות שירות: התשובה :streamGenerateContent מגיעה בשלמותה לאחר החישוב. למודלי הסקה הגדירו זמן המתנה ללקוח עם מרווח מספיק: כמה דקות הן זמן רגיל.
כותרות התשובה
X-Request-ID מגיע בכל תשובה. Ailoot מוסיף את יתר הכותרות לתשובות טקסט שחויבו:
| כותרת | מה היא מכילה |
|---|---|
X-Request-ID | מזהה הבקשה — התמיכה מבקשת אותו |
X-Ailoot-Charged-USD | הסכום שחויב עבור הבקשה הזאת, בדולרים |
X-Ailoot-Output-Tokens | מספר טוקני התשובה שחויבו |
X-Ailoot-Max-Tokens-Capped | מגבלת התשובה שאליה היא הוקטנה כי היתרה לא הספיקה לרזרבה המלאה |
X-Ailoot-Notice-Code, X-Ailoot-Notice | הסבר אם התשובה נעצרה במגבלת האורך |
אם הזרם כבר התחיל בשורות שירות, המידע הזה מגיע כשורת הערה לפני הנתונים, ולא ככותרת.
מטמון פרומפטים
אם המודל תומך במטמון, קידומת ארוכה שנשלחת שוב (הוראת מערכת, מסמכים) עשויה להיות זולה יותר. מחירי הקריאה והכתיבה למטמון מוצגים בכרטיס המודל ב- קטלוג. מפתח המודל קובע אם תימצא התאמה במטמון; Ailoot אינו מבטיח זאת.