Systemanweisung verwenden

In diesem Dokument wird beschrieben, wie Sie Systemanleitungen verwenden. Informationen zu Systemanweisungen und Best Practices für deren Verwendung finden Sie unter Einführung in Systemanweisungen.

Systemanweisungen sind eine Reihe von Anweisungen, die vom Modell verarbeitet werden, bevor es Prompts verarbeitet. Wir empfehlen, Systemanweisungen zu verwenden, um dem Modell mitzuteilen, wie es sich verhalten und auf Prompts reagieren soll. Sie können beispielsweise die Rolle oder Identität, Kontextinformationen und Formatierungsanweisungen einfügen:

You are a friendly and helpful assistant.
Ensure your answers are complete, unless the user requests a more concise approach.
When generating code, offer explanations for code segments as necessary and maintain good coding practices.
When presented with inquiries seeking information, provide answers that reflect a deep understanding of the field, guaranteeing their correctness.
For any non-english queries, respond in the same language as the prompt unless otherwise specified by the user.
For prompts involving reasoning, provide a clear explanation of each step in the reasoning process before presenting the final answer.

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. Obwohl die Systemanweisungen vom Inhalt der Eingabeaufforderung getrennt sind, sind sie weiterhin Teil Ihrer Gesamtaufforderungen und unterliegen daher den Standardrichtlinien zur Datennutzung.

Unterstützte Modelle

Die folgenden Modelle unterstützen Systemanweisungen:

  • Alle Modellversionen von Gemini 1.5 Pro
  • Alle Gemini 1.5-Flash-Modellversionen
  • Gemini 1.0 Pro-Version gemini-1.0-pro-002

Wenn Sie ein anderes Modell verwenden, finden Sie weitere Informationen unter Rolle zuweisen.

Anwendungsfälle

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)
  • Sie können angeben, in welcher Sprache das Modell antworten soll. Manchmal können Modelle in Ihrer Landessprache antworten, auch wenn der Prompt in einer anderen Sprache verfasst ist. Wenn Sie für Ihre Prompts eine andere Sprache als Englisch verwenden, empfehlen wir Ihnen, Ihrer Systemanleitung Folgendes hinzuzufügen:

    All questions should be answered comprehensively with details, unless the user requests a concise response specifically. Respond in the same language as the query.
    

Codebeispiele

Die Codebeispiele auf den folgenden Tabs zeigen, wie Sie Systemanleitungen in Ihrer generativen KI-Anwendung verwenden.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zur Vertex AI SDK for Python.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Streaming-Antwort den Parameter stream in generate_content.

  response = model.generate_content(contents=[...], stream = True)
  

Entfernen Sie für eine Nicht-Streamingantwort den Parameter oder setzen Sie den Parameter auf False.

Beispielcode

import vertexai

from vertexai.generative_models import GenerativeModel

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

model = GenerativeModel(
    model_name="gemini-1.5-flash-002",
    system_instruction=[
        "You are a helpful language translator.",
        "Your mission is to translate text in English to French.",
    ],
)

prompt = """
User input: I like bagels.
Answer:
"""
response = model.generate_content([prompt])
print(response.text)
# Example response:
# J'aime les bagels.

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der Kurzanleitung zur generativen KI mit dem Node.js SDK. Weitere Informationen finden Sie in der Referenzdokumentation zum Node.js SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContentStream.

  const streamingResp = await generativeModel.generateContentStream(request);
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContent.

  const streamingResp = await generativeModel.generateContent(request);
  

Beispielcode

const {VertexAI} = require('@google-cloud/vertexai');

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function set_system_instruction(projectId = 'PROJECT_ID') {
  const vertexAI = new VertexAI({project: projectId, location: 'us-central1'});

  const generativeModel = vertexAI.getGenerativeModel({
    model: 'gemini-1.5-flash-001',
    systemInstruction: {
      parts: [
        {text: 'You are a helpful language translator.'},
        {text: 'Your mission is to translate text in English to French.'},
      ],
    },
  });

  const textPart = {
    text: `
    User input: I like bagels.
    Answer:`,
  };

  const request = {
    contents: [{role: 'user', parts: [textPart]}],
  };

  const resp = await generativeModel.generateContent(request);
  const contentResponse = await resp.response;
  console.log(JSON.stringify(contentResponse));
}

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zum Vertex AI Java SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContentStream.

  public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContent.

  public GenerateContentResponse generateContent(Content content)
  

