Menu

System Prompt: מה זה ודוגמאות להעתקה

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

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

System prompt (פרומפט מערכת) הוא סט הוראות שמודל AI מקבל לפני שהשיחה מתחילה, והוא חל על כל הודעה שבאה אחריו. הוא קובע את התפקיד של המודל, את הקהל שלו, את הכללים שלו ואת פורמט התשובה ברירת המחדל, כך שלא צריך לחזור עליהם בכל הודעה. המשתמש כותב את הפרומפטים; ה-system prompt מעצב את האופן שבו המודל עונה על כולם.

כל אפליקציית צ'אט כבר משתמשת באחד. כשאתם פותחים את ChatGPT, Claude או Gemini, למודל כבר יש הוראות מהחברה שעומדת מאחוריו, וחלון הצ'אט לא מראה לכם אותן. כשמפתחים בונים אפליקציה על גבי מודל, ה-system prompt הוא המקום שבו הם הופכים מודל כללי למורה לתכנות, לעוזר תמיכה או לכותב הודעות commit.

מה system prompt עושה

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

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

System prompt מול הודעת משתמש

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

מבחן שימושי: אם משפט יהיה נכון לכל הודעה בצ'אט, הוא שייך ל-system prompt. אם הוא עוסק בבקשה הספציפית הזו, הוא שייך להודעת המשתמש. "ענה בפחות מ-100 מילים" יכול להיכנס לכל אחד מהם; "סכם את המייל שלמטה" הוא תמיד הודעת משתמש.

איפה קובעים system prompt

ב-API, ה-system prompt הוא קלט נפרד. בספריית ה-Python של OpenAI הוא ההודעה הראשונה ברשימה, עם התפקיד system. התיעוד של OpenAI משתמש גם בשם developer message לאותו סוג של הוראה במודלים חדשים יותר.

from openai import OpenAI

client = OpenAI()
MODEL = "your-model-id"  # e.g. from your provider's model list

response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "system", "content": "You are a patient Python tutor. Give hints, not full solutions."},
        {"role": "user", "content": "Why does my loop stop at 9?"},
    ],
)
print(response.choices[0].message.content)

בספריית ה-Python של Anthropic הוא פרמטר system ברמה העליונה, ורשימת messages מחזיקה רק את השיחה:

import anthropic

client = anthropic.Anthropic()
MODEL = "your-model-id"  # e.g. from your provider's model list

message = client.messages.create(
    model=MODEL,
    max_tokens=500,
    system="You are a patient Python tutor. Give hints, not full solutions.",
    messages=[{"role": "user", "content": "Why does my loop stop at 9?"}],
)
print(message.content[0].text)

ה-API של Gemini מבית Google קורא לו system instruction. השם שונה, הרעיון זהה.

באפליקציות צ'אט, אין לכם גישה לשדה ה-system הגולמי, כי לאפליקציה כבר יש אחד משלה. מה שיש לכם הוא מקום להוסיף הוראות קבועות שהאפליקציה מכניסה בשבילכם. ב-ChatGPT אלה הוראות מותאמות אישית, הוראות פרויקט וההוראות של GPT מותאם. ב-Claude אלה הוראות פרויקט וההעדפות בפרופיל שלכם. ב-Gemini אלה ההוראות של Gem. איך בדיוק כל אפליקציה ממזגת את הטקסט שלכם עם ההוראות שלה לא מתועד במלואו, אבל בפועל הן מתנהגות כמו system prompt שאתם חולקים עם האפליקציה.

מה לשים ב-system prompt

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

מה להשאיר בחוץ

סודות. System prompt הוא לא פרטי. משתמשים יכולים לבקש ממודל לחזור על ההוראות שלו או לגרום לו לעשות זאת בתחבולה, ומודלים לא מסרבים באופן אמין. מפתחות API, סיסמאות וכל דבר שלא הייתם רוצים שיתפרסם לא שייכים לשם. התייחסו ל-system prompt כטקסט שהמשתמש עשוי לקרוא יום אחד, וראו prompt injection כדי להבין איך עוקפים הוראות.

המשימה של הודעה אחת. אם ה-system prompt אומר "סכם את המאמר הזה", להודעה השנייה בצ'אט אין לאן ללכת.

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

ריפוד. ה-system prompt נשלח שוב עם כל בקשה ונספר במסגרת חלון ההקשר של המודל, כך שעל כל פסקה מיותרת משלמים בכל תור.

דוגמאות ל-system prompt

הדוגמה הראשונה היא עוזר מוצר. ה-system prompt קובע היקף, אורך וכלל לשאלות שהוא לא יכול לענות עליהן, ונושא את העובדות שהמודל צריך. עברו בין הלשוניות כדי לשלוח לו הודעות שונות: אותו system prompt מעצב את שלוש התשובות.

