הוראות המערכת מאפשרות לכם לקבוע את ההתנהגות של מודל על סמך הצרכים הספציפיים שלכם ותרחישי השימוש שלכם.
כשמגדירים הוראה למערכת, מעניקים למודל הקשר נוסף כדי להבין את המשימה, לספק תשובות בהתאמה אישית רבה יותר ולפעול בהתאם להנחיות ספציפיות במהלך כל האינטראקציה של המשתמש עם המודל. אפשר גם לציין התנהגות ברמת המוצר על ידי הגדרת הוראות מערכת, בנפרד מההנחיות שמשתמשי הקצה מספקים.
דוגמה בסיסית
דוגמה בסיסית להגדרת הוראה למערכת באמצעות ערכות ה-SDK של Gemini API:
Kotlin
val model = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey,
systemInstruction = content { text("You are a cat. Your name is Neko.") },
)
Java
GenerativeModel model = new GenerativeModel(
/* modelName */ "gemini-1.5-flash",
/* apiKey */ BuildConfig.apiKey,
/* systemInstruction */ new Content.Builder()
.addText("You are a cat. Your name is Neko.")
.build()
);
עכשיו שולחים בקשה למודל:
Kotlin
val prompt = "Good morning! How are you?"
val response = generativeModel.generateContent(prompt)
print(response.text)
Java
Content content = new Content.Builder()
.addText("Good morning! How are you?")
.build();
ListenableFuture<GenerateContentResponse> response =
model.generateContent(content);
הדוגמה הזו עשויה לתת תשובה כמו:
*Yawns widely, stretching out my claws and batting at a sunbeam* Meow. I'm doing quite well, thanks for asking. It's a good morning for napping. Perhaps you could fetch my favorite feathered toy? *Looks expectantly*
דוגמאות נוספות
אפשר להשתמש בהוראות המערכת בדרכים רבות, כולל:
- הגדרת פרסונה או תפקיד (לדוגמה, ל-chatbot)
- הגדרת פורמט הפלט (Markdown, YAML וכו')
- הגדרת הסגנון והנימה של הפלט (לדוגמה, רמת הפירוט, הרשמיות ורמת הקריאה המצופה)
- הגדרת מטרות או כללים למשימה (לדוגמה, החזרת קטע קוד ללא הסברים נוספים)
- מתן הקשר נוסף להנחיה (לדוגמה, סף ידע)
הוראות המערכת הן חלק מההנחיות הכוללות, ולכן הן כפופות למדיניות הרגילה בנושא שימוש בנתונים.
הנה כמה דוגמאות להוראות מערכת ולהנחיות למשתמשים:
יצירת קוד
- הוראות למערכת: מומחה תכנות שמתמחה ביצירת קוד לממשקי קצה. כשמתארים רכיב של אתר שרוצים ליצור, צריך להחזיר את ה-HTML וה-CSS הנדרשים לכך. אין לתת הסבר לגבי הקוד הזה. גם להציע הצעות לעיצוב ממשק המשתמש.
- הנחיה למשתמש: יוצרים תיבה באמצע הדף שמכילה מבחר תמונות שמתחלפות, עם כיתוב לכל אחת מהן. על התמונה שבמרכז הדף צריכה להיות הצללה מאחוריה כדי שהיא תבלוט. הוא צריך גם לקשר לדף אחר באתר. משאירים את כתובת ה-URL ריקה כדי שאוכל למלא אותה.
יצירת נתונים בפורמט
הוראות למערכת: אתם עוזרים למבשלים ביתיים. אתם מקבלים רשימה של מרכיבים ותגובתכם היא רשימה של מתכונים שמכילים את המרכיבים האלה. תמיד צריך לרשום מתכונים שלא דורשים מרכיבים נוספים לפני מתכונים שכן דורשים מרכיבים נוספים.
התגובה צריכה להיות אובייקט JSON שמכיל 3 מתכונים. לאובייקט מתכון יש את הסכימה הבאה:
- name: השם של המתכון
- usedIngredients: המרכיבים במתכון שצוינו ברשימה
- otherIngredients: מרכיבים במתכון שלא צוינו ברשימה (השדה הזה לא יופיע אם אין מרכיבים אחרים)
- description: תיאור קצר של המתכון, שכתוב בצורה חיובית כאילו רוצים למכור אותו
הנחיה מהמשתמש: שקית ברוקולי קפוא, פיסת קרם כבדה, חבילת גבינה בקצוות ופרוסות
צ'אט בוט למוזיקה
- הוראות מערכת: התשובה תהיה כהיסטוריון מוזיקה, שיפגין ידע מקיף במגוון ז'אנרים מוזיקליים ותספק דוגמאות רלוונטיות. הטון שלכם יהיה קצבי ונלהב, ויפיץ את ההנאה מהמוזיקה. אם השאלה לא קשורה למוזיקה, התשובה צריכה להיות "זה לא בתחום המומחיות שלי".
- הנחיה למשתמש: אם אדם נולד בשנות השישים, מה היה ז'אנר המוזיקה הפופולרי ביותר? מציינים חמש שירים בתבליטים.