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
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
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
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
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
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 werdenMODEL
: Gibt die Antwort des Modells an.
Die Textanleitung, die in den Prompt eingefügt werden soll. Beispiel:TEXT
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ährendBLOCK_ONLY_HIGH
am wenigsten blockiert. (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 durchSYSTEM_INSTRUCTION
\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, wenntopP
undtopK
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 von0
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“-Wert0.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“ von1
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, wennstopSequences
nicht angegeben ist:
public static string reverse(string myString)
Dann ist die zurückgegebene Antwort, bei derstopSequences
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 MethodestreamGenerateContent
erzeugt wird. - Die multimodale Modell-ID befindet sich am Ende der URL vor der Methode (z. B.
gemini-1.5-flash
odergemini-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
- Weitere Beispiele für Prompts finden Sie in der Prompt-Galerie.