Para Firebase AI Logic, o console Firebase oferece uma interface guiada para você especificar o conteúdo de um modelo.
Os modelos de comandos do servidor usam uma sintaxe e um formato baseados em Dotprompt. Nesta página, você encontra descrições detalhadas do formato e da sintaxe do modelo, além de exemplos para Gemini e Imagen.
Confira os componentes mais importantes de um exemplo de solicitação para um modelo 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}}.
A seção superior dentro dos três traços contém o nome do modelo e, opcionalmente, qualquer configuração, validação de entrada ou esquema que você queira enviar na solicitação. Ele é escrito como pares de chave-valor e é comumente chamado de frontmatter do YAML.
O corpo do modelo contém o comando. Também é possível incluir instruções do sistema e valores de entrada (usando a sintaxe Handlebars).
Esta página oferece descrições detalhadas do formato e da sintaxe do modelo, além de exemplos para o seguinte:
Gemini
Todos os exemplos nesta seção mostram modelos que usam gemini-2.5-flash, mas
você pode usar qualquer modelo Gemini compatível com Firebase AI Logic
(exceto os modelos do Gemini Live).
Hello World
Confira um exemplo mínimo de um modelo de solicitação do servidor:
Configuração (frontmatter)
---
model: 'gemini-2.5-flash'
---
Comando e instruções do sistema (conforme aplicável)
Write a story about a magic backpack.
Configuração do modelo
Defina uma configuração de modelo para controlar como o modelo gera uma resposta, como máximo de tokens de saída, temperatura, top-K e top-P.
Configuração (frontmatter)
---
model: 'gemini-2.5-flash'
config:
candidateCount: 1
temperature: 0.9
topP: 0.1
topK: 16
maxOutputTokens: 200
stopSequences: ["red"]
---
Comando e instruções do sistema (conforme aplicável)
Write a story about a magic backpack.
Instruções do sistema
Defina instruções do sistema para orientar o comportamento do modelo. Você os inclui como parte do comando:
Especifique as instruções do sistema usando a sintaxe
{{role "system"}}.Especifique o comando de texto usando a sintaxe
{{role "user"}}.
Configuração (frontmatter)
---
model: 'gemini-2.5-flash'
---
Comando e instruções do sistema (conforme aplicável)
{{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.
Variáveis de entrada
Alguns comandos são estáticos, mas muitas vezes é necessário incluir dados do usuário como parte do comando.
É possível incluir variáveis de entrada dinâmicas no comando usando expressões Handlebars, que estão contidas em tags {{ }} no formato {{variableName}} ou {{object.propertyName}} (por exemplo, Hello, {{name}} from {{address.city}}).
Configuração (frontmatter)
---
model: 'gemini-2.5-flash'
---
Comando e instruções do sistema (conforme aplicável)
Create an example customer invoice for a customer named {{customerName}}.
É possível fornecer um valor padrão no modelo, mas o valor de uma variável de entrada geralmente é fornecido pelo cliente como parte da solicitação.
Fluxos de controle (loops e condicionais)
Para escrever comandos mais complexos, use blocos condicionais (como #if, else e #unless) e iteração (#each).
Você pode fornecer mais informações contextuais como variáveis com um prefixo @ especial:
@first: verdadeiro ao iterar o primeiro item de um bloco#each.@last: verdadeiro ao iterar o último item de um bloco#each.@index: fornece a posição do índice (base zero) do elemento atual.
Consulte a documentação do Handlebars para informações sobre todos os auxiliares lógicos integrados.
Configuração (frontmatter)
---
model: 'gemini-2.5-flash'
---
Comando e instruções do sistema (conforme aplicável)
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}}
As condições aceitam apenas uma referência de variável, não qualquer tipo de expressão. Por exemplo:
- O seguinte funciona:
{{#if isVipCustomer}} ... {{/if}} - O seguinte não funciona:
{{#if customer.type == 'vip'}} ... {{/if}}
Se a variável for booleana, a condição vai funcionar como esperado. Se a variável não for booleana, a condição será efetivamente uma verificação "is-not-null". Isso pode ser útil para processar entradas opcionais, por exemplo:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
Validação de entrada e esquema
Se você tiver dados do cliente, recomendamos usar o esquema de entrada para ajudar a proteger contra injeção de comandos e garantir que os dados transmitidos na solicitação correspondam às suas expectativas.
É possível fornecer valores padrão caso o cliente não envie um valor.
O esquema oferece suporte aos tipos escalares
string,integer,number,booleaneobject. Objetos, matrizes e tipos enumerados são indicados por um parêntese após o nome do campo.Todas as propriedades são consideradas obrigatórias, a menos que você as denote como opcionais com
?. Quando uma propriedade é marcada como opcional, ela também é anulável para oferecer mais tolerância para que os LLMs retornem um valor nulo em vez de omitir um campo.
Confira um exemplo básico de como fornecer um esquema de entrada. Confira um esquema mais avançado logo abaixo.
Configuração (frontmatter)
---
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
---
Comando e instruções do sistema (conforme aplicável)
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}}
Esquema de saída
Se você quiser que o modelo gere uma saída JSON estruturada, especifique um esquema de saída. Ao especificar format: json, você restringe o modelo para que ele sempre retorne uma resposta JSON que siga o esquema especificado.
O esquema oferece suporte aos tipos escalares
string,integer,number,booleaneobject. Objetos, matrizes e tipos enumerados são indicados por um parêntese após o nome do campo.Todas as propriedades são consideradas obrigatórias, a menos que você as denote como opcionais com
?. Quando uma propriedade é marcada como opcional, ela também é anulável para oferecer mais tolerância para que os LLMs retornem um valor nulo em vez de omitir um campo.
Confira um exemplo básico para gerar saída JSON estruturada. Confira um esquema mais avançado logo abaixo.
Configuração (frontmatter)
---
model: gemini-2.5-flash
output:
format: json
schema:
invoiceId: string
invoiceFile(object, an invoice file):
url?: string
contents: string
mimeType: string
---
Comando e instruções do sistema (conforme aplicável)
Create an example customer invoice.
entrada multimodal
Os comandos multimodais enviados a um modelo do Gemini podem incluir vários tipos de entrada, incluindo arquivos (como texto com imagens, PDFs, arquivos de texto simples, áudio e vídeo).
Forneça um arquivo usando o URL dele com a sintaxe
{{media url}}.Forneça um arquivo inline com a sintaxe
{{media type="mime_type" data="contents"}}.
Confira um exemplo básico de como fornecer entrada multimodal. Confira um exemplo mais complexo logo abaixo.
Configuração (frontmatter)
---
model: 'gemini-2.5-flash'
---
Comando e instruções do sistema (conforme aplicável)
Describe this image
{{media type="mimeType" data="imageData"}}
Imagen (geração de imagens)
Na versão inicial, os modelos de comandos do servidor aceitam gerar imagens usando modelos Imagen e um comando somente de texto. Volte em breve para mais suporte, incluindo edição de imagens com o Imagen (ao usar o Vertex AI Gemini API).
Básico
Este exemplo mostra um modelo básico para gerar imagens com Imagen, com variáveis de entrada e validação de entrada semelhante a Gemini.
Configuração (frontmatter)
---
model: 'imagen-4.0-generate-001'
input:
schema:
prompt: 'string'
---
Comando e instruções do sistema (conforme aplicável)
Create an image containing {{prompt}}
Avançado
Este exemplo mostra como adicionar uma configuração de modelo e usar recursos mais avançados no comando, como variáveis de entrada, validação de entrada e fluxos de controle semelhantes a Gemini.
Configuração (frontmatter)
---
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
---
Comando e instruções do sistema (conforme aplicável)
A {{style}} of {{subject}}{{#if context}}{{context}}{{/if}}.