Für Firebase AI Logic bietet die Firebase-Konsole 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 die Modellkonfiguration, die Eingabevalidierung oder das Schema, das Sie in der Anfrage senden möchten. Die Daten werden in Schlüssel/Wert-Paaren angeordnet und werden im Allgemeinen als Frontmatter bezeichnet.
Der Text der Vorlage enthält den Prompt. Optional können auch Systemanweisungen und Eingabewerte (mit 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 einfaches Beispiel für eine Server-Prompt-Vorlage:
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 Weise 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 denkbezogene Konfiguration für Modelle an, die das Denken unterstützen.
Konfiguration (Frontmatter)
Gemini 3.x und neuere Modelle (Denkaufwand)
--- 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 fügen sie als Teil des Prompts hinzu:
Geben Sie die Systemanweisungen mit der Syntax
{{role "system"}}an.Geben Sie den Text-Prompt mit der Syntax
{{role "user"}}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 einige Daten des Nutzers in den Prompt einbeziehen.
Sie können dynamische Eingabevariablen in den Prompt einfügen, indem Sie Handlebars-Ausdrücke verwenden, die in {{ }}-Tags im Format {{variableName}} oder {{object.propertyName}} enthalten sind (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}} - Folgendes 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. Dies kann nützlich sein, um optionale Eingaben zu verarbeiten, z. B.:
{{#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 Enums 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 weiter 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 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 das Generieren einer strukturierten JSON-Ausgabe. Ein komplexeres Schema finden Sie weiter 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, darunter 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 ist ein einfaches Beispiel für die Bereitstellung einer multimodalen Eingabe. Ein komplexeres Beispiel finden Sie weiter 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)
Hier ist ein komplexeres Beispiel für die Bereitstellung multimodaler Eingaben.
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 zur 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 dieser Eingabe ausführen (in diesem Beispiel ein
question).Konfigurieren Sie das
googleMaps-Tool, indem Sie in Ihrem clientseitigen Code mithilfe einesTemplateToolConfigdie Koordinaten eines Standorts und/oder einen Sprachcode angeben.
Unter der Beispielvorlage finden Sie einen maximierbaren 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}}