הגבלת קצב
Triggerfish כולל מגביל קצב בחלון נע שמונע פגיעה במגבלות API של ספקי LLM. הוא עוטף כל ספק באופן שקוף -- לולאת הסוכן אינה צריכה לדעת על מגבלות קצב. כאשר הקיבולת אוזלת, קריאות מעוכבות אוטומטית עד שהחלון נע מספיק כדי לפנות קיבולת.
כיצד זה עובד
מגביל הקצב משתמש בחלון נע (ברירת מחדל 60 שניות) לעקוב אחר שני מדדים:
- Tokens per minute (TPM) -- סה"כ tokens שנצרכו (prompt + completion) בתוך החלון
- Requests per minute (RPM) -- סה"כ קריאות API בתוך החלון
לפני כל קריאת LLM, המגביל בודק קיבולת זמינה מול שתי המגבלות. אם אחת מהן אוזלת, הקריאה ממתינה עד שהרשומות הישנות ביותר גולשות מהחלון ומפנות מספיק קיבולת. לאחר כל קריאה שמושלמת, שימוש בפועל ב-tokens נרשם.
הן קריאות streaming והן קריאות שאינן streaming צורכות מאותו תקציב. עבור קריאות streaming, שימוש ב-tokens נרשם כאשר הזרם מסתיים.
מגבלות שכבות OpenAI
מגביל הקצב מגיע עם ברירות מחדל מובנות למגבלות השכבות המפורסמות של OpenAI:
| שכבה | GPT-4o TPM | GPT-4o RPM | o1 TPM | o1 RPM |
|---|---|---|---|---|
| Free | 30,000 | 500 | 30,000 | 500 |
| Tier 1 | 30,000 | 500 | 30,000 | 500 |
| Tier 2 | 450,000 | 5,000 | 100,000 | 1,000 |
| Tier 3 | 800,000 | 5,000 | 100,000 | 1,000 |
| Tier 4 | 2,000,000 | 10,000 | 200,000 | 10,000 |
| Tier 5 | 30,000,000 | 10,000 | 200,000 | 10,000 |
אלו ברירות מחדל המבוססות על מגבלות OpenAI המפורסמות.
המגבלות בפועל שלכם תלויות בשכבת חשבון OpenAI שלכם והיסטוריית השימוש. ספקים אחרים (Anthropic, Google) מנהלים מגבלות קצב משלהם בצד השרת -- המגביל שימושי ביותר ל-OpenAI שבו חנק בצד הלקוח מונע שגיאות 429. :::
תצורה
הגבלת קצב אוטומטית בעת שימוש בספק העטוף. אין צורך בתצורת משתמש להתנהגות ברירת מחדל. המגביל מזהה את הספק שלכם ומחיל את המגבלות המתאימות.
משתמשים מתקדמים יכולים להתאים מגבלות דרך תצורת הספק ב- triggerfish.yaml:
yaml
models:
providers:
openai:
model: gpt-4o
rate_limit:
tpm: 450000 # Tokens per minute
rpm: 5000 # Requests per minute
window_ms: 60000 # גודל חלון (ברירת מחדל 60 שנ')הגבלת קצב מגינה עליכם משגיאות 429 וחשבונות לא צפויים. היא
עובדת לצד שרשרת המעבר -- אם מגבלות קצב נפגעות והמגביל אינו יכול לחכות (timeout), המעבר נכנס לפעולה ומנסה את הספק הבא. :::
ניטור שימוש
מגביל הקצב חושף תמונת מצב חיה של שימוש נוכחי:
{tokensUsed, requestsUsed, tpmLimit, rpmLimit, windowMs}פס ההתקדמות של הקשר ב-CLI וב-Tide Pool מציג שימוש בהקשר. סטטוס מגבלת קצב נראה ביומני debug:
[DEBUG] [provider] Rate limiter: 12,450/30,000 TPM, 8/500 RPM (window: 60s)כאשר המגביל מעכב קריאה, הוא מתעד את זמן ההמתנה:
[INFO] [provider] Rate limited: waiting 4.2s for TPM capacityהגבלת קצב ערוצים
בנוסף להגבלת קצב ספקי LLM, Triggerfish אוכף מגבלות קצב הודעות לכל ערוץ למניעת הצפת פלטפורמות הודעות. כל מתאם ערוץ עוקב אחר תדירות הודעות יוצאות ומשהה שליחות כאשר מתקרבים למגבלות.
זה מגן מפני:
- איסורי API של פלטפורמות מנפח הודעות מוגזם
- ספאם מקרי מלולאות סוכן פורחות
- סופות הודעות שמופעלות על ידי webhook
מגבלות קצב ערוצים נאכפות באופן שקוף על ידי נתב הערוצים. אם הסוכן מייצר פלט מהר יותר ממה שהערוץ מתיר, הודעות נשמרות בתור ונמסרות בקצב המקסימלי המותר.
קשור
- ספקי LLM ומעבר אוטומטי -- שילוב שרשרת מעבר עם הגבלת קצב
- תצורה -- סכמת
triggerfish.yamlמלאה
