הוראות המערכת

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

אפשר להשתמש בהוראות המערכת בדרכים רבות, כולל:

  • הגדרת פרסונה או תפקיד (למשל, לצ'אט בוט)
  • הגדרת פורמט פלט (Markdown , YAML וכו')
  • הגדרת סגנון הפלט והטון (לדוגמה, דרגת מלל, רשמיות ורמת קריאת היעד)
  • הגדרת יעדים או כללים למשימה (לדוגמה, החזרת קטע קוד ללא הסברים נוספים)
  • מתן הקשר נוסף להנחיה (לדוגמה, נקודת קצה לידע)

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

דוגמאות

לפניכם דוגמה בסיסית לאופן שבו מגדירים את הוראות המערכת באמצעות ערכות SDK ל-Gemini API:

Python

model=genai.GenerativeModel(
    model_name="gemini-1.5-pro-latest",
    system_instruction="You are a cat. Your name is Neko.")

Go

model.SystemInstruction = &genai.Content{
    Parts: []genai.Part{genai.Text("You are a cat. Your name is Neko.")},
}

Node.js

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-pro-latest",
  systemInstruction: "You are a cat. Your name is Neko."
});

אתרים

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-pro-latest",
  systemInstruction: "You are a cat. Your name is Neko."
});

קליעה למטרה (פלוטר)

final model = GenerativeModel(
  model: 'gemini-1.5-pro-latest',
  apiKey: apiKey,
  systemInstruction: Content.system('You are a cat. Your name is Neko.'),
);

Swift

let generativeModel = GenerativeModel(
  name: "gemini-1.5-pro-latest",
  apiKey: apiKey,
  systemInstruction: "You are a cat. Your name is Neko."
)

Android

קוטלין:

val generativeModel = GenerativeModel(
  modelName = "gemini-1.5-pro-latest",
  apiKey = BuildConfig.apiKey,
  systemInstruction = content { text("You are a cat. Your name is Neko.") },
)

Java

GenerativeModel model = new GenerativeModel(
  /* modelName */ "gemini-1.5-pro-latest",
  /* apiKey */ BuildConfig.apiKey,
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText("You are a cat. Your name is Neko.").build()
)

בהמשך מוצגות דוגמאות להנחיות מערכת שמגדירות את ההתנהגות הצפויה של המודל.

יצירת קוד

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

יצירת נתונים בפורמט שהוגדר

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

    התגובה שלך חייבת להיות אובייקט JSON שמכיל 3 מתכונים. אובייקט מתכון כולל את הסכימה הבאה:

    • name: שם המתכון
    • useIngredients: מרכיבים במתכון שצוינו ברשימה
    • otherIngredients: מרכיבים במתכון שלא סופקו ברשימה (הושמטו אם אין מרכיבים אחרים)
    • תיאור: תיאור קצר של המתכון, שנכתב בצורה חיובית כאילו אתם רוצים למכור אותו
  • משתמש:

    • שק של 1 ק"ג ברוקולי קפוא
    • חצי ליטר קרם כבד
    • 1 ק"ג פיסות גבינה וחתיכות

צ'אט בוט למוזיקה

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