Menu

Zero-Shot Prompting: דוגמאות ומתי זה עובד

Zero-shot prompting פירושו לבקש ממודל לבצע משימה מהוראות בלבד, בלי דוגמאות של התשובה. כך רוב האנשים משתמשים ב-ChatGPT, ב-Claude וב-Gemini, וזה עובד היטב כשהמשימה נפוצה וההוראה מדויקת.

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

Zero-shot prompting פירושו לבקש ממודל לבצע משימה מהוראה בלבד, בלי להראות לו אף דוגמה של התשובה שאתם רוצים. "תרגם את הפסקה הזו לספרדית" ו-"סכם את המייל הזה בשני משפטים" הם פרומפטים zero-shot. זו הדרך הרגילה שבה אנשים משתמשים במודלי צ'אט, ובמשימות נפוצות זה בדרך כלל כל מה שצריך.

מה המשמעות של zero-shot

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

מאז, מודלי צ'אט אומנו בכבדות על מעקב אחרי הוראות, ובגלל זה בקשה פשוטה עובדת היום כל כך טוב. פרומפט zero-shot הוא בדיוק המצב שעליו הם אומנו: מישהו מתאר עבודה במילים ומצפה שהיא תיעשה.

Zero-shot לא אומר אפס הקשר. פרומפט zero-shot טוב עדיין מציין את הקהל, מדביק את הקלט ומתאר את הפורמט ואת הגבולות. הדבר היחיד שהוא משמיט הוא דוגמה גמורה של הפלט.

פרומפט zero-shot שנעשה היטב

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

משימות לביצוע מסיכום פגישה
Parts
חלץ את המשימות לביצוע מתוך סיכום הפגישה הזה.
הרשימה נכנסת למערכת מעקב המשימות של הצוות שלנו, ולכן לכל פריט צריך להיות אחראי אחד בדיוק.
שורה אחת לכל פריט: האחראי, נקודתיים, המשימה שמתחילה בפועל, ואחר כך המועד בסוגריים אם הסיכום מציין אחד.
כלול רק עבודה שמישהו הסכים לעשות. דלג על דיונים ועל רעיונות שאף אחד לא לקח על עצמו. אם למשימה אין אחראי, כתוב "לא משויך" בתור האחראי.
סנכרון ספרינט, יום שלישי פרייה תתקן את ה-timeout בהתחברות לפני שישי. דיברנו על מעבר לספק CI חדש, אין החלטה. תום יכתוב את הערות הגרסה ל-2.4. מישהו צריך לעדכן את מסמך הקליטה. לנה: אני אעבור על ההערות של תום עד חמישי.
Try it
Example replyReplies vary between models and runs.

פרייה: לתקן את ה-timeout בהתחברות (לפני שישי) תום: לכתוב את הערות הגרסה ל-2.4 לא משויך: לעדכן את מסמך הקליטה לנה: לעבור על הערות הגרסה של תום (עד חמישי)

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

מתי zero-shot מספיק

Zero-shot עובד כשהמודל יכול להסיק הכול מהמילים שלכם:

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

מתי להוסיף דוגמאות במקום

יש דברים שקשה לנסח במילים, ושם פרומפטים zero-shot מתחילים לפספס:

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

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

Zero-shot chain of thought

Kojima et al. 2022, "Large Language Models are Zero-Shot Reasoners", מצאו שהוספת משפט אחד, "Let's think step by step" ("בואו נחשוב שלב אחר שלב"), שיפרה באופן ניכר את הביצועים של מודלים גדולים בבעיות חשבון, בעיות סימבוליות ובעיות לוגיקה, בלי דוגמאות בכלל. הביטוי גורם למודל לכתוב שלבי ביניים לפני התשובה, וכל שלב שהוא כותב הופך להקשר של השלב הבא. השיטה שלהם השתמשה בשתי קריאות: הראשונה הפיקה את ההיסק, והשנייה ביקשה את התשובה הסופית.

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

רכבת אמורה לצאת ב-9:40. היא יוצאת באיחור של 25 דקות. הנסיעה נמשכת בדרך כלל שעתיים ו-35 דקות, אבל הרכבת מדביקה 10 דקות בדרך. באיזו שעה היא מגיעה? ענה עם השעה בלבד.
Try it
Example replyReplies vary between models and runs.

12:40

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

מודלים שחושבים באופן פנימי לפני שהם עונים כבר עושים את העבודה הזו בלי שמבקשים, ולכן "Let's think step by step" מוסיף להם מעט מלבד תשובה ארוכה יותר. Chain of thought prompting מכסה את הטכניקה לעומק, כולל גרסת ה-few-shot.

Zero-shot מול few-shot במבט אחד

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

שאלות נפוצות

מה זה zero-shot prompting?

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

מה ההבדל בין zero-shot ל-few-shot prompting?

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

למה זה נקרא zero-shot?

בלמידת מכונה, "shot" הוא דוגמה פתורה. המאמר של Brown et al. על GPT-3 מ-2020, "Language Models are Few-Shot Learners", בדק את המודל עם אפס, אחת או כמה הדגמות של משימה בפרומפט, וזה הפך את השמות לסטנדרט בעולם הפרומפטים: zero-shot, one-shot ו-few-shot.

מתי zero-shot prompting לא עובד?

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

מה זה zero-shot chain of thought?

זה פרומפט zero-shot שמבקש מהמודל לחשוב לפני שהוא עונה, ובמפורסם ביותר על ידי הוספת "Let's think step by step" ("בואו נחשוב שלב אחר שלב"). Kojima et al. הראו ב-2022 שהמשפט האחד הזה, בלי דוגמאות, שיפר את התוצאות של מודלים גדולים בבעיות חשבון ולוגיקה.

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

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

להתחיל