תחילת העבודה עם מדיניות בנושא טוקנים של LLM

הדף הזה מתייחס ל-Apigee, אבל לא ל-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

סקירה כללית

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

במאמר הזה נסביר איך מתחילים להשתמש במדיניות הבאה בנושא טוקנים של מודלים גדולים של שפה (LLM):

  • מדיניות PromptTokenLimit: מגנה על יעדים מפני שימוש לרעה באסימונים על ידי הגבלת קצב האסימונים על סמך הודעת ההנחיה למשתמש. המדיניות PromptTokenLimit דומה למנגנון למניעת עליות חדות בשימוש בטוקנים בהנחיות ל-AI. הוא עוזר לכם לשלוט בקצב השימוש בטוקנים מהנחיות למשתמשים, כדי למנוע ניצול לרעה ולוודא שלא יהיה עומס יתר על שירותי הקצה העורפי.
  • ‫LLMTokenQuota policy: שולט בהוצאות על LLM ומחיל ניהול מכסות גרנולרי שמבוסס על מוצרי API. מדיניות LLMTokenQuota מאפשרת לאכוף מגבלות על צריכת טוקנים בממשקי ה-API של LLM במהלך תקופת זמן ספציפית (לדוגמה, לדקה, לשעה, ליום או לחודש). הנתון הזה חשוב מאוד לניהול העלויות ולהבטחת שימוש הוגן בשירותי ה-AI.

מדיניות PromptTokenLimit

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

מוסיפים את המדיניות הזו לזרימת הבקשות של ה-proxy ל-API.

בדוגמה הבאה של מדיניות PromptTokenLimit, קצב האסימונים מוגבל ל-1,000 אסימונים לדקה:

<PromptTokenLimit continueOnError="false" enabled="true" name="PTL-limitTokens-1">
  <DisplayName>Limit Prompt Tokens</DisplayName>
  <!-- The rate at which to limit tokens. Here, 1,000 per minute -->
  <Rate>1000pm</Rate>
  <!-- Specifies where to get the user's prompt from the request -->
  <UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content,true)}</UserPromptSource>
</PromptTokenLimit>

כאשר:

  • ‫<Rate>: הקצב שבו יוגבלו האסימונים.
  • ‫<UserPromptSource>: מציין מאיפה לקבל את ההנחיה של המשתמש מהבקשה.

בדף המידע בנושא המדיניות PromptTokenLimit אפשר למצוא:

מגדירים את המדיניות PromptTokenLimit בממשק המשתמש של Apigee כשמבצעים את המשימות הבאות:

מדיניות LLMTokenQuota

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

אפשר להשתמש במדיניות בשתי דרכים עיקריות:

  • ספירת טוקנים: אפשר להשתמש בהגדרה CountOnly כדי לעקוב אחרי השימוש בטוקנים בלי להגביל את השימוש. כדאי להיעזר בזה אם רוצים לעקוב אחרי הנתונים ולדווח עליהם.
  • אכיפת מכסות: משתמשים בהגדרה EnforceOnly כדי לדחות קריאות ל-API אחרי שחורגים ממכסת הטוקנים.

מוסיפים מדיניות EnforceOnly לזרימת הבקשות כדי לבדוק אם חרגתם מהמכסה. מוסיפים מדיניות CountOnly לזרימת התשובות כדי לספור את הטוקנים שנעשה בהם שימוש בתשובת ה-LLM.

בדוגמה הבאה של מדיניות LLMTokenQuota נאכפת מכסה של 10,000 טוקנים לשעה, וההגדרות נלקחות באופן דינמי ממוצר API:

<LLMTokenQuota name="Quota-Enforce-Only" type="rollingwindow">
  <EnforceOnly>true</EnforceOnly>
  <!-- The interval and time unit for the quota -->
  <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.interval">1</Interval>
  <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.timeunit">hour</TimeUnit>
  <!-- The number of tokens allowed in the interval -->
  <Allow count="10000" countRef="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.limit"/>
  <!-- Specifies where to get the token usage from the LLM's response -->
  <LLMTokenUsageSource>{jsonPath('$.usageMetadata.candidatesTokenCount',response.content,true)}</LLMTokenUsageSource>
  <!-- Specifies where to get the model name from the LLM's response -->
  <LLMModelSource>{jsonPath('$.model',response.content,true)}</LLMModelSource>
</LLMTokenQuota>

כאשר:

  • ‫<EnforceOnly>: כשהערך מוגדר ל-true, נעשה שימוש ברכיב הזה כדי לדחות קריאות ל-API אחרי שחורגים ממכסת הטוקנים. כך ספקי API יכולים להגדיר מגבלות מחמירות על מספר הטוקנים שאפליקציות צורכות במרווח זמן מוגדר.
  • ‫<Interval>: הרכיב הזה מציין את מרווח הזמן שבו מחושב מספר הטוקנים מתשובות של מודל שפה גדול. היא משמשת בשילוב עם <TimeUnit> ועם <Allow> כדי להגדיר את מכסת האסימונים.
  • ‫<TimeUnit>: האלמנט הזה מגדיר את יחידת הזמן של <Interval>. הערכים התקפים כוללים minute,‏ hour,‏ day או month.
  • ‫<Allow>: האלמנט הזה מגדיר את מספר האסימונים שמותרים ב-<Interval>.
  • ‫<LLMTokenUsageSource>: הרכיב הזה מספק את המקור של השימוש בטוקנים מהתשובה של ה-LLM. הוא צריך להיות תבנית הודעה שמספקת ערך יחיד של השימוש בטוקן.
  • ‫<LLMModelSource>: הרכיב הזה מספק את המקור של המודל מתוך התשובה או הבקשה של ה-LLM. הוא צריך להיות תבנית הודעה שמספקת ערך יחיד של שם המודל.

במאמר LLMTokenQuota policy מפורטים:

מגדירים את מדיניות LLMTokenQuota בממשק המשתמש של Apigee כמו שמתואר בקטעים הבאים:

מגבלות

יש מגבלות על כללי המדיניות בנושא אסימונים של מודלים גדולים של שפה (LLM):

  • הגבלות על המדיניות LLMTokenQuota
    • בשלב הזה, המדיניות תומכת רק בטוקנים מבוססי-טקסט.
    • יכול להיות שהבקשה האחרונה שמותרת תצרוך יותר טוקנים מהמכסה שנותרה.
    • המדיניות מחייבת לציין את נתיב ה-JSON המדויק של אסימוני ה-LLM שנצרכו במטען הייעודי (payload) של התגובה, ולא ניתן לזהות אותו באופן אוטומטי.
  • מגבלות המדיניות PromptTokenLimit
    • בשלב הזה, המדיניות תומכת רק בטוקנים מבוססי-טקסט.
    • המדיניות משתמשת בספרייה רגילה כדי לספור את הטוקנים, והספירה הזו עשויה להיות שונה מהספירה של ספקי LLM מסוימים.
    • המדיניות מחייבת את נתיב ה-JSON המדויק של טקסט ההנחיה, ולא ניתן למצוא אותו באופן דינמי.

מידע נוסף