Menu

Few-Shot Prompting: דוגמאות ומתי להשתמש

Few-shot prompting מכניס לפרומפט כמה דוגמאות פתורות, כל אחת קלט והתשובה שאתם רוצים, כדי שהמודל יעתיק את הדפוס. זו הדרך המהירה ביותר ללמד פורמט, סט תוויות או סגנון בית שהמודל לא היה מנחש.

כל פרומפט למטה ניתן לעריכה: שנו אותו, ואז פתחו אותו ב-ChatGPT, ב-Claude או באפליקציית AI אחרת.

Few-shot prompting פירושו להראות למודל כמה דוגמאות פתורות של משימה, כל אחת קלט לצד התשובה שאתם רוצים, לפני שנותנים לו את הקלט האמיתי. המודל קורא את הדפוס וממשיך אותו. דוגמאות הן הדרך המהירה ביותר לקבע דברים שקשה לומר במילים: איפה עובר הגבול בין שתי קטגוריות, הצורה המדויקת של הפלט או הקול שבו הצוות שלכם כותב.

איך few-shot prompting עובד

Brown et al. 2020, "Language Models are Few-Shot Learners", הראו ש-GPT-3 יכול לקלוט משימה חדשה מקומץ הדגמות שהוצבו בפרומפט, בלי אימון מחדש. זה נקרא in-context learning: שום דבר במודל לא משתנה, והדוגמאות משפיעות רק על התשובה לפרומפט הזה. בפעם הבאה הדוגמאות צריכות להיות שם שוב.

השם נגזר ממספר הדוגמאות. לפרומפט zero-shot אין אף אחת, לפרומפט one-shot יש אחת, ולפרומפט few-shot יש כמה, בדרך כלל בין שתיים לקומץ.

Zero-shot מול few-shot, זה לצד זה

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

סווג את פניית התמיכה כ-bug, billing, account או feature_request. פנייה: איפסתי את הסיסמה אבל החדשה לא עובדת, כל הזמן כתוב פרטי התחברות שגויים.
Try it
Example replyReplies vary between models and runs.

קטגוריה: bug

המשתמש איפס את הסיסמה, אבל הסיסמה החדשה נדחית בהתחברות. זה מצביע על בעיה בתהליך איפוס הסיסמה, כך שסביר להניח שמדובר בבאג במערכת האימות.

הדוגמאות שינו שני דברים. הראשון הוא הפורמט: התשובה ב-zero-shot הוסיפה כותרת מודגשת והסבר, ואילו התשובה ב-few-shot התאימה את עצמה לדוגמאות ונתנה מילה אחת, שסקריפט יכול לקרוא ישירות. השני הוא ההחלטה. "Bug" היא קריאה סבירה של הפנייה, ורוב האנשים היו בוחרים בה. אבל הצוות הזה מתייק בעיות התחברות תחת account, והדוגמה השלישית אומרת את זה בלי מילת הסבר אחת. אף הוראה לא הזכירה את הכלל הזה; הדוגמאות נשאו אותו.

כמה דוגמאות להשתמש

התחילו עם שתיים עד חמש. זה מספיק לרוב משימות הפורמט והסיווג, וזה שומר על פרומפט קצר.

  • דוגמה אחת מראה פורמט, אבל המודל נוטה להעתיק אותה מקרוב מדי. אם הדוגמה היחידה היא סיכום של 30 מילים על שינוי מחירים, הסיכום הבא עלול לצאת באורך 30 מילים ולהתמקד באופן מוזר בכסף.
  • שתיים או שלוש דוגמאות שונות מאפשרות למודל לראות מה משותף להן (הדפוס) ומה משתנה (הפרטים).
  • בסיווג, כללו לפחות דוגמה אחת לכל תווית, ואז הוסיפו את המקרים הגבוליים שהשתבשו בלי דוגמאות.
  • מעבר לקומץ, השיפור בדרך כלל מצטמצם בזמן שכל בקשה מתארכת, מה שעולה בטוקנים ובזמן. אם אתם צריכים עשרות דוגמאות כדי שזה יצליח, ייתכן שהמשימה צריכה הוראה ברורה יותר או גישה אחרת לגמרי.

