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, você pode enviar todas essas informações diretamente do código do cliente ou especificar essas informações do 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 do lado do servidor, e seu app transmite 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 do 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 comando no lado do cliente
Atualização do comando e da configuração sem lançar uma nova versão do app
Este guia descreve como começar a usar modelos de comandos do servidor.
Ir para a visão geral detalhada Ir para instruções detalhadas
Modelos e recursos compatíveis
Use modelos de comandos do servidor com qualquer um dos Gemini e Imagen modelos com suporte da Firebase AI Logic, com exceção dos modelos Gemini Live.
Confira a lista de recursos que ainda não têm suporte.
Visão geral detalhada
Confira o fluxo de trabalho básico para usar modelos de comandos do servidor:
Crie o modelo usando a interface guiada no Firebase console.
Teste o modelo em uma solicitação real usando a experiência de teste do console Firebase.
Acesse o modelo no seu app.
Formato básico de modelos de comandos do servidor
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. Para mais detalhes, consulte Formato, sintaxe e exemplos de modelos.
Confira os componentes mais importantes de uma solicitação de exemplo para um Gemini modelo:
---
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}}.
A seção superior entre os 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. Ela é escrita como pares de chave-valor e é comumente chamada de frontmatter YAML.
O corpo do modelo contém o comando. Ele também pode incluir instruções do sistema e valores de entrada (usando a sintaxe Handlebars).
Usar o modelo no código
|
Clique no provedor Gemini API para conferir o conteúdo específico do provedor e o código nesta página. |
Saiba como usar o modelo no 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.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}");
}
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 fez isso, conclua o guia de iniciação, 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 comandos do servidor. Por padrão, todas essas permissões estão incluídas no papel de proprietário.
Se você usar o Vertex AI Gemini API e se o caso de uso exigir restrições baseadas em local, vamos oferecer suporte a fluxos de trabalho avançados para modelos.
Etapa 1: criar um modelo de comando do servidor
Para a maioria dos casos de uso, você cria e gerencia modelos de comandos do servidor no Firebase console.
No Firebase console, acesse a guia Firebase AI Logic Modelos de comandos.
Clique em Criar novo 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, não importa qual opção você selecione, é possível mudar completamente o modelo para atender às suas necessidades.
Este guia de iniciação considera que você selecionou a opção
Input + System Instructions.
Insira os identificadores do modelo:
Nome do modelo: é um nome de exibição para o modelo (por exemplo,
My First Template). Ele só aparece nas interfaces do Firebase, como o Firebase console.ID do modelo: precisa ser um ID exclusivo do modelo no seu projeto do Firebase (por exemplo,
). Você vai fazer referência a este ID na solicitação do seu app.my-first-template-v1-0-0Recomendamos o uso de um sistema de controle de versões para os IDs de modelo.
Os IDs de modelo podem ter no máximo 63 caracteres e podem conter letras minúsculas, números e hifens.
Modifique a seção Configuração (frontmatter) do modelo, conforme necessário.
Essa seção precisa incluir pelo menos um nome de modelo, como este:
--- model: 'gemini-3-flash-preview' ---Também é possível especificar a configuração do modelo e os controles de entrada & saída etc. Para mais detalhes e opções, consulte Formato, sintaxe e exemplos de modelos.
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.Também é possível 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
{{role "system"}}sintaxe e o comando de texto usando a{{role "user"}}sintaxe.(Opcional) Especifique as 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: testar o modelo no console Firebase
O console Firebase oferece uma experiência de teste para o modelo. Essa experiência permite que você veja o que vai acontecer quando o modelo for usado: o formato da solicitação e a saída de uma solicitação real.
Clique em Salvar modelo para testar o modelo.
Você sempre pode editar ou até mesmo excluir o modelo mais tarde. O único valor que não pode ser mudado mais tarde é o ID do modelo.
Se o comando usar variáveis de entrada, inclua valores de teste no campo Entrada de teste. Para este exemplo:
{ "customerName": "Jane" }Se você tiver vários Gemini API provedores ativados no projeto do Firebase, poderá escolher qual deles usar para a solicitação de teste. Se essa opção for exibida no console, selecione
Gemini Developer APIouVertex AI Gemini API.Essa seleção só se aplica a solicitações enviadas pela Firebase experiência de teste do console. Na solicitação real do seu app, você especifica o provedor Gemini API escolhido da mesma forma que faria para qualquer solicitação.
Clique no botão Criar solicitação de teste formatada.
Analise a solicitação de teste formatada resultante no lado direito da tela e itere em qualquer um dos campos do modelo.
Quando estiver tudo certo com a solicitação de teste formatada, clique no botão Executar teste de comando.
Analise a resposta de teste resultante no lado direito da tela e itere em qualquer um dos campos do modelo.
Se você estiver pronto para acessar o modelo no código do app, bloqueie-o clicando no
ícone de cadeado no canto superior direito do modelo.Clique em Fechar para sair da experiência de edição.
Etapa 3: acessar o modelo no código
|
Clique no provedor Gemini API para conferir o conteúdo específico do provedor e o código 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(outemplateImagenModel, conforme necessário). - Forneça o ID do modelo.
- Forneça os valores de todas as entradas de variáveis exigidas pelo 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 acessá-lo no código.
Swift
Crie uma instância templateGenerativeModel (ou templateImagenModel) para usar um modelo na 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 solicitação.
// ...
// 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
Crie uma instância templateGenerativeModel (ou templateImagenModel) para usar um modelo na 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 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 = result.response;
const text = response.text();
Dart
O plug-in do Flutter vai oferecer suporte a modelos de comandos do servidor em breve.
Crie uma instância templateGenerativeModel (ou templateImagenModel) para usar um modelo na solicitação.
// ...
// 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
Crie uma instância templateGenerativeModel (ou templateImagenModel) para usar um modelo na solicitação.
// ...
// 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}");
}
A seguir
Saiba mais sobre as práticas recomendadas e considerações para usar modelos de comandos do servidor.
Saiba mais detalhes sobre o formato e a sintaxe do modelo, além de exemplos.
Gerencie modelos, incluindo edição, bloqueio e controle de versões.