Prompt engineering (הנדסת פרומפטים) היא העבודה של כתיבה, בדיקה ושיפור של ההוראות שנותנים למודל AI, כדי שיפיק את הפלט שאתם צריכים באופן אמין. היא כוללת את מה ששמים בפרומפט (המשימה, ההקשר, דוגמאות, הקלט) ואת האופן שבו מסדרים אותו (סדר, פורמט, מפרידים). המונח נשמע טכני, אבל רובו כתיבה קפדנית ועוד בדיקה של התוצאות.
העמוד הזה הוא האינדקס של מדריך ה-prompt engineering של Coddy. הוא מסביר למה השיטה עובדת, ממפה את הטכניקות המרכזיות לעמודים שמלמדים אותן, ומראה את ההבדל בין פרומפט מזדמן לפרומפט מהונדס.
למה prompt engineering עובד
מודל שפה מייצר טקסט על ידי חיזוי של מה שבא אחר כך, פיסה קטנה אחת בכל פעם, על סמך כל מה שנמצא מולו. אין לו גישה לכוונות שלכם, לפרויקט שלכם או לצ'אטים הקודמים שלכם, אלא אם הטקסט הזה נמצא בקלט שלו. לכן הפרומפט הוא לא בקשה ממוח שכבר מבין אתכם; הוא כל הסיטואציה שהמודל מגיב אליה.
לזה יש השלכה ישירה. כל שאלה שהפרומפט משאיר פתוחה, המודל נוטה להכריע בבחירה הטיפוסית ביותר: השפה הנפוצה ביותר, האורך הנפוץ ביותר, הקהל הנפוץ ביותר. לפעמים הבחירה הטיפוסית היא מה שרציתם. כשלא, התיקון הוא לסגור את השאלה בפרומפט. פרומפט טוב מצמצם את טווח התשובות הסבירות עד שרוב מה שנשאר שימושי.
עוד שתי עובדות מעצבות את המלאכה. התשובות נדגמות, ולכן אותו פרומפט יכול להפיק תשובות שונות בהרצות שונות; פרומפט טוב רק אם הוא עובד ברוב הפעמים, לא פעם אחת. והמודל מתייחס לכל טקסט בפרומפט כבעל משמעות אפשרית, ולכן מייל מודבק או משפט תועה עלולים להיקרא כהוראה, אלא אם מסמנים אותם בבירור כחומר.
פרומפט מזדמן מול פרומפט מהונדס
שתי הלשוניות מבקשות את אותו דבר: למיין ביקורות של לקוחות לחיוביות ולשליליות. השוו מה כל אחת מקבלת בחזרה.
הנה פירוט:
- מעורבת. המשתמש אוהב את המהירות אבל מתוסכל מהניתוק מהחשבון.
- חיובית. האפליקציה עונה על הצורך שלו במעקב אחרי ריצות.
- שלילית. המשתמש לא מרוצה מכך שהתמיכה לא הגיבה.
בסך הכול, המשוב מעורב, עם ביקורת חיובית אחת, שלילית אחת ומעורבת אחת.
התשובה המזדמנת היא תשובה הגיונית שאדם יכול לקרוא, אבל תוכנה לא יכולה להשתמש בה: התוויות מעורבבות בהסברים, הופיעה קטגוריה שלישית שהשאלה לא הציעה, ונוסף סיכום בסוף. הפרומפט המהונדס מגדיר כל תווית, מקבע את צורת הפלט בעזרת דוגמה, ועוטף את הביקורות בתגיות כך שפחות סביר שיתבלבלו עם הוראות. כשמריצים אותו על אלף ביקורות, הוא נותן פלט שתוכנה יכולה לפענח בעקביות רבה הרבה יותר, וכשצריך הבטחה, יכולות ה-structured output של ה-API ושלב ולידציה בקוד שלכם סוגרים את שאר הפער.
הטכניקות המרכזיות
כל טכניקה שלמטה סוגרת סוג אחר של פער בין מה שהתכוונתם לבין מה שהמודל קיבל. רוב הפרומפטים האמיתיים משלבים כמה.
| טכניקה | מה היא עושה | מתי לפנות אליה |
|---|---|---|
| Zero-shot prompting | נותנת הוראה בלי דוגמאות | המשימה נפוצה ומתוארת בבירור |
| Few-shot prompting | מראה כמה דוגמאות של קלט ופלט | קל יותר להראות את הפורמט או את השיפוט מאשר לתאר אותם |
| Chain-of-thought prompting | מבקשת את ההיסק לפני התשובה | לבעיה יש כמה שלבים, כמו במתמטיקה או בלוגיקה |
| Role prompting | קובעת באיזה קול ובאילו סטנדרטים להשתמש | הקהל והרמה חשובים |
| Structured output | מקבעת את התשובה ל-JSON, לטבלה או לתבנית | תוכנה או גיליון אלקטרוני קוראים את התוצאה |
| מפרידים ותגיות XML | מפרידה בין הוראות לחומר מודבק | הפרומפט מכיל מסמכים, קוד או טקסט של משתמשים |
| תבניות פרומפט | הופכת פרומפט טוב לפרומפט עם שדות ריקים | אתם חוזרים על אותו סוג של בקשה |
| Prompt chaining | מפצלת עבודה לשלבים שמזינים זה את זה | פרומפט אחד מנסה לעשות יותר מדי |
| Self-consistency | דוגמת כמה תשובות ולוקחת את הרוב | נתיב היסק יחיד לא אמין |
| Tree of thought | חוקרת ומדרגת כמה קווי היסק | הבעיה דורשת תכנון או חיפוש |
| ReAct | מחליפה בין היסק לקריאות לכלים | המודל צריך לחפש מידע או לבצע פעולות |
| Meta prompting | נותנת למודל לכתוב או לשפר פרומפט | נתקעתם על איך לנסח פרומפט |
| Context engineering | מתכננת את כל מה שהמודל רואה, לא רק את ההוראה | אתם בונים אפליקציה או סוכן סביב מודל |
אם אתם חדשים, התחילו עם החלקים של פרומפט בודד באיך לכתוב פרומפט, ואחר כך few-shot prompting ו-structured output. שלושת אלה מכסים את רוב הבעיות היומיומיות.
פרומפט שנבנה בשביל תוכנה
פרומפטים שנכתבים לתוך תוכנה רצים אלפי פעמים על קלטים שאף אחד עוד לא ראה, ולכן הם מפרטים יותר ממה שהודעת צ'אט הייתה מפרטת. הפרומפט שלמטה כותב הודעות commit מתוך diff של קוד. כבו חלקים כדי לראות מפני מה כל אחד מגן: בלי הדוגמאות הסגנון נסחף, ובלי המגבלות המודל עלול להשתמש בסוגים שהצוות שלכם לא משתמש בהם, כמו perf או style.
function validatePassword(password) {
- if (password.length > 8) {
+ if (password.length >= 8) {
return null;
}
return 'Password must be at least 8 characters';
}fix(auth): קבלת סיסמאות של 8 תווים בדיוק
- הבדיקה השתמשה בתנאי > 8, ולכן סיסמה של 8 תווים נדחתה
- הכלל תואם עכשיו את הודעת השגיאה, שאומרת "at least 8"
איך לומדים prompt engineering
לומדים את זה על ידי הרצת פרומפטים ובחינה קפדנית של מה שחוזר. דרך מעשית:
- למדו את החלקים של פרומפט. משימה, הקשר, קלט, פורמט ומגבלות. רוב הכישלונות נובעים מכך שאחד מהם חסר.
- בחרו משימה אמיתית שאתם חוזרים עליה, כמו סיכום פניות, הסבר שגיאות או ניסוח מיילים, וכתבו לה פרומפט.
- אספו חמישה עד עשרה קלטים לבדיקה, כולל מסובכים: קלט ריק, קלט ארוך מאוד, קלט בשפה אחרת.
- שנו דבר אחד בכל פעם והריצו שוב את כל הקלטים. אם תשנו שלושה דברים והפלט ישתפר, לא תדעו איזה שינוי עזר. שיפור פרומפטים באיטרציות מכסה את הלולאה הזו בפירוט.
- הוסיפו טכניקות כשכישלון מסוים דורש אותן. דוגמאות כשהפורמט נסחף, היסק שלב אחר שלב כשתשובות רב שלביות שגויות, מפרידים כשטקסט מודבק דולף לתוך ההוראות.
ספקי המודלים הגדולים מפרסמים גם מדריכי פרומפטים למודלים שלהם, ושווה לקרוא אותם, כי כל אחד מתאר למה משפחת המודלים הזו מגיבה הכי טוב.
האם prompt engineering הוא מקצוע?
חלק מהחברות גייסו לתפקיד "prompt engineer", במיוחד כשמודלי צ'אט הפכו לראשונה לזמינים לכולם. לעתים קרובות יותר המיומנות היא חלק מעבודה אחרת. מפתחים כותבים פרומפטים ליכולות ה-AI שהם בונים, צוותי תמיכה כותבים אותם לעוזרים שעונים ללקוחות, ואנליסטים וכותבים משתמשים בהם כל יום.
בצוותים שבונים מוצרי AI, העבודה התרחבה. הבחירה מה נכנס לקלט של המודל (מסמכים שאוחזרו, תוצאות של כלים, היסטוריית שיחה, זיכרון) חשובה כמו הניסוח של ההוראה, והעבודה הרחבה הזו נקראת לעתים קרובות context engineering. המדידה אם פרומפט עובד על פני קלטים רבים, שנקראת בדרך כלל evaluation (הערכה), היא החצי השני.
מה משתנה עם מודלים חדשים יותר
Prompt engineering בימיו הראשונים נשען על טריקים: ביטויי קסם, פרסונות מורכבות, חזרה על הוראה כמה פעמים. מודלים עכשוויים עוקבים אחרי הוראות פשוטות הרבה יותר טוב, ומודלי היסק כבר עובדים על בעיה באופן פנימי לפני שהם עונים, ולכן לבקש מהם לחשוב שלב אחר שלב מוסיף פחות ממה שהוסיף פעם.
מה שלא השתנה הוא החלק שמעולם לא היה טריק. המודל עדיין לא יכול לדעת מי הקהל שלכם, מה הנתונים שלכם, מה המגבלות שלכם או איך נראית תוצאה טובה, אלא אם אתם אומרים לו. הגדרה ברורה היא המיומנות העמידה, והיא זו שהמדריך הזה מקדיש לה את רוב העמודים שלו.
שאלות נפוצות
מה זה prompt engineering במילים פשוטות?
Prompt engineering הוא לכתוב את ההוראות למודל AI בקפידה מספיקה כדי שייתן לכם את התשובה שאתם צריכים, ואז לבדוק ולכוונן אותן עד שהוא עושה את זה באופן אמין. זה כולל את מה שאומרים למודל (המשימה, ההקשר והדוגמאות) ואת האופן שבו מסדרים את זה (סדר, פורמט ומפרידים).
אפשר ללמוד prompt engineering בלי לתכנת?
כן. מיומנויות הליבה, לנסח משימה בבהירות, לספק הקשר, לתת דוגמאות ולהגדיר את פורמט הפלט, כולן עובדות באפליקציית צ'אט. תכנות נעשה שימושי כשרוצים להריץ פרומפט פעמים רבות, לבדוק אותו מול סט של קלטים, או להזין את הפלט לתוכנה.
כמה זמן לוקח ללמוד prompt engineering?
את הבסיס לומדים באחר צהריים אחד: החלקים של פרומפט טוב וקומץ טכניקות כמו דוגמאות few-shot ו-structured output. להגיע לתוצאות אמינות במשימה אמיתית לוקח יותר זמן, כי זה מגיע מבדיקת הפרומפט על הרבה קלטים ומתיקון המקרים שבהם הוא נכשל.
האם prompt engineering הוא מקצוע אמיתי?
חלק מהחברות גייסו לתפקידים כמו "prompt engineer", אבל לעתים קרובות יותר המיומנות היא חלק מתפקיד אחר: מפתחים שבונים יכולות AI, כותבים, אנליסטים וצוותי תמיכה. בצוותים שבונים מוצרי AI, היא חופפת לעבודת הערכה ולתכנון של כל מה שהמודל רואה, מה שנקרא היום לעתים קרובות context engineering.
האם prompt engineering עדיין שימושי עם מודלי AI חדשים יותר?
מודלים חדשים צריכים פחות טריקים. הם עוקבים טוב יותר אחרי הוראות פשוטות, ומודלי היסק עובדים על בעיות בלי שאומרים להם לחשוב שלב אחר שלב. מה שנשאר שימושי הוא החלק שמעולם לא היה טריק: לנסח את המשימה, לתת למודל את העובדות שהוא לא יכול לדעת, ולהגדיר איך נראית תשובה טובה.