איך לבחור דוגמאות טובות

המודל לומד מכל מה שמשותף לדוגמאות שלכם, לא רק מהדבר שהתכוונתם ללמד.

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

לשמור על פורמט זהה

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

בדוגמאות ארוכות יותר, עטפו כל אחת בסימונים ברורים כמו תגיות <example> כדי שהמודל יוכל להבחין איפה אחת נגמרת והבאה מתחילה; ראו מפרידים ותגיות XML. ב-API אפשר גם לספק דוגמאות כתורות קודמים בשיחה: הודעת משתמש שמכילה את קלט הדוגמה, ואז הודעת עוזר שמכילה את התשובה, וחוזר חלילה לכל דוגמה.

פרומפטים few-shot הופכים לתבניות פרומפט טובות לשימוש חוזר: ההוראה והדוגמאות נשארות קבועות ורק הקלט משתנה. הבלוק למטה משכתב הודעת commit בסגנון של צוות. הקלידו הודעה משלכם בשדה וכבו את חלק הדוגמאות כדי לראות כמה מהסגנון הן נושאות.

הודעות commit בסגנון הבית
Fill in
Parts
שכתב את הודעת ה-commit בסגנון של הצוות שלנו. ענה רק עם ההודעה המשוכתבת.
לפני: הוספתי את הקטע של ייצוא csv לדף הדוחות אחרי: feat(reports): הוספת ייצוא CSV לפני: העליתי את lodash בגלל אזהרת האבטחה אחרי: chore(deps): עדכון lodash לתיקון התראת אבטחה לפני: תוקנה קריסה כשהעגלה ריקה!! אחרי: fix(cart): מניעת קריסה כשהעגלה ריקה לפני: שגיאת כתיב ב-readme אחרי: docs(readme): תיקון שגיאת כתיב
לפני: גרמתי לתיבת החיפוש להתעלם מאותיות גדולות וקטנות אחרי:
Try it
Example replyReplies vary between models and runs.

feat(search): תיבת חיפוש שאינה רגישה לאותיות גדולות וקטנות

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

דוגמאות few-shot יכולות להדגים גם נימוק, לא רק תשובות. דוגמאות פתורות שמראות את השלבים שלהן הן הדרך שבה chain of thought prompting הוצג לראשונה. עם מודלים שחושבים בפנים לפני שהם עונים, הגבילו את הדוגמאות לקלטים, תשובות ופורמט: שלבי נימוק מתוסרטים עלולים להסיט אותם מדרך טובה יותר, וחלק מהספקים ממליצים לנסות קודם zero-shot עם המודלים האלה.

שאלות נפוצות

מה זה few-shot prompting?

Few-shot prompting הוא הכללה של כמה דוגמאות של משימה בפרומפט, כל אחת קלט לצד הפלט הנכון, לפני הקלט האמיתי. המודל ממשיך את הדפוס שהדוגמאות קובעות. זה שימושי במיוחד לקטגוריות מותאמות, פורמטים לא שגרתיים וסגנונות בית שקל יותר להראות מאשר לתאר.

כמה דוגמאות צריכות להיות בפרומפט few-shot?

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

מה זה one-shot prompting?

One-shot prompting נותן למודל דוגמה אחת בדיוק. זה מספיק כדי להראות פורמט, אבל המודל נוטה להעתיק את הדוגמה היחידה הזו מקרוב מדי, כולל האורך, הניסוח ואפילו הנושא שלה. דוגמה שנייה ושונה מראה למודל אילו תכונות הן הדפוס ואילו הן מקריות.

האם המודל לומד מהדוגמאות שלי?

רק לבקשה הנוכחית. הדוגמאות מעצבות את התשובה בכך שהן נמצאות בהקשר; המשקלים של המודל לא משתנים, ושום דבר לא נזכר בשיחה הבאה. זה נקרא in-context learning (למידה בהקשר), ובגלל זה פרומפט few-shot צריך לשאת את הדוגמאות שלו בכל פעם שמשתמשים בו.

האם דוגמאות גרועות יכולות להחמיר את הפלט?

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

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל