Começar a usar modelos de comandos do servidor


Em cada solicitação a um modelo, você envia um comando e, opcionalmente, um esquema e configurações para controlar a resposta do modelo. Ao usar Firebase AI Logic, é possível enviar todas essas informações diretamente do seu código do cliente ou especificar essas informações no lado do servidor usando modelos de comandos do servidor.

Ao usar modelos de comandos do servidor, você armazena o comando, o esquema e as configurações no lado do servidor, e seu app passa do cliente para o servidor apenas a chave (o ID do modelo) que faz referência a um modelo específico, bem como as entradas necessárias para esse modelo.

Ao usar modelos de comandos do servidor, você armazena o comando e as configurações no lado do servidor e só fornece uma chave (o ID do modelo) na base de código do app. Confira alguns benefícios dessa abordagem:

  • Proteção contra a exposição do seu comando no lado do cliente

  • Atualizar o comando e a configuração sem lançar uma nova versão do app

Este guia descreve como começar a usar modelos de comando do servidor.

Ir para a visão geral de alto nível Ir para instruções detalhadas

Modelos e recursos compatíveis



Visão geral detalhada

Confira o fluxo de trabalho básico para usar modelos de solicitação do servidor:

  1. Crie o modelo usando a interface guiada no console Firebase.

  2. Teste o modelo em uma solicitação real usando a experiência de teste do console do Firebase.

  3. Acesse o modelo no seu app.

Formato básico dos modelos de comandos do servidor

Para Firebase AI Logic, o console Firebase oferece uma interface guiada para especificar o conteúdo de um modelo.

Os modelos de comandos do servidor usam uma sintaxe e um formato baseados em Dotprompt. Para mais detalhes, consulte Formato, sintaxe e exemplos de modelos.

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).

Usar o modelo no código

Clique no seu provedor de Gemini API para conferir o conteúdo e o código específicos do provedor nesta página.

Veja como usar o modelo no seu código:

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.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 = response.result;
const text = response.text();

Dart

Em breve, o plug-in do Flutter vai oferecer suporte a modelos de solicitação do servidor.

Unity

O pacote do Unity vai oferecer suporte a modelos de solicitação do servidor em breve.



Instruções detalhadas

Esta seção fornece instruções detalhadas para criar, testar e usar modelos de comandos do servidor.

Antes de começar

  • Se ainda não tiver feito isso, conclua o guia de início, que descreve como configurar seu projeto do Firebase, conectar seu app ao Firebase, adicionar o SDK, inicializar o serviço de back-end para o provedor Gemini API escolhido e criar uma instância GenerativeModel.

  • Verifique se você tem as permissões necessárias para criar e gerenciar modelos de solicitação do servidor. Por padrão, todas essas permissões estão incluídas na função de proprietário.

  • Se você usa o Vertex AI Gemini API e o se o caso de uso exigir restrições com base em local, oferecemos suporte a fluxos de trabalho avançados para modelos.

Etapa 1: criar um modelo de solicitação do servidor

Na maioria dos casos de uso, você cria e gerencia modelos de solicitação do servidor no console Firebase.

  1. No console do Firebase, acesse a guia Modelos de comandos do Firebase AI Logic.

  2. Clique em Criar modelo e selecione uma opção de modelo inicial.

    • Esses modelos iniciais fornecem o formato e a sintaxe para alguns casos de uso comuns. No entanto, é possível mudar completamente o modelo para atender às suas necessidades, seja qual for a opção selecionada.

    • Este guia para iniciantes pressupõe que você selecionou a opção Input + System Instructions.

  3. Insira os identificadores do modelo:

    • Nome do modelo: é o nome de exibição do modelo (por exemplo, My First Template). Ele só aparece nas interfaces do Firebase, como o console Firebase.

    • ID do modelo: precisa ser um ID exclusivo do modelo no seu projeto do Firebase (por exemplo, my-first-template-v1-0-0). Você vai referenciar esse ID na solicitação do seu app.

  4. Modifique a seção Configuração (frontmatter) do modelo, conforme necessário.

    • Esta seção precisa incluir pelo menos um nome de modelo, assim:

      ---
      model: 'gemini-2.5-flash'
      ---
      
    • Você também pode especificar a configuração do modelo e os controles de entrada e saída etc. Para mais detalhes e opções, consulte Formato, sintaxe e exemplos de modelo.

  5. Modifique a seção Comando e instruções do sistema (conforme aplicável) do modelo, conforme necessário.

    • Essa seção precisa incluir pelo menos o comando de texto a ser enviado ao modelo.

      Write a story about a magic backpack.
      
    • Você também pode criar comandos mais complexos, como as opções a seguir. Para mais detalhes e opções, consulte Formato, sintaxe e exemplos de modelos.

      • (Opcional e conforme aplicável) Especifique as instruções do sistema usando a sintaxe {{role "system"}} e o comando de texto usando a sintaxe {{role "user"}}.

      • (Opcional) Especifique variáveis de entrada usando a sintaxe Handlebars (como {{customerName}}). É possível fornecer um valor padrão no modelo, mas o valor dessa variável de entrada geralmente é transmitido na solicitação.

      {{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}}.
      

