In jeder Anfrage an ein Modell senden Sie einen Prompt und optional ein Schema und Konfigurationen, um die Antwort des Modells zu steuern. Wenn Sie Firebase AI Logic verwenden, können Sie alle diese Informationen direkt aus Ihrem Clientcode senden oder sie serverseitig mit Server-Promptvorlagen angeben.
Wenn Sie Server-Promptvorlagen verwenden, speichern Sie Ihren Prompt, Ihr Schema und Ihre Konfigurationen serverseitig. Ihre App übergibt vom Client an den Server nur den Schlüssel (die Vorlagen-ID), der auf eine bestimmte Vorlage verweist, sowie die erforderlichen Eingaben für diese Vorlage.
Wenn Sie Server-Promptvorlagen verwenden, speichern Sie Ihren Prompt und Ihre Konfigurationen serverseitig und geben in der Codebasis Ihrer App nur einen Schlüssel (die Vorlagen-ID) an. Diese Vorgehensweise bietet folgende Vorteile:
Schutz vor der Offenlegung Ihres Prompts auf der Clientseite
Prompt und Konfiguration aktualisieren, ohne eine neue App-Version zu veröffentlichen
In dieser Anleitung wird beschrieben, wie Sie Server-Promptvorlagen verwenden.
Zur Gesamtübersicht springen Zur detaillierten Anleitung springen
Unterstützte Modelle und Funktionen
Sie können Server-Promptvorlagen mit allen Gemini und Imagen Modellen verwenden, Firebase AI Logic die unterstützt werden, mit Ausnahme von Gemini Live-Modellen.
Sehen Sie sich die Liste der noch nicht unterstützten Funktionen an.
Gesamtübersicht
Der grundlegende Workflow für die Verwendung von Server-Promptvorlagen sieht so aus:
Erstellen Sie die Vorlage mit der geführten UI in der Firebase Console.
Testen Sie die Vorlage in einer echten Anfrage mit der Testfunktion in der Firebase Konsole.
Greifen Sie mit
templateGenerativeModelaus dem Code Ihrer App auf die Vorlage zu.
Grundlegendes Format einer Server-Promptvorlage
Für Firebase AI Logic, die Firebase Konsole bietet eine geführte UI, mit der Sie die Frontmatter und den Inhalt der Vorlage angeben können.
Server-Promptvorlagen verwenden eine auf Dotprompt basierende Syntax und ein entsprechendes Format. Weitere Informationen finden Sie unter Vorlagenformat, ‑syntax und ‑beispiele.
Die folgende Beispielvorlage zeigt die wichtigsten Komponenten einer Vorlage für eine Beispielanfrage an ein Gemini Modell:
---
model: 'gemini-3-flash-preview'
---
{{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 zwischen den dreifachen Bindestrichen enthält den Modellnamen sowie optional eine Modellkonfiguration, eine Eingabevalidierung oder ein Schema, das Sie in der Anfrage senden möchten. Er wird als Schlüssel/Wert-Paare geschrieben und wird üblicherweise als YAML-Frontmatter bezeichnet.
Der Textkörper der Vorlage enthält den Prompt. Optional können auch Systemanweisungen und Eingabewerte (mit Handlebars Syntax) enthalten sein.
Vorlage im Code verwenden
|
Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen. |
Der folgende Beispiel-Clientcode zeigt, wie Sie die Vorlage in Ihrem Code verwenden:
Swift
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()
let customerName = "Jane"
do {
let response = try await model.generateContent(
// Specify your template ID
templateID: "my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
inputs: [
"customerName": customerName
]
)
if let text = response.text {
print("Response Text: \(text)")
}
} catch {
print("An error occurred: \(error)")
}
print("\n")
Kotlin
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).templateGenerativeModel()
val customerName = "Jane"
val response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf(
"customerName" to customerName
)
)
val text = response.text
println(text)
Java
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();
TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);
String customerName = "Jane";
Future response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf("customerName", customerName)
);
addCallback(response,
new FutureCallback() {
public void onSuccess(GenerateContentResponse result) {
System.out.println(result.getText());
}
public void onFailure(Throwable t) {
reportError(t);
}
}
executor);
Web
// ...
// Initialize the Gemini Developer API backend service
const ai = getAI(app, { backend: new GoogleAIBackend() });
// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);
const customerName = 'Jane';
const result = await model.generateContent(
// Specify your template ID
'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template
{
customerName: customerName,
}
);
const response = result.response;
const text = response.text();
Dart
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
var _model = FirebaseAI.googleAI().templateGenerativeModel()
var customerName = 'Jane';
var response = await _model.generateContent(
// Specify your template ID
'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template
inputs: {
'customerName': customerName,
},
);
var text = response?.text;
print(text);
Unity
// ...
// Initialize the Gemini Developer API backend service
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `TemplateGenerativeModel` instance
var model = firebaseAI.GetTemplateGenerativeModel();
var customerName = "Jane";
try
{
var response = await model.GenerateContentAsync(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template
new Dictionary<string, object> {
{ "customerName", customerName },
}
);
Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e) {
Debug.LogError($"An error occurred: {e.Message}");
}
Detaillierte Anleitung
In diesem Abschnitt finden Sie eine detaillierte Anleitung zum Erstellen, Testen und Verwenden von Server-Promptvorlagen.
Hinweis
Falls noch nicht geschehen, lesen Sie die Anleitung für die ersten Schritte, in der beschrieben wird, wie Sie Ihr Firebase-Projekt einrichten, Ihre App mit Firebase verbinden, das SDK hinzufügen, den Backend-Dienst für Ihren ausgewählten Gemini API Anbieter initialisieren und eine
GenerativeModelInstanz erstellen.Prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Erstellen und Verwalten von Server-Promptvorlagen haben. Standardmäßig sind alle diese Berechtigungen in der Rolle „Inhaber“ enthalten.
Wenn Sie die Vertex AI Gemini API und Ihr Anwendungsfall standortbasierte Einschränkungen erfordert verwenden, unterstützen wir erweiterte Workflows für Vorlagen.
Schritt 1: Server-Promptvorlage erstellen
In den meisten Anwendungsfällen erstellen und verwalten Sie Server-Promptvorlagen in der Firebase Konsole.
Rufen Sie in der Firebase Console den Tab AI Services > AI Logic > Promptvorlagen auf.
Klicken Sie auf Neue Vorlage erstellen und wählen Sie eine Startervorlage aus.
Diese Startervorlagen bieten das Format und die Syntax für einige häufige Anwendungsfälle. Unabhängig davon, welche Option Sie auswählen, können Sie die Vorlage jedoch vollständig an Ihre Bedürfnisse anpassen.
In dieser Anleitung für die ersten Schritte wird davon ausgegangen, dass Sie die Option
Input + System Instructionsausgewählt haben.
Geben Sie die Kennzeichnungen der Vorlage ein:
Vorlagenname: Dies ist ein Anzeigename für die Vorlage (z. B.
My First Template). Er ist nur in Firebase-Oberflächen wie der Firebase Console sichtbar.Vorlagen-ID: Dies muss eine eindeutige ID für die Vorlage in Ihrem Firebase-Projekt sein (z. B.
). Sie verweisen in der Anfrage aus Ihrer App auf diese ID.my-first-template-v1-0-0Wir empfehlen die Verwendung eines Versionierungssystems für Ihre Vorlagen-IDs.
Vorlagen-IDs dürfen maximal 63 Zeichen lang sein und Kleinbuchstaben, Ziffern und Bindestriche enthalten.
Ändern Sie den Abschnitt Konfiguration (Frontmatter) der Vorlage nach Bedarf.
Dieser Abschnitt muss mindestens einen Modellnamen enthalten, z. B.:
--- model: 'gemini-3-flash-preview' ---Optional können Sie auch die Konfiguration des Modells und beliebige Ein- und Ausgabesteuerelemente usw. angeben. Weitere Informationen und Optionen finden Sie unter Vorlagenformat, ‑syntax und ‑beispiele.
Ändern Sie den Abschnitt Prompt und (falls zutreffend) Systemanweisungen der Vorlage nach Bedarf.
Dieser Abschnitt muss mindestens den Text-Prompt enthalten, der an das Modell gesendet werden soll.
Write a story about a magic backpack.Sie können auch komplexere Prompts erstellen, z. B. mit den folgenden Optionen. Weitere Informationen und Optionen finden Sie unter Vorlagenformat, ‑syntax und ‑beispiele.
(Optional und falls zutreffend) Geben Sie Systemanweisungen mit der
{{role "system"}}Syntax und den Text Prompt mit der{{role "user"}}Syntax an.(Optional) Geben Sie Eingabevariablen mit der Handlebars-Syntax an (z. B.
{{customerName}}). Sie können in der Vorlage einen Standardwert angeben, aber der Wert dieser Eingabevariablen wird normalerweise in der Anfrage übergeben.
{{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}}.
Schritt 2: Vorlage in der Firebase Console testen
Die Firebase Console bietet eine Testfunktion für Ihre Vorlage. So können Sie sehen, was passiert, wenn Ihre Vorlage verwendet wird – sowohl das Format der Anfrage als auch die Ausgabe einer tatsächlichen Anfrage.
Klicken Sie auf Vorlage speichern , damit Sie Ihre Vorlage testen können.
Sie können die Vorlage später jederzeit bearbeiten oder sogar löschen. Der einzige Wert, den Sie später nicht mehr ändern können, ist die Vorlagen-ID.
Wenn Ihr Prompt Eingabevariablen verwendet, geben Sie Testwerte in das Feld Testeingabe ein. Für dieses Beispiel:
{ "customerName": "Jane" }Wenn in Ihrem Firebase Projekt mehrere Gemini API Anbieter aktiviert sind, können Sie auswählen, welcher für die Testanfrage verwendet werden soll. Wenn diese Option in der Console angezeigt wird, wählen Sie entweder
Gemini Developer APIoderVertex AI Gemini APIaus.Beachten Sie, dass diese Auswahl nur für Anfragen gilt, die über die Firebase Testfunktion der Console gesendet werden. In der tatsächlichen Anfrage aus Ihrer App, geben Sie den ausgewählten Gemini API Anbieter wie bei jeder anderen Anfrage an.
Klicken Sie auf die Schaltfläche Formatierte Testanfrage erstellen.
Sehen Sie sich die resultierende formatierte Testanfrage auf der rechten Seite des Bildschirms an und wiederholen Sie die Schritte für alle Felder Ihrer Vorlage.
Wenn Sie mit der formatierten Testanfrage zufrieden sind, klicken Sie auf die Schaltfläche Prompttest ausführen.
Sehen Sie sich die resultierende Testantwort auf der rechten Seite des Bildschirms an und wiederholen Sie die Schritte für alle Felder Ihrer Vorlage.
Wenn Sie bereit sind, über den Code Ihrer App auf die Vorlage zuzugreifen, sperren Sie die Vorlage indem Sie auf das
Sperr symbol oben rechts in der Vorlage klicken.Klicken Sie auf Schließen , um die Bearbeitung zu beenden.
Schritt 3: Über den Code auf die Vorlage zugreifen
|
Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen. |
Eine Anfrage mit einer Server-Promptvorlage ähnelt anderen Anfragen, mit den folgenden Anpassungen:
- Verwenden Sie ein
templateGenerativeModel(oder bei BedarftemplateImagenModel). - Geben Sie die Vorlagen-ID an.
- Geben Sie die Werte aller variablen Eingaben an, die für Ihre Vorlage erforderlich sind.
Beachten Sie, dass Sie nach dem Erstellen oder Aktualisieren Ihrer Vorlage möglicherweise einige Minuten warten müssen, bis die Vorlage auf allen Firebase-Servern verfügbar ist, bevor Sie über den Code darauf zugreifen können.
Swift
Erstellen Sie eine templateGenerativeModel-Instanz (oder templateImagenModel), um eine Vorlage in Ihrer Anfrage zu verwenden.
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()
let customerName = "Jane"
do {
let response = try await model.generateContent(
// Specify your template ID
templateID: "my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
inputs: [
"customerName": customerName
]
)
if let text = response.text {
print("Response Text: \(text)")
}
} catch {
print("An error occurred: \(error)")
}
print("\n")
Kotlin
Erstellen Sie eine templateGenerativeModel-Instanz (oder templateImagenModel), um eine Vorlage in Ihrer Anfrage zu verwenden.
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).templateGenerativeModel()
val customerName = "Jane"
val response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf(
"customerName" to customerName
)
)
val text = response.text
println(text)
Java
Erstellen Sie eine templateGenerativeModel-Instanz (oder templateImagenModel), um eine Vorlage in Ihrer Anfrage zu verwenden.
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();
TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);
String customerName = "Jane";
Future response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf("customerName", customerName)
);
addCallback(response,
new FutureCallback() {
public void onSuccess(GenerateContentResponse result) {
System.out.println(result.getText());
}
public void onFailure(Throwable t) {
reportError(t);
}
}
executor);
Web
Erstellen Sie eine templateGenerativeModel-Instanz (oder templateImagenModel), um eine Vorlage in Ihrer Anfrage zu verwenden.
// ...
// Initialize the Gemini Developer API backend service
const ai = getAI(app, { backend: new GoogleAIBackend() });
// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);
const customerName = 'Jane';
const result = await model.generateContent(
// Specify your template ID
'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template
{
customerName: customerName,
}
);
const response = result.response;
const text = response.text();
Dart
Das Flutter-Plug-in unterstützt bald Server-Promptvorlagen.
Erstellen Sie eine templateGenerativeModel-Instanz (oder templateImagenModel), um eine Vorlage in Ihrer Anfrage zu verwenden.
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
var _model = FirebaseAI.googleAI().templateGenerativeModel()
var customerName = 'Jane';
var response = await _model.generateContent(
// Specify your template ID
'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template
inputs: {
'customerName': customerName,
},
);
var text = response?.text;
print(text);
Unity
Erstellen Sie eine templateGenerativeModel-Instanz (oder templateImagenModel), um eine Vorlage in Ihrer Anfrage zu verwenden.
// ...
// Initialize the Gemini Developer API backend service
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `TemplateGenerativeModel` instance
var model = firebaseAI.GetTemplateGenerativeModel();
var customerName = "Jane";
try
{
var response = await model.GenerateContentAsync(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template
new Dictionary<string, object> {
{ "customerName", customerName },
}
);
Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e) {
Debug.LogError($"An error occurred: {e.Message}");
}
Nächste Schritte
Best Practices und Überlegungen zur Verwendung von Server-Promptvorlagen
Details zum Vorlagenformat und zur Vorlagensyntax sowie Beispiele
Informationen zum Verwalten von Vorlagen, einschließlich Bearbeitung, Sperren und Versionsverwaltung
Informationen zu erweiterten Workflows, z. B. zum programmatischen Arbeiten mit Vorlagen über unsere REST API oder zum Bereitstellen von Vorlagen an bestimmten Standorten