OpenAI
הדף הזה תורגם באופן אוטומטי. לצפייה במאמר המקורי באנגלית.

שימוש ב-logit bias לשינוי ההסתברות של טוקנים ב-API של OpenAI

למדו איך להשתמש בפרמטר logit bias כדי לשנות את הפלט של מודלים

עודכן: 4 days ago

Logit_bias הוא פרמטר אופציונלי שמשנה את ההסתברות שטוקנים מסוימים יופיעו בפלט שמודל יוצר.

הפרמטר מקבל אובייקט JSON שממפה טוקנים לערכי הטיה בטווח שבין ‎-100 (שברוב המקרים ימנע את יצירת הטוקן) לבין 100 (בחירה בלעדית בטוקן, שמגדילה את הסיכוי שייווצר). ערכים מתונים כמו ‎-1 ו-1 ישנו את ההסתברות לבחירת הטוקן במידה קטנה יותר.

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

דוגמה 1: הסרת המילה "time"

אם נשלח בקשה ל-endpoint של Completions עם הפרומפט "Once upon a", סביר מאוד שההשלמה תתחיל ב-" time".

המילה "time" מומרת לטוקן שמזההו 2435, והמילה " time" (עם רווח בתחילתה) מומרת לטוקן שמזההו 640. אפשר להעביר את המזהים האלה באמצעות logit_bias עם הערך ‎-100 כדי למנוע את הופעתם בהשלמה, כך:

completion = client.chat.completions.create( 
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "You finish user's sentences."},
"role": "user", "content": "Once upon a"} ]
logit_bias={2435:-100, 640:-100}
)

כעת, הפרומפט "Once upon a" מניב את ההשלמה "midnight dreary, while I pondered, weak and weary."

שימו לב שהמילה "time" אינה מופיעה כלל, כי חסמנו את הטוקן הזה באמצעות logit_bias.

דוגמה 2: הכוונת הפלט באמצעות ערכי logit bias ממוקדים

נעבור על דוגמה נוספת, הפעם עם פרומפט ליצירת מתכונים.

מתכונים רבים מציעים להשתמש בסירים, אבל נניח שאין לנו סיר. נרצה למנוע מהמילה pot להופיע בהשלמה שלנו. המילה "Pot" מומרת לטוקן שמזההו 1787, ולכן אפשר למנוע את הופעתה בפלט באמצעות הגדרת logit_bias כך:

logit_bias={1787:-100}

כעת, ההשלמה שלנו עשויה לכלול במקום זאת את המילה "saucepan". מצוין!

דוגמה 3: הגדלת הסיכוי שמילה תופיע

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

למשל, אולי אנחנו מנהלים אתר שמציע מתכונים להכנה במיקרוגל, ולכן חשוב לנו לוודא שהמילה "microwave" תופיע במתכון. המילה Microwave מומרת לטוקן שמזההו 27000. אפשר להגדיל את הסיכוי שהטוקן הזה יופיע באמצעות הגדרת ערך חיובי ל-logit_bias, כך:

logit_bias={27000:5}

כעת, יש סיכוי גבוה יותר שההשלמה שלנו תכלול את המילה "microwave".

הגדרנו את logit_bias לערך 5, משום שמצאנו שכאשר logit_bias הוגדר לערך 1, המילה "microwave" לא הופיעה בהשלמה במקרים רבים. לעומת זאת, ערכים גבוהים יותר של logit_bias, כמו 10, גרמו למילה " microwave" להופיע בהשלמה לעיתים קרובות מדי.

האם המאמר הזה היה מועיל?