תחשבו על המודל כמו עובד חדש ומוכשר ביום הראשון שלו. הוא חכם, אבל הוא לא מכיר את העסק, את הלקוחות ואת מה שקרה בישיבה של אתמול. כל מה שלא סיפרתם לו, הוא מנחש.
פרומפטים שעובדים: מה משנה תשובה של ChatGPT או Claude
רוב הפרומפטים לא נכשלים בגלל ניסוח. הם נכשלים כי המידע שהיה צריך להיות בהם נשאר אצלכם בראש.
המדריך הזה מבוסס על תיעוד כתיבת הפרומפטים של Anthropic ו-OpenAI, ועל מה שראיתי עובד אצל אנשים שמשתמשים בכלים האלה כל יום. הוא מיועד למי שמקבל תשובות בינוניות ורוצה להבין למה, למי שכבר משתמש ורוצה לשלוט בתוצאה, ולמי שבונה על המודלים האלה מוצר.
להתחיל לקרוא ↓למה התשובה שקיבלתם בינונית
המודל לא יודע מה אתם יודעים. כשכותבים לו ׳תכתוב מייל ללקוח׳, הוא משלים לבד את כל מה שלא נאמר: מי הלקוח, איזה טון, מה המטרה. יוצא משהו סביר, ולא משהו שלכם.
זה הפער שרוב האנשים נתקלים בו בשבוע הראשון. הפרומפט נראה ברור, התשובה נראית מקצועית, ובכל זאת צריך לשכתב חצי. הבעיה כמעט אף פעם לא בניסוח. היא במידע שנשאר אצלכם בראש.
התיעוד של Anthropic פותח את פרק כתיבת הפרומפטים בכלל אחד: תהיו ברורים וישירים. ההמלצה שלהם היא לבדוק את הפרומפט על עמית שלא מכיר את המשימה. אם העמית לא יבין מה לעשות, גם המודל לא יבין.
המודל מייצר את ההמשך הסביר ביותר לטקסט שקיבל. פרומפט דל משאיר לו מרחב ניחוש רחב, ולכן התשובה יוצאת גנרית. פרומפט עם הקשר מצמצם את המרחב הזה, והתשובה מתכנסת למה שרציתם.
למודל אין זיכרון על העסק שלכם מעבר לחלון ההקשר של השיחה הנוכחית. מה שלא נמצא בהקשר, לא קיים מבחינתו. גם Projects ו-Custom Instructions עובדים בדיוק כך: הם מזריקים טקסט להקשר לפני הבקשה שלכם.
הקשר לפני משימה
לפני הבקשה, שלושה משפטים: מי אתם, למי זה מיועד, ומה התוצאה צריכה לעשות. השלושה האלה משפרים את התשובה יותר מכל ניסוח מתוחכם.
השוו שני פרומפטים. הראשון: ׳תכתוב מייל תזכורת על תשלום׳. השני: ׳אני מנהל משרד רואי חשבון קטן. הלקוח הוא בעל עסק ותיק שבדרך כלל משלם בזמן, והפעם איחר בשבועיים. אני רוצה תזכורת ידידותית שלא תפגע בקשר, עם תאריך ברור לתשלום.׳ אותו מודל, אותה בקשה בבסיס, תוצאה אחרת לגמרי.
ההקשר לא חייב להיות ארוך. הוא חייב להיות רלוונטי. מה שמשנה את התשובה הוא מידע שהמודל לא היה יכול לנחש. תיאור כללי של החברה לא עוזר, ולפעמים מבלבל.
- מי אתם ומה התפקיד שלכם בסיטואציה
- למי התוצר מיועד ומה הוא כבר יודע
- מה אמור לקרות אחרי שהתוצר נקרא
- מה כבר ניסיתם ולמה זה לא עבד
- אילוצים: אורך, טון, מילים שאסור להשתמש בהן
אני [השלם את המידע כאן: תפקיד ותחום]. אני צריך [השלם את המידע כאן: סוג התוצר] עבור [השלם את המידע כאן: מי הקהל ומה הוא כבר יודע]. המטרה של התוצר: [השלם את המידע כאן: מה אמור לקרות אחרי הקריאה]. הקשר שחשוב לדעת: [השלם את המידע כאן: רקע, מה קרה עד עכשיו, מה רגיש]. אילוצים: אורך של עד [השלם את המידע כאן] מילים, טון [השלם את המידע כאן], בלי [השלם את המידע כאן: מילים או נושאים להימנע מהם]. לפני שאתה כותב, שאל אותי עד שלוש שאלות אם חסר לך מידע קריטי.
דוגמה אחת שווה עשר הנחיות
אם יש לכם דוגמה למה שאתם רוצים, תדביקו אותה. המודל לומד מדוגמה טוב יותר מאשר מתיאור. Anthropic קוראים לזה multishot prompting ומדרגים אותו כאחת הטכניקות היעילות ביותר.
מייל שכתבתם בעבר וקיבל תגובה טובה. הצעת מחיר שסגרה עסקה. סיכום פגישה שכולם הבינו. כל אחד מהם הוא דוגמה שמלמדת את המודל את הטון, המבנה והאורך שאתם רוצים, בלי שתצטרכו לתאר אותם במילים.
שתיים או שלוש דוגמאות עובדות טוב יותר מאחת, כי המודל מזהה מה משותף ביניהן ומה משתנה. תסמנו אותן בבירור, למשל בתוך תגיות <example> ו-</example>, כדי שהמודל לא יתבלבל בין הדוגמה לבין המשימה.
תפתחו את התיקייה של המיילים שנשלחו. תמצאו אחד שאתם גאים בו. תדביקו אותו לפני הבקשה ותכתבו: ׳תכתוב באותו סגנון׳.
תבחרו דוגמאות שמכסות מקרים שונים: אחת רשמית, אחת קלילה. ככה המודל מבין את הטווח במקום להיתקע על סגנון אחד.
ההמלצה בתיעוד של Anthropic היא שלוש עד חמש דוגמאות, עטופות בתגיות, עם מגוון שמכסה מקרי קצה. דוגמאות לא עקביות פוגעות יותר משהן עוזרות, כי המודל מנסה להסביר לעצמו גם את ההבדלים שלא התכוונתם אליהם.
תגידו מראש איך התשובה צריכה להיראות
טבלה או רשימה, כמה מילים, באיזו שפה, מה לכלול ומה להשמיט. כשלא מגדירים פורמט, המודל בוחר בשבילכם, ובדרך כלל בוחר יותר מדי.
רוב הזמן שמתבזבז על עריכת תשובות של AI הולך על מחיקה. המודל הוסיף פתיח, הוסיף סיכום, הוסיף שלוש נקודות שלא ביקשתם. כל זה נעלם כשאומרים לו מראש מה המבנה.
OpenAI מנסחים את זה בתיעוד שלהם כהנחיה לציין את הפורמט הרצוי במפורש, ואפילו להראות אותו. הטבלה הבאה מראה איך בקשה רגילה נראית אחרי שמוסיפים לה פורמט.
| מה ביקשתם | מה כדאי לבקש במקום |
|---|---|
| סכם את המסמך | סכם את המסמך בחמש נקודות, כל נקודה עד 20 מילים, בלי פתיח ובלי סיכום |
| תכתוב פוסט | תכתוב פוסט לפייסבוק של עד 120 מילים, פסקה אחת, בלי האשטגים, שמסתיים בשאלה |
| תשווה בין האפשרויות | תשווה בטבלה עם העמודות: עלות חודשית, זמן הטמעה, למי מתאים, סיכון עיקרי |
| תסביר לי מה זה | תסביר בשלוש רמות: משפט אחד לילד בן עשר, פסקה למנהל, ופסקה טכנית |
מתי הגדרת תפקיד עוזרת, ומתי היא קישוט
׳אתה מומחה שיווק׳ לבד לא עושה הרבה. הגדרת תפקיד עובדת כשמצרפים אליה הקשר, קהל ואילוצים. בלעדיהם זו סיסמה שהמודל מהנהן לה וממשיך.
יש סיבה שהטריק הזה התפשט. במקרים מסוימים הוא עובד, בעיקר כשהתפקיד מביא איתו אוצר מילים ושיקול דעת שהמודל אחרת לא היה מפעיל. ׳אתה עורך דין שקורא חוזה בשם השוכר׳ משנה את מה שהמודל מחפש. ׳אתה מומחה׳ סתם, פחות.
ב-Claude וב-ChatGPT יש מקום ייעודי להגדרות קבועות כאלה: system prompt, Projects או Custom Instructions. שם שמים מה שנכון לכל השיחות: מי אתם, איך אתם כותבים, מה אסור. בפרומפט עצמו שמים מה שנכון למשימה הזאת.
אם אתם חוזרים על אותה הקדמה בכל שיחה, יש לזה פתרון: Custom Instructions ב-ChatGPT או Project ב-Claude. כותבים פעם אחת, וזה נטען אוטומטית.
תפקיד טוב מגדיר גם מה אסור: ׳אל תמציא נתונים, אם אתה לא בטוח תגיד׳. זה משפיע על התשובה יותר מתואר מפוצץ.
system prompt הוא המקום להגדרות שצריכות לשרוד לאורך שיחה ארוכה. Anthropic ממליצים להשאיר שם תפקיד והנחיות קבועות, ולשים את המשימה והנתונים בהודעת המשתמש. הפרדה כזאת גם מקלה על בדיקות: משנים משתנה אחד בכל פעם.
הפרומפט הראשון הוא טיוטה
קיבלתם תשובה לא טובה? אל תפתחו שיחה חדשה ואל תנסחו הכל מהתחלה. תגידו למודל מה בדיוק לא עבד ומה לשנות. השיחה היא כלי העבודה, והפרומפט הבודד הוא רק הפתיחה שלה.
׳זה ארוך מדי, תקצר לחצי׳. ׳הטון רשמי מדי, תכתוב כמו שמדברים׳. ׳הנקודה השלישית לא נכונה, הלקוח כבר שילם על זה׳. כל תיקון כזה לוקח עשר שניות ומקדם אתכם. ניסוח מחדש מאפס לוקח חמש דקות ומחזיר אתכם להתחלה.
- קראו את התשובה ותסמנו לעצמכם מה בסדר ומה לא
- תגידו למודל רק מה לשנות, ותשאירו את מה שעבד
- אחרי שתיים או שלוש איטרציות, תעתיקו את הבקשה המדויקת שהביאה לתוצאה הטובה
- תשמרו אותה. זה הפרומפט שלכם למשימה הזאת מעכשיו
התבנית שאני משתמש בה
חמישה חלקים, תמיד באותו סדר: הקשר, משימה, דוגמה, פורמט, מגבלות. לא צריך את כולם בכל פעם. צריך לדעת מה חסר.
זו רשימת בדיקה, לא נוסח קסם. כשתשובה יוצאת גרועה, אני עובר על החמישה ובודק איזה מהם דילגתי. כמעט תמיד זה ההקשר או הפורמט.
הקשר: [השלם את המידע כאן: מי אתם, מה המצב, למי זה מיועד] משימה: [השלם את המידע כאן: מה בדיוק לעשות, פועל אחד ברור] דוגמה: [השלם את המידע כאן: הדביקו דוגמה למה שאתם רוצים, או כתבו ׳אין׳] פורמט: [השלם את המידע כאן: מבנה, אורך, שפה, מה לכלול ומה להשמיט] מגבלות: [השלם את המידע כאן: מה אסור, מה לא לנחש, מתי לשאול אותי במקום להמציא]
מה עושים עם זה מחר בבוקר
קחו פרומפט אחד שאתם משתמשים בו הרבה. תוסיפו לו רק הקשר, שלושה משפטים. תשוו את שתי התשובות זו לצד זו. ברוב המקרים זה ההבדל בין ׳נחמד׳ ל׳שמיש׳.
- תמצאו את הבקשה הכי חוזרת שלכם, באיזה מודל שאתם עובדים איתו
- תכתבו אותה מחדש לפי חמשת החלקים, גם אם חלק נשארים ריקים
- תשמרו את הגרסה שעבדה במקום שתמצאו אותו: פתק, מסמך, או Project
תרגיל אחד, עשר דקות. אותה בקשה פעמיים: פעם כמו שאתם רגילים, פעם עם שלושה משפטי הקשר לפניה. ההבדל יגיד לכם כל מה שצריך.
תבנו לעצמכם שלושה או ארבעה פרומפטים קבועים למשימות שחוזרות: סיכום פגישה, מענה ללקוח, ניסוח הצעה. כל אחד עם הקשר ופורמט מוכנים. זה חוסך את חמש הדקות הראשונות של כל שיחה.
אם אתם בונים מוצר על המודל, תפרידו בין system prompt קבוע להודעות משתמש משתנות, ותשמרו סט קטן של מקרי בדיקה עם תשובות צפויות. כל שינוי בפרומפט מריצים על הסט לפני שמעלים. ככה שינוי שמשפר מקרה אחד לא שובר עשרה אחרים.
שאלות שאני שומע על זה
צריך לכתוב פרומפטים באנגלית?
לא. ChatGPT ו-Claude מבינים עברית טוב לרוב המשימות היומיומיות. בתחומים טכניים עם מונחים באנגלית לפעמים כדאי לנסות באנגלית ולהשוות.
פרומפט ארוך יותר תמיד עובד טוב יותר?
לא. פרומפט עם הקשר רלוונטי עובד טוב יותר. אורך לבד לא עוזר, ותיאורים כלליים של החברה לפעמים מבלבלים. תשאלו על כל משפט: המודל יכול לנחש את זה לבד?
מה ההבדל בין system prompt לפרומפט רגיל?
system prompt הוא הגדרה קבועה שנטענת לפני כל שיחה: מי אתם, איך לכתוב, מה אסור. הפרומפט הרגיל הוא המשימה הספציפית של עכשיו. ב-ChatGPT זה Custom Instructions, ב-Claude זה Project.
