Menu

Prompt Engineering: מה זה ואיך לומדים את זה

Prompt engineering (הנדסת פרומפטים) היא העבודה של כתיבה ובדיקה של ההוראות שנותנים למודל AI כדי שיפיק את הפלט שאתם צריכים. המדריך הזה מסביר למה זה עובד וממפה את כל הטכניקות המרכזיות.

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

Prompt engineering (הנדסת פרומפטים) היא העבודה של כתיבה, בדיקה ושיפור של ההוראות שנותנים למודל AI, כדי שיפיק את הפלט שאתם צריכים באופן אמין. היא כוללת את מה ששמים בפרומפט (המשימה, ההקשר, דוגמאות, הקלט) ואת האופן שבו מסדרים אותו (סדר, פורמט, מפרידים). המונח נשמע טכני, אבל רובו כתיבה קפדנית ועוד בדיקה של התוצאות.

העמוד הזה הוא האינדקס של מדריך ה-prompt engineering של Coddy. הוא מסביר למה השיטה עובדת, ממפה את הטכניקות המרכזיות לעמודים שמלמדים אותן, ומראה את ההבדל בין פרומפט מזדמן לפרומפט מהונדס.

למה prompt engineering עובד

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

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

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

פרומפט מזדמן מול פרומפט מהונדס

שתי הלשוניות מבקשות את אותו דבר: למיין ביקורות של לקוחות לחיוביות ולשליליות. השוו מה כל אחת מקבלת בחזרה.

הביקורות האלה חיוביות או שליליות? 1. האפליקציה מהירה אבל היא ניתקה אותי מהחשבון פעמיים היום. 2. בדיוק מה שהייתי צריך למעקב אחרי הריצות שלי. 3. התמיכה אף פעם לא ענתה למייל שלי.
Try it
Example replyReplies vary between models and runs.

הנה פירוט:

  1. מעורבת. המשתמש אוהב את המהירות אבל מתוסכל מהניתוק מהחשבון.
  2. חיובית. האפליקציה עונה על הצורך שלו במעקב אחרי ריצות.
  3. שלילית. המשתמש לא מרוצה מכך שהתמיכה לא הגיבה.

בסך הכול, המשוב מעורב, עם ביקורת חיובית אחת, שלילית אחת ומעורבת אחת.

התשובה המזדמנת היא תשובה הגיונית שאדם יכול לקרוא, אבל תוכנה לא יכולה להשתמש בה: התוויות מעורבבות בהסברים, הופיעה קטגוריה שלישית שהשאלה לא הציעה, ונוסף סיכום בסוף. הפרומפט המהונדס מגדיר כל תווית, מקבע את צורת הפלט בעזרת דוגמה, ועוטף את הביקורות בתגיות כך שפחות סביר שיתבלבלו עם הוראות. כשמריצים אותו על אלף ביקורות, הוא נותן פלט שתוכנה יכולה לפענח בעקביות רבה הרבה יותר, וכשצריך הבטחה, יכולות ה-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.

הודעת commit מתוך diff
Fill in
Parts
אתה כותב הודעות commit של git לצוות שעובד לפי הפורמט Conventional Commits.
כתוב הודעת commit ל-diff שלמטה.
feat(cart): הוספת בורר כמות לפריטים בעגלה fix(api): החזרת 404 במקום 500 עבור מזהה משתמש לא מוכר
שורה ראשונה: type(scope): סיכום, לכל היותר 60 תווים, בלשון ציווי. אחר כך שורה ריקה ועד שלוש נקודות שמסבירות למה השינוי נעשה.
השתמש רק בסוגים האלה: feat, fix, refactor, docs, test, chore. אם ה-diff מערבב שינויים שלא קשורים זה לזה, אמור זאת במקום לכתוב הודעה.
function validatePassword(password) { - if (password.length > 8) { + if (password.length >= 8) { return null; } return 'Password must be at least 8 characters'; }
Try it
Example replyReplies vary between models and runs.
fix(auth): קבלת סיסמאות של 8 תווים בדיוק

- הבדיקה השתמשה בתנאי > 8, ולכן סיסמה של 8 תווים נדחתה
- הכלל תואם עכשיו את הודעת השגיאה, שאומרת "at least 8"

איך לומדים prompt engineering

לומדים את זה על ידי הרצת פרומפטים ובחינה קפדנית של מה שחוזר. דרך מעשית:

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

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

האם 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 חדשים יותר?

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

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

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

להתחיל