Per Firebase AI Logic, la console Firebase fornisce un'interfaccia utente guidata per specificare i contenuti di un modello.
I modelli di prompt del server utilizzano una sintassi e un formato basati su Dotprompt. In questa pagina puoi trovare descrizioni dettagliate del formato e della sintassi del modello, insieme a esempi sia per Gemini sia per Imagen.
Di seguito sono riportati i componenti più importanti per una richiesta di esempio a un modello Gemini:
---
model: 'gemini-2.5-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}}.
La sezione superiore all'interno delle tre lineette contiene il nome del modello e, facoltativamente, qualsiasi configurazione del modello, convalida dell'input o schema che vuoi inviare nella richiesta. È scritto come coppie chiave/valore ed è comunemente chiamato frontmatter YAML.
Il corpo del modello contiene il prompt. Può anche includere facoltativamente istruzioni di sistema e valori di input (utilizzando la sintassi Handlebars).
Questa pagina fornisce descrizioni dettagliate del formato e della sintassi del modello, insieme a esempi, per quanto segue:
Gemini
Tutti gli esempi in questa sezione mostrano modelli che utilizzano gemini-2.5-flash, ma
puoi utilizzare qualsiasi modello Gemini supportato da Firebase AI Logic
(ad eccezione dei modelli Gemini Live).
Hello World
Ecco un esempio minimo di un modello di prompt del server:
Configurazione (frontespizio)
---
model: 'gemini-2.5-flash'
---
Prompt e istruzioni di sistema (se applicabili)
Write a story about a magic backpack.
Configurazione modello
Imposta una configurazione del modello per controllare il modo in cui il modello genera una risposta, ad esempio token di output massimi, temperatura, top-k e top-p.
Configurazione (frontespizio)
---
model: 'gemini-2.5-flash'
config:
candidateCount: 1
temperature: 0.9
topP: 0.1
topK: 16
maxOutputTokens: 200
stopSequences: ["red"]
---
Prompt e istruzioni di sistema (se applicabili)
Write a story about a magic backpack.
Istruzioni di sistema
Imposta le istruzioni di sistema per guidare il comportamento del modello. Li includi nel prompt:
Specifica le istruzioni di sistema utilizzando la sintassi
{{role "system"}}.Specifica il prompt di testo utilizzando la sintassi
{{role "user"}}.
Configurazione (frontespizio)
---
model: 'gemini-2.5-flash'
---
Prompt e istruzioni di sistema (se applicabili)
{{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.
Variabili di input
Alcuni prompt sono statici, ma spesso devi includere alcuni dati dell'utente come parte del prompt.
Puoi includere variabili di input dinamiche nel prompt utilizzando espressioni Handlebars, che sono contenute all'interno dei tag {{ }} nel formato {{variableName}} o {{object.propertyName}} (ad esempio, Hello, {{name}} from {{address.city}}).
Configurazione (frontespizio)
---
model: 'gemini-2.5-flash'
---
Prompt e istruzioni di sistema (se applicabili)
Create an example customer invoice for a customer named {{customerName}}.
Puoi fornire un valore predefinito nel modello, ma il valore di una variabile di input viene solitamente fornito dal client nell'ambito della richiesta.
Flussi di controllo (cicli e condizioni)
Per scrivere prompt più complessi, puoi utilizzare blocchi condizionali (come #if, else e #unless) e iterazioni (#each).
Puoi fornire informazioni contestuali aggiuntive come variabili con un prefisso speciale
@:
@first: true quando viene eseguita l'iterazione del primo elemento di un blocco#each.@last: true quando si itera l'ultimo elemento di un blocco#each.@index: indica la posizione dell'indice (in base zero) dell'elemento corrente.
Per informazioni su tutti gli helper logici integrati, consulta la documentazione di Handlebars.
Configurazione (frontespizio)
---
model: 'gemini-2.5-flash'
---
Prompt e istruzioni di sistema (se applicabili)
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}}
Tieni presente che le condizioni accettano solo un riferimento a una variabile, non qualsiasi tipo di espressione, ad esempio:
- Le seguenti opere:
{{#if isVipCustomer}} ... {{/if}} - La seguente operazione non funziona:
{{#if customer.type == 'vip'}} ... {{/if}}
Se la variabile è booleana, la condizione funziona come previsto. Se la variabile non è un valore booleano, la condizione è effettivamente un controllo "is-not-null". Può essere utile per gestire gli input facoltativi, ad esempio:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
Convalida dell'input e schema
Se hai dati provenienti dal client, ti consigliamo vivamente di utilizzare lo schema di input per proteggerti dall'injection di prompt e assicurarti che i dati trasmessi nella richiesta corrispondano alle tue aspettative.
Puoi fornire valori predefiniti nel caso in cui il cliente non ne fornisca uno.
Lo schema supporta i tipi scalari
string,integer,number,booleaneobject. Oggetti, array ed enumerazioni sono indicati da una parentesi dopo il nome del campo.Tutte le proprietà sono considerate obbligatorie, a meno che non le indichi come facoltative con
?. Quando una proprietà viene contrassegnata come facoltativa, viene anche resa annullabile per consentire ai LLM di restituire il valore null anziché omettere un campo.
Ecco un esempio di base per fornire lo schema di input. Poco più avanti puoi trovare uno schema più avanzato.
Configurazione (frontespizio)
---
model: 'gemini-2.5-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 e istruzioni di sistema (se applicabili)
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}}
Schema di output
Se vuoi che il modello generi
un output JSON strutturato,
puoi specificare uno schema di output. Se specifichi format: json, vincoli il modello a restituire sempre una risposta JSON che segue lo schema specificato.
Lo schema supporta i tipi scalari
string,integer,number,booleaneobject. Oggetti, array ed enumerazioni sono indicati da una parentesi dopo il nome del campo.Tutte le proprietà sono considerate obbligatorie, a meno che non le indichi come facoltative con
?. Quando una proprietà viene contrassegnata come facoltativa, viene anche resa annullabile per consentire ai LLM di restituire il valore null anziché omettere un campo.
Ecco un esempio di base per generare un output JSON strutturato. Poco più sotto troverai uno schema più avanzato.
Configurazione (frontespizio)
---
model: gemini-2.5-flash
output:
format: json
schema:
invoiceId: string
invoiceFile(object, an invoice file):
url?: string
contents: string
mimeType: string
---
Prompt e istruzioni di sistema (se applicabili)
Create an example customer invoice.
Input multimodale
I prompt multimodali inviati a un modello Gemini possono includere più tipi di input, inclusi file (come testo insieme a immagini, PDF, file di testo normale, audio e video).
Fornisci un file utilizzando il relativo URL con la sintassi
{{media url}}.Fornisci un file incorporato con la sintassi
{{media type="mime_type" data="contents"}}.
Ecco un esempio di base per fornire input multimodali. Poco più sotto puoi trovare un esempio più complesso.
Configurazione (frontespizio)
---
model: 'gemini-2.5-flash'
---
Prompt e istruzioni di sistema (se applicabili)
Describe this image
{{media type="mimeType" data="imageData"}}
Imagen (generazione di immagini)
Con la release iniziale, i template di prompt del server supportano la generazione di immagini utilizzando i modelli Imagen e un prompt di solo testo. Ricontrolla a breve per ricevere ulteriore assistenza, tra cui la modifica delle immagini con Imagen (quando utilizzi Vertex AI Gemini API).
Di base
Questo esempio mostra un modello di base per generare immagini con Imagen, con variabili di input e convalida dell'input simile a Gemini.
Configurazione (frontespizio)
---
model: 'imagen-4.0-generate-001'
input:
schema:
prompt: 'string'
---
Prompt e istruzioni di sistema (se applicabili)
Create an image containing {{prompt}}
Avanzato
Questo esempio mostra come aggiungere la configurazione del modello e utilizzare funzionalità più avanzate nel prompt, come variabili di input, convalida dell'input e flussi di controllo simili a Gemini.
Configurazione (frontespizio)
---
model: 'imagen-4.0-fast-generate-001'
config:
sampleCount: 1
aspectRatio: "16:9"
personGeneration: dont_allow
includeRaiReason: true
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 e istruzioni di sistema (se applicabili)
A {{style}} of {{subject}}{{#if context}}{{context}}{{/if}}.