Etapa 2: teste seu modelo no console Firebase

O console Firebase oferece uma experiência de teste para seu modelo. Essa experiência permite que você veja o que vai acontecer quando seu modelo for usado, tanto o formato da solicitação quanto a saída de uma solicitação real.

  1. Clique em Salvar modelo para testar o modelo.

    É possível editar ou excluir o modelo depois. O único valor que não pode ser mudado depois é o ID do modelo.

  2. Se o comando usar variáveis de entrada, inclua valores de teste no campo Test input. Neste exemplo:

      {
        "customerName": "Jane"
      }
    
  3. Se você tiver vários provedores Gemini API ativados no projeto do Firebase, escolha qual deles usar para a solicitação de teste. Se essa opção aparecer no console, selecione Gemini Developer API ou Vertex AI Gemini API.

    Essa seleção se aplica apenas a solicitações enviadas pela experiência de teste do console Firebase. Na solicitação real do seu app, especifique o provedor Gemini API escolhido da mesma forma que faria em qualquer solicitação.

  4. Clique no botão Criar solicitação de teste formatada.

    Analise o Pedido de teste formatado resultante no lado direito da tela e faça iterações em qualquer um dos campos do modelo.

  5. Quando estiver satisfeito com a solicitação de teste formatada, clique no botão Executar teste de comando.

    Analise a Resposta do teste resultante no lado direito da tela e faça iterações em qualquer um dos campos do modelo.

  6. Se você quiser acessar o modelo no código do app, bloqueie o modelo clicando no ícone de bloqueio no canto superior direito do modelo.

  7. Clique em Fechar para sair da experiência de edição.

Etapa 3: acessar o modelo no seu código

Clique no seu provedor de Gemini API para conferir o conteúdo e o código específicos do provedor nesta página.

Uma solicitação que usa um modelo de comando do servidor é semelhante a outras solicitações, com os seguintes ajustes:

  • Use um templateGenerativeModel (ou templateImagenModel, conforme necessário).
  • Informe o ID do modelo.
  • Informe os valores de todas as entradas de variáveis necessárias para seu modelo.

Depois de criar ou atualizar o modelo, talvez seja necessário aguardar alguns minutos para que ele seja propagado nos servidores do Firebase antes de ser acessado pelo código.

Swift

Crie uma instância templateGenerativeModel (ou templateImagenModel) para usar um modelo na sua solicitação.


// ...

// 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

Crie uma instância templateGenerativeModel (ou templateImagenModel) para usar um modelo na sua solicitação.


// ...

// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.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

Crie uma instância templateGenerativeModel (ou templateImagenModel) para usar um modelo na sua solicitação.


// ...

// 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

Crie uma instância templateGenerativeModel (ou templateImagenModel) para usar um modelo na sua solicitação.


// ...

// 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 = response.result;
const text = response.text();

Dart

Em breve, o plug-in do Flutter vai oferecer suporte a modelos de solicitação do servidor.

Unity

O pacote do Unity vai oferecer suporte a modelos de solicitação do servidor em breve.



A seguir