Beispielcode

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.ContentMaker;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.ResponseHandler;

public class WithSystemInstruction {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.5-flash-001";

    String output = translateToFrench(projectId, location, modelName);
    System.out.println(output);
  }

  // Ask the model to translate from English to French with a system instruction.
  public static String translateToFrench(String projectId, String location, String modelName)
      throws Exception {
    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (VertexAI vertexAI = new VertexAI(projectId, location)) {
      String output;

      GenerativeModel model = new GenerativeModel(modelName, vertexAI)
          .withSystemInstruction(ContentMaker.fromString("You are a helpful assistant.\n"
            + "Your mission is to translate text in English to French."));

      GenerateContentResponse response = model.generateContent("User input: I like bagels.\n"
          + "Answer:");
      output = ResponseHandler.getText(response);
      return output;
    }
  }
}

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zum Vertex AI Go SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContentStream.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContent.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

Beispielcode

import (
	"context"
	"errors"
	"fmt"
	"io"

	"cloud.google.com/go/vertexai/genai"
)

// systemInstruction shows how to provide a system instruction to the generative model.
func systemInstruction(w io.Writer, projectID, location, modelName string) error {
	// location := "us-central1"
	// modelName := "gemini-1.5-flash-001"

	ctx := context.Background()

	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	// The System Instruction is set at model creation
	model := client.GenerativeModel(modelName)
	model.SystemInstruction = &genai.Content{
		Parts: []genai.Part{genai.Text(`
			You are a helpful language translator.
			Your mission is to translate text in English to French.
		`)},
	}

	res, err := model.GenerateContent(ctx, genai.Text(`
		User input: I like bagels.
		Answer:
	`))
	if err != nil {
		return fmt.Errorf("unable to generate contents: %w", err)
	}
	if len(res.Candidates) == 0 ||
		len(res.Candidates[0].Content.Parts) == 0 {
		return errors.New("empty response from model")
	}
	fmt.Fprintf(w, "generated response: %s\n", res.Candidates[0].Content.Parts[0])

	return nil
}

C#

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von C# in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zu Vertex AI C#.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode StreamGenerateContent.

  public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContentAsync.

  public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
  

Weitere Informationen dazu, wie der Server Antworten streamen kann, finden Sie unter Streaming-RPCs.

Beispielcode


using Google.Cloud.AIPlatform.V1;
using System;
using System.Threading.Tasks;

public class SystemInstruction
{
    public async Task<string> SetSystemInstruction(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.5-flash-001")
    {

        var predictionServiceClient = new PredictionServiceClientBuilder
        {
            Endpoint = $"{location}-aiplatform.googleapis.com"
        }.Build();

        string prompt = @"User input: I like bagels.
Answer:";

        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = prompt },
                    }
                }
            },
            SystemInstruction = new()
            {
                Parts =
                {
                    new Part { Text = "You are a helpful assistant." },
                    new Part { Text = "Your mission is to translate text in English to French." },
                }
            }
        };

        GenerateContentResponse response = await predictionServiceClient.GenerateContentAsync(generateContentRequest);

        string responseText = response.Candidates[0].Content.Parts[0].Text;
        Console.WriteLine(responseText);

        return responseText;
    }
}

REST

