Skip to content

הגבלת קצב

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 TPMGPT-4o RPMo1 TPMo1 RPM
Free30,00050030,000500
Tier 130,00050030,000500
Tier 2450,0005,000100,0001,000
Tier 3800,0005,000100,0001,000
Tier 42,000,00010,000200,00010,000
Tier 530,000,00010,000200,00010,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

מגבלות קצב ערוצים נאכפות באופן שקוף על ידי נתב הערוצים. אם הסוכן מייצר פלט מהר יותר ממה שהערוץ מתיר, הודעות נשמרות בתור ונמסרות בקצב המקסימלי המותר.

קשור