System prompt
אתה עוזר העזרה בתוך אפליקציה לניהול תקציב. ענה רק על שאלות על השימוש באפליקציה. כל תשובה צריכה להיות קצרה מ-80 מילים. אם שאלה עוסקת בכל דבר אחר, אמור שאתה יכול לעזור רק עם האפליקציה והצע משהו קשור שאתה יכול לעזור בו. אם העובדות שלמטה לא מכסות שאלה, אמור שאתה לא בטוח והצע לפנות לתמיכה. לעולם אל תמציא שמות של תפריטים או תכונות. עובדות: אפשר לפצל עסקאות: פותחים את העסקה, לוחצים על פיצול, ואז בוחרים את הקטגוריות והסכומים. התקציבים מתאפסים ביום הראשון של כל חודש.
Fill in
איך אני מפצל רכישה אחת בין מצרכים לבין משק הבית?
Try it
Chat apps receive the system prompt as the start of your message, so this tries its wording, not its priority. To test it as standing instructions, put it in the app's custom instructions or the API's system field.
Example replyReplies vary between models and runs.

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

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

Prompt
System prompt
עליי: אני מפתח backend שעובד ב-TypeScript על Node.js. הנח שאני מכיר את הבסיס ודלג על הסברים למתחילים. איך אני רוצה תשובות: קודם קוד, ואחריו לכל היותר שלושה משפטים של הסבר. ציין זאת כשתשובה תלויה בגרסה או בהגדרה מסוימת.
Fill in
איך קוראים קובץ JSON?
Try it
Chat apps receive the system prompt as the start of your message, so this tries its wording, not its priority. To test it as standing instructions, put it in the app's custom instructions or the API's system field.
Example replyReplies vary between models and runs.
import { readFile } from "node:fs/promises";

const config = JSON.parse(await readFile("config.json", "utf8"));

העברת encoding גורמת ל-readFile להחזיר מחרוזת, ש-JSON.parse הופך לאובייקט. await ברמה העליונה עובד רק במודול ES ("type": "module" ב-package.json או קובץ .mts); אחרת עטפו את הקריאה בפונקציה אסינכרונית. הוסיפו try/catch אם הקובץ עלול להיות חסר או פגום.

בלי ה-system prompt, שאלה קצרה כמו "איך קוראים קובץ JSON?" משאירה למודל לנחש את השפה, והתשובה מגיעה לעתים קרובות ב-Python או ב-JavaScript רגיל עם פסקה על מה זה JSON. איתו, התשובה בוחרת את השפה ואת סביבת הריצה הנכונות, מדלגת על הבסיס ועוקבת אחרי הצורה שביקשתם.

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

שאלות נפוצות

מה זה system prompt?

System prompt הוא סט הוראות שניתן למודל AI לפני שהשיחה מתחילה, והוא חל על כל הודעה שבאה אחריו. בדרך כלל הוא קובע את התפקיד, את הקהל, את הכללים ואת פורמט התשובה ברירת המחדל. ב-API הוא שדה system או הודעה נפרדת; באפליקציות צ'אט, הוראות מותאמות אישית והוראות פרויקט משמשות לאותה מטרה.

מה ההבדל בין system prompt לבין user prompt?

ה-system prompt מחזיק הוראות קבועות לכל השיחה, ובדרך כלל נכתב על ידי המפתח או נקבע פעם אחת בהגדרות. ה-user prompt הוא הודעה בודדת שמבקשת דבר אחד. כשהשניים מתנגשים, מודלים מאומנים לתת ל-system prompt משקל רב יותר, אבל זו נטייה ולא הבטחה.

אפשר לקבוע system prompt ב-ChatGPT, ב-Claude או ב-Gemini?

לא את שדה ה-system הגולמי, אבל משהו קרוב אליו. ב-ChatGPT יש הוראות מותאמות אישית, הוראות פרויקט והוראות ל-GPTs מותאמים. ב-Claude יש הוראות פרויקט והעדפות פרופיל. ב-Gemini יש הוראות ל-Gems. האפליקציה משלבת את מה שכתבתם שם עם הוראות המערכת שלה ומחילה אותו על הצ'אטים שלכם.

האם משתמשים יכולים לראות או לחלץ system prompt?

לעתים קרובות, כן. משתמש יכול לבקש מהמודל לחזור על ההוראות שלו או לגרום לו לעשות זאת בתחבולה, ומודלים לא שומרים עליהן בסוד באופן אמין. לעולם אל תשימו סיסמאות, מפתחות API או פרטים עסקיים חסויים ב-system prompt, ואל תסתמכו עליו כגבול אבטחה.

כמה ארוך צריך להיות system prompt?

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

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

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

להתחיל