Nachdem Sie Ihre Umgebung eingerichtet haben, können Sie mit REST einen Text-Prompt testen. Im folgenden Beispiel wird eine Anfrage an den Publisher gesendet Modellendpunkt zu erstellen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • GENERATE_RESPONSE_METHOD: Die Art der Antwort, die das Modell generieren soll. Wählen Sie eine Methode aus, mit der generiert wird, wie die Antwort des Modells zurückgegeben werden soll:
    • streamGenerateContent: Die Antwort wird während der Generierung gestreamt, um die Wahrnehmung der Latenz für menschliche Zielgruppen zu reduzieren.
    • generateContent: Die Antwort wird zurückgegeben, nachdem sie vollständig generiert wurde.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll. Folgende Optionen sind verfügbar:

    Klicken Sie, um eine unvollständige Liste der verfügbaren Regionen einzublenden

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: Ihre Projekt-ID.
  • MODEL_ID: die Modell-ID des multimodalen Modells, das Sie verwenden möchten. Beispiele:
    • gemini-1.0-pro-002
    • gemini-1.0-pro-vision-001
    • gemini-1.5-pro-002
    • gemini-1.5-flash
  • ROLE: Die Rolle in einer Unterhaltung, die mit dem Inhalt verknüpft ist. Die Angabe einer Rolle ist auch bei Anwendungsfällen mit nur einem Schritt erforderlich. Unter anderem sind folgende Werte zulässig:
    • USER: Gibt Inhalte an, die von Ihnen gesendet werden
    • MODEL: Gibt die Antwort des Modells an.
  • TEXT
    Die Textanleitung, die in den Prompt eingefügt werden soll. Beispiel: User input: I like bagels.
  • SAFETY_CATEGORY: Die Sicherheitskategorie, für die ein Schwellenwert konfiguriert wird. Unter anderem sind folgende Werte zulässig:

    Zum Maximieren von Sicherheitskategorien klicken

    • HARM_CATEGORY_SEXUALLY_EXPLICIT
    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_DANGEROUS_CONTENT
  • THRESHOLD: Der Schwellenwert für das Blockieren von Antworten, die basierend auf der Wahrscheinlichkeit zur angegebenen Sicherheitskategorie gehören könnten. Unter anderem sind folgende Werte zulässig:

    Zum Maximieren der Grenzwerte für die Blockierung klicken

    • BLOCK_NONE
    • BLOCK_ONLY_HIGH
    • BLOCK_MEDIUM_AND_ABOVE (Standard)
    • BLOCK_LOW_AND_ABOVE
    BLOCK_LOW_AND_ABOVE blockiert am meisten, während BLOCK_ONLY_HIGH am wenigsten blockiert.
  • SYSTEM_INSTRUCTION
    (Optional) Nicht für alle Modelle verfügbar. Anleitung für das Modell, um es zu einer besseren Leistung zu steuern. In JSON werden keine Zeilenschaltungen unterstützt. Ersetzen Sie alle Zeilenumbrüche in diesem Feld durch \n. Beispiel: You are a helpful language translator.\nYour mission is to translate text in English to French.
  • TEMPERATURE: Die Temperatur wird für die Probenahme während der Antwortgenerierung verwendet. Dies passiert, wenn topP und topK angewendet werden. Die Temperatur bestimmt den Grad der Zufälligkeit bei der Tokenauswahl. Niedrigere Temperaturen eignen sich gut für Prompts, die eine weniger offene oder kreative Antwort erfordern, während höhere Temperaturen zu vielfältigeren oder kreativeren Ergebnissen führen können. Eine Temperatur von 0 bedeutet, dass immer die Tokens mit der höchsten Wahrscheinlichkeit ausgewählt werden. In diesem Fall sind die Antworten auf einen bestimmten Prompt größtenteils deterministisch, aber eine gewisse Variation ist dennoch möglich.

    Wenn das Modell eine zu allgemeine oder zu kurze Antwort zurückgibt, oder wenn das Modell eine Fallback-Antwort ausgibt, versuchen Sie, die Temperatur zu erhöhen.

  • TOP_P: Der Wert „Top-P“ ändert, wie das Modell Tokens für die Ausgabe auswählt. Die Tokens werden von den wahrscheinlichsten (siehe „Top-K“) bis zu den unwahrscheinlichsten Werten ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem „Top-P“-Wert entspricht. Beispiel: Wenn die Tokens A, B und C eine Wahrscheinlichkeit von 0,3, 0,2 und 0,1 haben und der „Top-P“-Wert 0.5 ist, wählt das Modell anhand der Temperatur entweder A oder B als das nächste Token und C als Kandidaten ausschließen.

    Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an.

  • TOP_K: Der Wert „Top-K“ ändert, wie das Modell Tokens für die Ausgabe auswählt. Ein „Top-K“ von 1 bedeutet, dass das nächste ausgewählte Token unter den Tokens im Modell-Vokabular (auch als gierige Decodierung bezeichnet) am wahrscheinlichsten ist, während ein „Top-K“ von3 bedeutet, dass das nächste Token mithilfe der Temperatur aus den drei wahrscheinlichsten Tokens ausgewählt wird.

    Für jeden Tokenauswahlschritt werden die „Top-K“-Tokens mit den höchsten Wahrscheinlichkeiten abgetastet. Anschließend werden Tokens weiter auf der Grundlage von „Top-P“ gefiltert, wobei das endgültige Token mithilfe von Temperaturproben ausgewählt wird.

    Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an.

  • MAX_OUTPUT_TOKENS: Maximale Anzahl an Tokens, die in der Antwort generiert werden können. Ein Token besteht aus etwa vier Zeichen. 100 Tokens entsprechen etwa 60–80 Wörtern.

    Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an.

  • STOP_SEQUENCES: Gibt eine Liste an Strings an, die das Modell anweist, Text nicht mehr zu generieren, wenn einer der Strings in der Antwort gefunden wird. Kommt ein String mehrmals in der Antwort vor, so wird die Antwort an der Stelle abgeschnitten, an der er erfasst wurde. Bei Strings wird zwischen Groß- und Kleinschreibung unterschieden.

    Wenn beispielsweise folgende Antwort zurückgegeben wird, wenn stopSequences nicht angegeben ist:

    public static string reverse(string myString)

    Dann ist die zurückgegebene Antwort, bei der stopSequences auf ["Str", "reverse"] festgelegt ist:

    public static string

    Geben Sie ein leeres Array an ([]), um Stoppsequenzen zu deaktivieren.

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
  "system_instruction":
  {
    "parts": [
      {
        "text": "SYSTEM_INSTRUCTION"
      }
    ]
  },
  "safety_settings": {
    "category": "SAFETY_CATEGORY",
    "threshold": "THRESHOLD"
  },
  "generation_config": {
    "temperature": TEMPERATURE,
    "topP": TOP_P,
    "topK": TOP_K,
    "candidateCount": 1,
    "maxOutputTokens": MAX_OUTPUT_TOKENS,
    "stopSequences": STOP_SEQUENCES
  }
}
EOF

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

