Systemanleitung

Mit Systemanweisungen können Nutzer das Verhalten des Modells entsprechend ihrer spezifischen Anforderungen und Anwendungsfällen steuern. Wenn Sie eine Systemanweisung festlegen, erhält das Modell zusätzlichen Kontext, um die Aufgabe zu verstehen, individuellere Antworten zu liefern und bestimmte Richtlinien für die gesamte Nutzerinteraktion mit dem Modell einzuhalten. Für Entwickler kann das Verhalten auf Produktebene in Systemanweisungen angegeben werden, getrennt von den Prompts von Endnutzern.

Sie können Systemanweisungen auf viele Arten verwenden, darunter:

  • Identität oder Rolle definieren (z. B. für einen Chatbot)
  • Ausgabeformat definieren (Markdown, YAML usw.)
  • Ausgabestil und ton definieren (z. B. Ausführlichkeit, Formalität und Ziellesegrad)
  • Ziele oder Regeln für die Aufgabe definieren (z. B. die Rückgabe eines Code-Snippets ohne weitere Erläuterungen)
  • Zusätzlichen Kontext für den Prompt angeben (z. B. Wissensgrenzwert)

Wenn eine Systemanweisung festgelegt ist, gilt sie für die gesamte Anfrage. Sie ist über mehrere Nutzer und Modellversionen effektiv, wenn sie im Prompt enthalten ist. Systemanweisungen sind Teil Ihrer allgemeinen Prompts und unterliegen daher den Standardrichtlinien zur Datennutzung.

Beispiele

Hier sehen Sie ein einfaches Beispiel für die Festlegung der Systemanweisung mithilfe der SDKs für die Gemini API:

Python

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

Ok

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."
});

Web

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

Dart (Flutter)

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

Kotlin:

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()
)

Die folgenden sind Beispiele für System-Prompts, die das erwartete Verhalten des Modells definieren.

Codegenerierung

  • System: Sie sind ein Programmierexperte, der sich auf das Rendern von Code für Frontend-Schnittstellen spezialisiert hat. Wenn ich die Komponente einer Website beschreibe, die ich erstellen möchte, geben Sie den dazu erforderlichen HTML- und CSS-Code zurück. Geben Sie keine Erläuterung für diesen Code an. Machen Sie auch einige Vorschläge für das UI-Design.
  • Nutzer:Erstellen Sie in der Mitte der Seite ein Feld, das eine rotierende Auswahl von Bildern mit jeweils einer Bildunterschrift enthält. Das Bild in der Mitte der Seite sollte einen Schatten haben, sodass es sich abhebt. Es sollte auch auf eine andere Seite der Website verweisen. Lassen Sie die URL leer, damit ich sie ausfüllen kann.

Generierung formatierter Daten

  • System: Sie sind ein Assistent für das Kochen zu Hause. Sie erhalten eine Liste von Zutaten und antworten mit einer Liste von Rezepten, die diese Zutaten verwenden. Rezepte, für die keine zusätzlichen Zutaten benötigt werden, sollten immer vor Rezepten aufgelistet werden, die das tun.

    Die Antwort muss ein JSON-Objekt mit drei Rezepten sein. Ein Rezeptobjekt hat folgendes Schema:

    • name: der Name des Rezepts
    • usedIngredients: Zutaten im Rezept, die in der Liste bereitgestellt wurden
    • otherIngredients: Zutaten im Rezept, die nicht in der Liste aufgeführt wurden (wird ausgelassen, wenn keine weiteren Zutaten erforderlich sind)
    • description: Eine kurze Beschreibung des Rezepts, die positiv formuliert ist, wie eine Werbung.
  • Nutzer:

    • 0,5 kg gefrorener Brokkoli
    • 0,5 l Schlagsahne
    • 0,5 kg Käse

Musik-Chatbot

  • System: Sie antworten als Musikhistoriker, stellen Ihr umfassendes Wissen über verschiedene Musikgenres unter Beweis und geben relevante Beispiele. Ihr Ton sollte fröhlich und begeistert sein und die Freude an der Musik verbreiten. Wenn sich eine Frage nicht mit Musik bezieht, sollte die Antwort so lauten: „Das liegt außerhalb meines Wissens.“
  • Nutzer: Wenn ein Mensch in den 60er-Jahren geboren wurde, was war das beliebteste Musikgenre, das gespielt wurde? Listen Sie fünf Songs in Stichpunkten auf.