W przypadku Firebase AI Logic konsola Firebase udostępnia interfejs z instrukcjami, który pomaga określić zawartość szablonu.
Szablony promptów serwera używają składni i formatu opartego na Dotprompt. Na tej stronie znajdziesz szczegółowe opisy formatu i składni szablonu oraz przykłady dla Gemini i Imagen.
Oto najważniejsze komponenty przykładowego żądania do modelu Gemini:
---
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}}.
Górna sekcja w potrójnym myślniku zawiera nazwę modelu oraz opcjonalnie konfigurację modelu, weryfikację danych wejściowych lub schemat, które chcesz wysłać w żądaniu. Jest on zapisany jako pary klucz-wartość i jest powszechnie nazywany frontmatter w YAML.
Treść szablonu zawiera prompt. Może też opcjonalnie zawierać instrukcje systemowe i wartości wejściowe (przy użyciu składni Handlebars).
Na tej stronie znajdziesz szczegółowe opisy formatu i składni szablonu oraz przykłady dotyczące tych elementów:
Imagen (wycofane)
Gemini
Wszystkie przykłady w tej sekcji pokazują szablony, które używają modelu gemini-3-flash-preview, ale możesz użyć dowolnego modelu Gemini obsługiwanego przez Firebase AI Logic (z wyjątkiem modeli Gemini Live).
Hello world
Oto krótki przykład szablonu prompta serwera:
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Write a story about a magic backpack.
Kontrolowanie generowania odpowiedzi
Możesz kontrolować generowanie odpowiedzi na różne sposoby w zależności od zastosowania i poziomu kontroli, jakiego potrzebujesz.
Konfiguracja modelu
Skonfiguruj model, aby określić, jak ma generować odpowiedź, np. maksymalną liczbę tokenów wyjściowych, temperaturę, górne k i górne p.
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
config:
candidateCount: 1
temperature: 0.9
topP: 0.1
topK: 16
maxOutputTokens: 200
stopSequences: ["red"]
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Write a story about a magic backpack.
Konfiguracja trybu myślenia
Określ konfigurację związaną z myśleniem w przypadku modeli, które obsługują myślenie.
Konfiguracja (frontmatter)
Gemini 3 i nowsze (poziomy myślenia)
--- model: 'gemini-3-flash-preview' config: thinkingConfig: thinkingLevel: medium includeThoughts: true ---Gemini 2.5 modele (budżety na myślenie)
--- model: 'gemini-3-flash-preview' config: thinkingConfig: thinkingBudget: 1024 includeThoughts: true ---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Solve x^2 + 4x + 4 = 0
Ustawienia bezpieczeństwa
Użyj ustawień bezpieczeństwa, aby dostosować prawdopodobieństwo otrzymania odpowiedzi, które mogą być uznane za szkodliwe.
Konfiguracja (frontmatter)
Przykład z 1 ustawieniem bezpieczeństwa:
---
model: 'gemini-3-flash-preview'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
---
Przykład z kilkoma ustawieniami bezpieczeństwa:
---
model: 'gemini-3-flash-preview'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
- category: HARM_CATEGORY_HATE_SPEECH
threshold: BLOCK_MEDIUM_AND_ABOVE
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Write a story about a magic backpack.
Instrukcje systemowe
Ustaw instrukcje systemowe, aby sterować działaniem modelu. Dodajesz je do promptu:
Określ instrukcje systemowe, używając składni
{{role "system"}}.Określ prompt tekstowy, używając składni
{{role "user"}}.
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
{{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.
Zmienne wejściowe
Niektóre prompty są statyczne, ale często musisz uwzględnić w nich dane użytkownika.
W prompcie możesz uwzględnić dynamiczne zmienne wejściowe, używając wyrażeń Handlebars, które znajdują się w tagach {{ }} w formacie {{variableName}} lub {{object.propertyName}} (np. Hello, {{name}} from {{address.city}}).
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Create an example customer invoice for a customer named {{customerName}}.
W szablonie możesz podać wartość domyślną, ale wartość zmiennej wejściowej jest zwykle podawana przez klienta w ramach żądania.
Przepływy sterujące (pętle i warunki)
Aby pisać bardziej złożone prompty, możesz używać bloków warunkowych (np. #if, else i #unless) oraz iteracji (#each).
Możesz podać dodatkowe informacje kontekstowe jako zmienne ze specjalnym prefiksem @:
@first: wartość true, gdy iterowany jest pierwszy element bloku#each.@last: wartość true, gdy iterowany jest ostatni element bloku#each.@index: zwraca indeks (liczony od zera) bieżącego elementu.
Więcej informacji o wszystkich wbudowanych pomocnikach logicznych znajdziesz w dokumentacji Handlebars.
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
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}}
Pamiętaj, że warunki akceptują tylko odwołanie do zmiennej, a nie żaden typ wyrażenia, np.:
- Działa to w przypadku tych elementów:
{{#if isVipCustomer}} ... {{/if}} - To nie działa:
{{#if customer.type == 'vip'}} ... {{/if}}
Jeśli zmienna jest wartością logiczną, warunek działa zgodnie z oczekiwaniami. Jeśli zmienna nie jest wartością logiczną, warunek jest w praktyce sprawdzaniem „is-not-null”. Może to być przydatne w przypadku obsługi opcjonalnych danych wejściowych, np.:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
Weryfikacja danych wejściowych i schemat
Jeśli dane pochodzą od klienta, zdecydowanie zalecamy użycie schematu danych wejściowych, aby chronić się przed wstrzykiwaniem promptów i mieć pewność, że dane przekazywane w żądaniu są zgodne z Twoimi oczekiwaniami.
Możesz podać wartości domyślne na wypadek, gdyby klient nie podał żadnej wartości.
Schemat obsługuje typy skalarne
string,integer,number,booleaniobject. Obiekty, tablice i wyliczenia są oznaczane nawiasem po nazwie pola.Wszystkie właściwości są uważane za wymagane, chyba że oznaczysz je jako opcjonalne za pomocą symbolu
?. Gdy właściwość jest oznaczona jako opcjonalna, staje się też dopuszczająca wartość null, co zapewnia większą swobodę w przypadku dużych modeli językowych, które mogą zwracać wartość null zamiast pomijać pole.
Oto podstawowy przykład schematu danych wejściowych. Bardziej zaawansowany schemat znajdziesz poniżej.
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
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 i (w stosownych przypadkach) instrukcje systemowe
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}}
Schemat wyjściowy
Jeśli chcesz, aby model generował uporządkowane dane wyjściowe JSON, możesz określić schemat wyjściowy. Określając format: json, ograniczasz model tak, aby zawsze zwracał odpowiedź w formacie JSON zgodną z określonym schematem.
Schemat obsługuje typy skalarne
string,integer,number,booleaniobject. Obiekty, tablice i wyliczenia są oznaczane nawiasem po nazwie pola.Wszystkie właściwości są uważane za wymagane, chyba że oznaczysz je jako opcjonalne za pomocą symbolu
?. Gdy właściwość jest oznaczona jako opcjonalna, staje się też dopuszczająca wartość null, co zapewnia większą swobodę w przypadku dużych modeli językowych, które mogą zwracać wartość null zamiast pomijać pole.
Oto podstawowy przykład generowania uporządkowanych danych wyjściowych w formacie JSON. Bardziej zaawansowany schemat znajdziesz poniżej.
Konfiguracja (frontmatter)
---
model: gemini-3-flash-preview
output:
format: json
schema:
invoiceId: string
invoiceFile(object, an invoice file):
url?: string
contents: string
mimeType: string
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Create an example customer invoice.
Multimodalne wprowadzanie danych
Prompty multimodalne wysyłane do modelu Gemini mogą zawierać różne typy danych wejściowych, w tym pliki (np. tekst wraz z obrazami, plikami PDF, plikami tekstowymi, dźwiękiem i filmem).
Podaj plik, używając jego adresu URL w składni
{{media url}}.Podaj plik wbudowany w składni
{{media type="mime_type" data="contents"}}.
Podstawowy przykład (dane wejściowe multimodalne)
Oto podstawowy przykład podawania danych multimodalnych. Bardziej złożony przykład znajdziesz poniżej.
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Describe this image
{{media type="mimeType" data="imageData"}}
Złożony przykład (dane wejściowe multimodalne)
Oto bardziej złożony przykład podawania danych multimodalnych.
Konfiguracja (frontmatter)
---
model: gemini-3-flash-preview
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 i (w stosownych przypadkach) instrukcje systemowe
{{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}}
Korzystanie z narzędzi
Szablony promptów serwera obsługują te narzędzia: Wywoływanie funkcji nie jest jeszczeobsługiwane, ale wkrótce się to zmieni.
Jeśli chcesz, aby użytkownicy podawali dodatkowe informacje w prośbie do modelu, użyj zmiennych wejściowych w szablonie promptu serwera wraz z weryfikacją danych wejściowych.
Wykonanie kodu
Narzędzie wykonywanie kodu umożliwia modelowi generowanie i uruchamianie kodu w Pythonie.
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
tools:
- codeExecution
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
What is the sum of the first 50 prime numbers?
Generate and run code for the calculation, and make sure you get all 50.
Kontekst adresu URL
Narzędzie URL context umożliwia przekazywanie do modelu dodatkowych informacji w postaci adresów URL. Ten przykład pokazuje też, jak określić weryfikację danych wejściowych w przypadku adresów URL podanych przez użytkownika.
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
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 i (w stosownych przypadkach) instrukcje systemowe
Compare the ingredients and cooking times from the recipes at {{url1}} and {{url2}}
Powiązanie ze źródłem informacji przy użyciu wyszukiwarki Google
Narzędzie Powiązanie ze źródłem informacji przy użyciu wyszukiwarki Google łączy model z dostępnymi publicznie treściami internetowymi w czasie rzeczywistym.
Konfiguracja (frontmatter)
---
model: 'gemini-3-flash-preview'
tools:
- googleSearch
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Who won the Euro 2024?
Imagen (generowanie obrazów) (wycofane)
W pierwszej wersji szablony promptów serwera obsługują generowanie obrazów za pomocą modeli Imagen i promptu zawierającego tylko tekst. Wkrótce udostępnimy więcej informacji, w tym o edytowaniu obrazów za pomocą Imagen (podczas korzystania z Vertex AI Gemini API).
Podstawowe
Ten przykład pokazuje podstawowy szablon generowania obrazów za pomocą Imagen z zmiennymi wejściowymi i weryfikacją danych wejściowych podobną do Gemini.
Konfiguracja (frontmatter)
---
model: 'imagen-4.0-generate-001'
input:
schema:
prompt: 'string'
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
Create an image containing {{prompt}}
Zaawansowane
Ten przykład pokazuje, jak dodać konfigurację modelu, określić ustawienia bezpieczeństwa i użyć w prompcie bardziej zaawansowanych funkcji, takich jak zmienne wejściowe, weryfikacja danych wejściowych i przepływy sterowania podobne do Gemini.
Konfiguracja (frontmatter)
---
model: 'imagen-4.0-fast-generate-001'
config:
sampleCount: 1
aspectRatio: "16:9"
personGeneration: dont_allow
includeRaiReason: true
safetySetting: block_medium_and_above
input:
schema:
style(enum, The style of image): [photo, sketch, painting]
subject: string, The object or animal or scenery to generate.
context?: string, Optional background or context description.
default:
style: photo
---
Prompt i (w stosownych przypadkach) instrukcje systemowe
A {{style}} of {{subject}}{{#if context}}{{context}}{{/if}}.