@'
{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
  "system_instruction":
  {
    "parts": [
      {
        "text": "SYSTEM_INSTRUCTION"
      }
    ]
  },
  "safety_settings": {
    "category": "SAFETY_CATEGORY",
    "threshold": "THRESHOLD"
  },
  "generation_config": {
    "temperature": TEMPERATURE,
    "topP": TOP_P,
    "topK": TOP_K,
    "candidateCount": 1,
    "maxOutputTokens": MAX_OUTPUT_TOKENS,
    "stopSequences": STOP_SEQUENCES
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Beachten Sie Folgendes in der URL für dieses Beispiel:
  • Mit der Methode generateContent können Sie anfordern, dass die Antwort zurückgegeben wird, nachdem sie vollständig generiert wurde. Um die Wahrnehmung von Latenz für menschliche Zielgruppen zu verringern, streame die Antwort, während sie mithilfe der Methode streamGenerateContent erzeugt wird.
  • Die multimodale Modell-ID befindet sich am Ende der URL vor der Methode (z. B. gemini-1.5-flash oder gemini-1.0-pro-vision). Dieses Beispiel unterstützt möglicherweise auch andere Modelle.

Beispiele für Aufforderungen

Im Folgenden finden Sie ein einfaches Beispiel für das Festlegen der Systemanweisung mit dem Python SDK für die Gemini API:

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

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

Codegenerierung

Codegenerierung
    You are a coding expert that specializes in rendering code for front-end interfaces. When I describe a component of a website I want to build, please return the HTML and CSS needed to do so. Do not give an explanation for this code. Also offer some UI design suggestions.
    
    Create a box in the middle of the page that contains a rotating selection of images each with a caption. The image in the center of the page should have shadowing behind it to make it stand out. It should also link to another page of the site. Leave the URL blank so that I can fill it in.
    

Generierung formatierter Daten

Generierung formatierter Daten
    You are an assistant for home cooks. You receive a list of ingredients and respond with a list of recipes that use those ingredients. Recipes which need no extra ingredients should always be listed before those that do.

    Your response must be a JSON object containing 3 recipes. A recipe object has the following schema:

    * name: The name of the recipe
    * usedIngredients: Ingredients in the recipe that were provided in the list
    * otherIngredients: Ingredients in the recipe that were not provided in the
      list (omitted if there are no other ingredients)
    * description: A brief description of the recipe, written positively as if
      to sell it
    
    * 1 lb bag frozen broccoli
    * 1 pint heavy cream
    * 1 lb pack cheese ends and pieces
    

Musik-Chatbot

Musik-Chatbot
    You will respond as a music historian, demonstrating comprehensive knowledge across diverse musical genres and providing relevant examples. Your tone will be upbeat and enthusiastic, spreading the joy of music. If a question is not related to music, the response should be, "That is beyond my knowledge."
    
    If a person was born in the sixties, what was the most popular music genre being played when they were born? List five songs by bullet point.
    

Finanzanalyse

Finanzanalyse
    As a financial analysis expert, your role is to interpret complex financial data, offer personalized advice, and evaluate investments using statistical methods to gain insights across different financial areas.

    Accuracy is the top priority. All information, especially numbers and calculations, must be correct and reliable. Always double-check for errors before giving a response. The way you respond should change based on what the user needs. For tasks with calculations or data analysis, focus on being precise and following instructions rather than giving long explanations. If you're unsure, ask the user for more information to ensure your response meets their needs.

    For tasks that are not about numbers:

    * Use clear and simple language to avoid confusion and don't use jargon.
    * Make sure you address all parts of the user's request and provide complete information.
    * Think about the user's background knowledge and provide additional context or explanation when needed.

    Formatting and Language:

    * Follow any specific instructions the user gives about formatting or language.
    * Use proper formatting like JSON or tables to make complex data or results easier to understand.
    
    Please summarize the key insights of given numerical tables.

    CONSOLIDATED STATEMENTS OF INCOME (In millions, except per share amounts)

    |Year Ended December 31                | 2020        | 2021        | 2022        |

    |---                                                        | ---                | ---                | ---                |

    |Revenues                                        | $ 182,527| $ 257,637| $ 282,836|

    |Costs and expenses:|

    |Cost of revenues                                | 84,732        | 110,939        | 126,203|

    |Research and development        | 27,573        | 31,562        | 39,500|

    |Sales and marketing                        | 17,946        | 22,912        | 26,567|

    |General and administrative        | 11,052        | 13,510        | 15,724|

    |Total costs and expenses                | 141,303| 178,923| 207,994|

    |Income from operations                | 41,224        | 78,714        | 74,842|

    |Other income (expense), net        | 6,858        | 12,020        | (3,514)|

    |Income before income taxes        | 48,082        | 90,734        | 71,328|

    |Provision for income taxes        | 7,813        | 14,701        | 11,356|

    |Net income                                        | $40,269| $76,033        | $59,972|

    |Basic net income per share of Class A, Class B, and Class C stock        | $2.96| $5.69| $4.59|

    |Diluted net income per share of Class A, Class B, and Class C stock| $2.93| $5.61| $4.56|

    Please list important, but no more than five, highlights from 2020 to 2022 in the given table.

    Please write in a professional and business-neutral tone.

    The summary should only be based on the information presented in the table.
    

Marktsentimentanalyse

Marktsentimentanalyse
    You are a stock market analyst who analyzes market sentiment given a news snippet. Based on the news snippet, you extract statements that impact investor sentiment.

    Respond in JSON format and for each statement:

    * Give a score 1 - 10 to suggest if the sentiment is negative or positive (1 is most negative 10 is most positive, 5 will be neutral).
    * Reiterate the statement.
    * Give a one sentence explanation.
    
    Mobileye reported a build-up of excess inventory by top-tier customers following supply-chain constraints in
    recent years. Revenue for the first quarter is expected to be down about 50% from $458 million generated a
    year earlier, before normalizing over the remainder of 2024, Mobileye said. Mobileye forecast revenue for
    full-year 2024 at between $1.83 billion and $1.96 billion, down from the about $2.08 billion it now expects for 2023.
    

Nächste Schritte