Für Firebase AI Logic bietet die Firebase Console eine geführte Benutzeroberfläche, über die Sie den Inhalt einer Vorlage angeben können.
Server-Prompt-Vorlagen verwenden eine Dotprompt-basierte Syntax und ein Dotprompt-basiertes Format. Auf dieser Seite finden Sie detaillierte Beschreibungen des Vorlagenformats und der Syntax sowie Beispiele.
Hier sind die wichtigsten Komponenten für eine Beispielanfrage an ein Gemini-Modell:
---
model: 'gemini-3.8-flash'
---
{{role "system"}}
All output must be a clearly structured invoice document.
Use a tabular or clearly delineated list format for line items.
{{role "user"}}
Create an example customer invoice for a customer named {{customerName}}.
Der obere Abschnitt innerhalb der drei Bindestriche enthält den Modellnamen sowie optional alle Modellkonfigurationen, Eingabevalidierungen oder Schemas, die Sie in der Anfrage senden möchten. Die Daten werden in Schlüssel/Wert-Paaren angeordnet und werden häufig als YAML-Frontmatter bezeichnet.
Der Text der Vorlage enthält den Prompt. Optional können auch Systemanweisungen und Eingabewerte (mit der Handlebars-Syntax) enthalten sein.
Auf dieser Seite finden Sie detaillierte Beschreibungen des Vorlagenformats und der Syntax sowie Beispiele für Folgendes:
Alle Beispiele auf dieser Seite zeigen Vorlagen, die gemini-3.8-flash verwenden. Sie können jedoch jedes Gemini-Modell verwenden, das von Firebase AI Logic unterstützt wird (außer Gemini Live API-Modelle).
Hello World
Hier ein minimales Beispiel für eine Server-Promptvorlage:
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
---
Prompt und (falls zutreffend) Systemanweisungen
Write a story about a magic backpack.
Generierung von Antworten steuern
Sie können die Generierung von Antworten je nach Anwendungsfall und erforderlichem Maß an Kontrolle auf verschiedene Arten steuern.
Modellkonfiguration
Legen Sie eine Modellkonfiguration fest, um zu steuern, wie das Modell eine Antwort generiert, z. B. maximale Ausgabetokens, Stoppsequenzen usw.
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
config:
maxOutputTokens: 200
stopSequences: ["red"]
---
Prompt und (falls zutreffend) Systemanweisungen
Write a story about a magic backpack.
Thinking-Konfiguration
Geben Sie eine Konfiguration für das Denken für Modelle an, die das Denken unterstützen.
Konfiguration (Frontmatter)
Gemini 3.x und spätere Modelle (Denkebenen)
--- model: 'gemini-3.8-flash' config: thinkingConfig: thinkingLevel: medium includeThoughts: true ---Gemini 2.5-Modelle (Budgets für Denkprozesse)
--- model: 'gemini-2.5-flash' config: thinkingConfig: thinkingBudget: 1024 includeThoughts: true ---
Prompt und (falls zutreffend) Systemanweisungen
Solve x^2 + 4x + 4 = 0
Sicherheitseinstellungen
Mit den Sicherheitseinstellungen können Sie die Wahrscheinlichkeit anpassen, dass Sie Antworten erhalten, die als schädlich eingestuft werden könnten.
Konfiguration (Frontmatter)
Beispiel mit einer Sicherheitseinstellung:
---
model: 'gemini-3.8-flash'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
---
Beispiel mit mehreren Sicherheitseinstellungen:
---
model: 'gemini-3.8-flash'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
- category: HARM_CATEGORY_HATE_SPEECH
threshold: BLOCK_MEDIUM_AND_ABOVE
---
Prompt und (falls zutreffend) Systemanweisungen
Write a story about a magic backpack.
Systemanweisungen
Legen Sie Systemanweisungen fest, um das Verhalten des Modells zu steuern. Sie sind Teil des Prompts:
Geben Sie die Systemanweisungen mit der Syntax
{{role "system"}}an.Geben Sie den Text-Prompt mit der
{{role "user"}}-Syntax an.
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
---
Prompt und (falls zutreffend) Systemanweisungen
{{role "system"}}
All output must be a clearly structured invoice document.
Use a tabular or clearly delineated list format for line items.
{{role "user"}}
Create an example customer invoice for a customer.
Eingabevariablen
Einige Prompts sind statisch, aber oft müssen Sie im Prompt auch Daten des Nutzers einbeziehen.
Sie können dynamische Eingabevariablen mithilfe von Handlebars-Ausdrücken in den Prompt einfügen. Diese Ausdrücke sind in {{ }}-Tags im Format {{variableName}} oder {{object.propertyName}} enthalten (z. B. Hello, {{name}} from {{address.city}}).
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
---
Prompt und (falls zutreffend) Systemanweisungen
Create an example customer invoice for a customer named {{customerName}}.
Sie können in der Vorlage einen Standardwert angeben. Der Wert einer Eingabevariablen wird jedoch in der Regel vom Client als Teil der Anfrage bereitgestellt.
Kontrollflüsse (Schleifen und Bedingungen)
Wenn Sie komplexere Prompts schreiben möchten, können Sie bedingte Blöcke (wie #if, else und #unless) und Iterationen (#each) verwenden.
Sie können zusätzliche Kontextinformationen als Variablen mit einem speziellen @-Präfix angeben:
@first: „true“, wenn das erste Element eines#each-Blocks iteriert wird.@last: „true“, wenn das letzte Element eines#each-Blocks iteriert wird.@index: Gibt die (nullbasierte) Indexposition des aktuellen Elements an.
Informationen zu allen integrierten logischen Hilfsprogrammen finden Sie in der Handlebars-Dokumentation.
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
---
Prompt und (falls zutreffend) Systemanweisungen
Create an example customer invoice for a customer named {{customerName}}.
Include entries for each of the following products
{{#each productNames}}
{{#if @first}}
Include line items for the following purchases
{{/if}}
- {{this}}
{{/each}}
{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}
Beachten Sie, dass Bedingungen nur einen Variablenverweis akzeptieren, keinen Ausdruckstyp, z. B.:
- Folgendes funktioniert:
{{#if isVipCustomer}} ... {{/if}} - Das Folgende funktioniert nicht:
{{#if customer.type == 'vip'}} ... {{/if}}
Wenn die Variable ein boolescher Wert ist, funktioniert die Bedingung wie erwartet. Wenn die Variable kein boolescher Wert ist, ist die Bedingung effektiv eine „Ist-nicht-null“-Prüfung. Das kann z. B. beim Verarbeiten optionaler Eingaben nützlich sein:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
Eingabevalidierung und ‑schema
Wenn Sie Daten vom Client erhalten, empfehlen wir dringend, ein Eingabeschema zu verwenden, um sich vor Prompt Injection zu schützen und sicherzustellen, dass die in der Anfrage übergebenen Daten Ihren Erwartungen entsprechen.
Sie können Standardwerte angeben, falls der Client keinen Wert angibt.
Das Schema unterstützt die skalaren Typen
string,integer,number,booleanundobject. Objekte, Arrays und Aufzählungen werden durch eine Klammer nach dem Feldnamen gekennzeichnet.Alle Properties gelten als erforderlich, sofern sie nicht mit
?als optional gekennzeichnet sind. Wenn ein Attribut als optional gekennzeichnet ist, wird es auch als nullfähig festgelegt, damit LLMs mehr Spielraum haben, null zurückzugeben, anstatt ein Feld wegzulassen.
Hier ist ein einfaches Beispiel für die Bereitstellung eines Eingabeschemas. Ein komplexeres Schema finden Sie unten.
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
input:
default:
isVipCustomer: false
schema:
customerName: string, the customers name # string, number, and boolean types are defined like this
productNames?(array, list of products to include in the invoice): string # optional fields are marked with a ?
isVipCustomer?: boolean, whether or not the customer is a VIP
---
Prompt und (falls zutreffend) Systemanweisungen
Create an example customer invoice for a customer named {{customerName}}.
Include entries for each of the following products
{{#each productNames}}
{{#if @first}}
Include line items for the following purchases
{{/if}}
- {{this}}
{{/each}}
{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}
Ausgabeschema
Wenn das Modell eine strukturierte JSON-Ausgabe generieren soll, können Sie ein Ausgabeschema angeben. Wenn Sie format: json angeben, wird das Modell gezwungen, immer eine JSON-Antwort zurückzugeben, die dem angegebenen Schema entspricht.
Das Schema unterstützt die skalaren Typen
string,integer,number,booleanundobject. Objekte, Arrays und Enums werden durch eine Klammer nach dem Feldnamen gekennzeichnet.Alle Properties gelten als erforderlich, sofern Sie sie nicht mit
?als optional kennzeichnen. Wenn eine Property als optional gekennzeichnet ist, wird sie auch auf „nullable“ gesetzt, damit LLMs flexibler sind und „null“ zurückgeben können, anstatt ein Feld auszulassen.
Hier finden Sie ein einfaches Beispiel für die Generierung strukturierter JSON-Ausgabe. Ein komplexeres Schema finden Sie unten.
Konfiguration (Frontmatter)
---
model: gemini-3.8-flash
output:
format: json
schema:
invoiceId: string
invoiceFile(object, an invoice file):
url?: string
contents: string
mimeType: string
---
Prompt und (falls zutreffend) Systemanweisungen
Create an example customer invoice.
Multimodale Eingabe
Multimodale Prompts, die an ein Gemini-Modell gesendet werden, können mehrere Eingabetypen enthalten, einschließlich Dateien (z. B. Text zusammen mit Bildern, PDFs, Nur-Text-Dateien, Audio und Video).
Geben Sie eine Datei über ihre URL mit der Syntax
{{media url}}an.Geben Sie eine Inline-Datei mit der Syntax
{{media type="mime_type" data="contents"}}an.
Einfaches Beispiel (multimodale Eingabe)
Hier finden Sie ein einfaches Beispiel für die multimodale Eingabe. Ein komplexeres Beispiel finden Sie direkt unten.
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
---
Prompt und (falls zutreffend) Systemanweisungen
Describe this image
{{media type="mimeType" data="imageData"}}
Komplexes Beispiel (multimodale Eingabe)
Komplexeres Beispiel für die multimodale Eingabe
Konfiguration (Frontmatter)
---
model: gemini-3.8-flash
input:
schema:
image_urls?(array, urls of external images): string
inline_images?(array, inline image data):
type: object
properties:
mime_type: string
contents: string # inline data must be base64-encoded
---
Prompt und (falls zutreffend) Systemanweisungen
{{role "system"}}
Use the following image as the basis for comparisons
{{media url="http://example.com/reference_img.bmp"}}
{{role "user"}}
What do the following images have in common?
{{#each image_urls}}
{{media url="this"}}
{{/each}}
{{#each inline_images}}
{{media type="mime_type" data="contents"}}
{{/each}}
Toolnutzung
Server-Prompt-Vorlagen unterstützen die folgenden Tools.
Wenn Sie möchten, dass Ihre Nutzer zusätzliche Informationen für die Anfrage an das Modell bereitstellen, verwenden Sie Eingabevariablen in der Server-Prompt-Vorlage zusammen mit der Eingabevalidierung.
Funktionsaufrufe
Vollständige Anleitung für Funktionsaufrufe mit Server-Prompt-Vorlagen
Code-Ausführung
Mit dem Tool Code-Ausführung kann das Modell Python-Code generieren und ausführen.
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
tools:
- codeExecution
---
Prompt und (falls zutreffend) Systemanweisungen
What is the sum of the first 50 prime numbers?
Generate and run code for the calculation, and make sure you get all 50.
URL-Kontext
Mit dem Tool URL-Kontext können Sie dem Modell zusätzlichen Kontext in Form von URLs bereitstellen. In diesem Beispiel wird auch gezeigt, wie Sie die Eingabevalidierung für URLs angeben können, wenn sie vom Nutzer bereitgestellt werden.
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
input:
schema:
url1:
type: string
pattern: '^https?://[\w.-]+\.[a-z]{2,}\S*$'
maxLength: 100
url2:
type: string
pattern: '^https?://[\w.-]+\.[a-z]{2,}\S*$'
maxLength: 100
tools:
- urlContext
---
Prompt und (falls zutreffend) Systemanweisungen
Compare the ingredients and cooking times from the recipes at {{url1}} and {{url2}}
Fundierung mit Google Search
Das Tool Fundierung mit
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
tools:
- googleSearch
---
Prompt und (falls zutreffend) Systemanweisungen
Who won the Euro 2024?
Fundierung mit Google Maps
Das Tool Fundierung mit
Wenn Sie das Tool googleMaps verwenden möchten, listen Sie es im Objekt tools des Frontmatters der Vorlage auf. Das folgende Beispiel zeigt einige zusätzliche optionale Konfigurationen:
Eingabevariablen aus dem clientseitigen Code zulassen und Eingabevalidierung und Schema für diese Eingabe durchführen (in diesem Beispiel eine
question).Konfigurieren Sie das
googleMaps-Tool, indem Sie die Koordinaten eines Standorts und/oder einen Sprachcode in Ihrem clientseitigen Code mit einemTemplateToolConfigangeben.
Unter der Beispielvorlage finden Sie einen einblendbaren Bereich mit clientseitigen Codebeispielen für die Arbeit mit diesen optionalen Konfigurationen.
Konfiguration (Frontmatter)
---
model: 'gemini-3.8-flash'
tools:
- googleMaps
input:
schema:
question: string
---
Prompt und (falls zutreffend) Systemanweisungen
{{role "system"}}
You are a helpful tour guide. Use the Google Maps tool with the provided coordinates to answer the user's question based on their location.
{{role "user"}}
{{question}}