הדף הזה מתייחס ל-Apigee, אבל לא ל-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
סקירה כללית
מדיניות האסימונים של LLM ב-Apigee חיונית לשליטה בעלויות, לשיפור הביצועים וליציבות הפלטפורמה. היא מתבססת על נתוני השימוש באסימונים של LLM ובאסימונים של הנחיות המשתמשים כדי לאכוף מגבלות ולספק מעקב בזמן אמת.
במאמר הזה נסביר איך מתחילים להשתמש במדיניות הבאה בנושא טוקנים של מודלים גדולים של שפה (LLM):
- PromptTokenLimit policy: מגנה על יעדים מפני שימוש לרעה באסימונים על ידי הגבלת קצב האסימונים על סמך הודעת ההנחיה למשתמש. המדיניות 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 מפורטים:
מגדירים את מדיניות LLMTokenQuota בממשק המשתמש של Apigee כמו שמתואר בקטעים הבאים:
מגבלות
יש מגבלות על כללי המדיניות בנושא אסימונים של LLM:
- הגבלות על המדיניות LLMTokenQuota
- בשלב הזה, המדיניות תומכת רק בטוקנים מבוססי-טקסט.
- יכול להיות שהבקשה האחרונה שמותרת תצרוך יותר טוקנים מהמכסה שנותרה.
- המדיניות מחייבת לציין את נתיב ה-JSON המדויק של טוקני ה-LLM שנצרכו במטען הייעודי (payload) של התגובה, ולא ניתן לזהות אותו באופן אוטומטי.
- מגבלות המדיניות PromptTokenLimit
- בשלב הזה, המדיניות תומכת רק בטוקנים מבוססי-טקסט.
- המדיניות משתמשת בספרייה סטנדרטית כדי לספור את הטוקנים, והספירה הזו עשויה להיות שונה מהספירה של ספקי LLM מסוימים.
- המדיניות דורשת את נתיב ה-JSON המדויק של טקסט ההנחיה, ולא ניתן למצוא אותו באופן דינמי.