Por padrão, Gemini API retorna respostas como texto não estruturado. No entanto, alguns casos de uso exigem texto estruturado, como JSON. Por exemplo, você pode estar usando a resposta para outras tarefas downstream que exigem um esquema de dados estabelecido.
Para garantir que a saída gerada do modelo sempre siga um esquema específico, defina um esquema de resposta, que funciona como um blueprint para respostas do modelo. É possível extrair dados diretamente da saída do modelo com menos pós-processamento.
Veja alguns exemplos:
Verifique se a resposta de um modelo produz um JSON válido e está em conformidade com o esquema fornecido.
Por exemplo, o modelo pode gerar entradas estruturadas para receitas que sempre incluem o nome da receita, a lista de ingredientes e as etapas. Assim, é possível analisar e exibir essas informações com mais facilidade na interface do app.Restrinja a forma como um modelo pode responder durante as tarefas de classificação.
Por exemplo, é possível fazer com que o modelo anexe um conjunto específico de rótulos (por exemplo, um conjunto específico de tipos enumerados, comopositive
enegative
) em vez de rótulos que o modelo produz (que podem ter um grau de variabilidade, comogood
,positive
,negative
oubad
).
Este guia mostra como gerar saída JSON fornecendo um responseSchema
em uma chamada para generateContent
. Ele se concentra na entrada somente de texto, mas o Gemini também pode
produzir respostas estruturadas para solicitações multimodais que incluem imagens,
vídeos e áudio como entrada.
Na parte de baixo desta página, há mais exemplos, como como gerar valores de tipo enumerado como saída. Para mais exemplos de como gerar uma saída estruturada, confira a lista de Exemplos de esquemas e respostas de modelo na documentação do Google Cloud.
Antes de começar
Conclua o guia para iniciantes dos SDKs do Vertex AI in Firebase, caso ainda não tenha feito isso. Verifique se você fez o seguinte:
Configure um projeto do Firebase novo ou existente, incluindo o uso do plano de preços Blaze e a ativação das APIs necessárias.
Conecte seu app ao Firebase, incluindo o registro do app e a adição da configuração do Firebase ao app.
Adicione o SDK e inicialize o serviço Vertex AI e o modelo generativo no seu app.
Depois de conectar seu app ao Firebase, adicionar o SDK e inicializar o serviço Vertex AI e o modelo generativo, você vai poder chamar Gemini API.
Etapa 1: definir um esquema de resposta
Defina um esquema de resposta para especificar a estrutura da saída de um modelo, os nomes dos campos e o tipo de dados esperado para cada campo.
Quando um modelo gera a resposta, ele usa o nome do campo e o contexto do comando. Para que sua intenção fique clara, recomendamos que você use uma estrutura clara, nomes de campos não ambíguos e até descrições, conforme necessário.
Considerações sobre esquemas de resposta
Ao escrever seu esquema de resposta, tenha em mente o seguinte:
O tamanho do esquema de resposta é contabilizado no limite de tokens de entrada.
O recurso de esquema de resposta oferece suporte aos seguintes tipos MIME de resposta:
application/json
: gera o JSON conforme definido no esquema de resposta (útil para requisitos de saída estruturados).text/x.enum
: gera um valor de tipo enumerado conforme definido no esquema de resposta (útil para tarefas de classificação).
O recurso de esquema de resposta é compatível com os seguintes campos de esquema:
enum
items
maxItems
nullable
properties
required
Se você usar um campo sem suporte, o modelo ainda poderá processar sua solicitação, mas ele vai ignorar o campo. A lista acima é um subconjunto do objeto de esquema da OpenAPI 3.0. Consulte a referência de esquemas da Vertex AI.
Por padrão, para SDKs Vertex AI in Firebase, todos os campos são considerados obrigatórios, a menos que você os especifique como opcionais em uma matriz
optionalProperties
. Para esses campos opcionais, o modelo pode preenchê-los ou ignorá-los.Isso é oposto do comportamento padrão para Vertex AI Gemini API.
Etapa 2: enviar uma solicitação com um esquema de resposta para gerar JSON
O exemplo a seguir mostra como gerar uma saída JSON estruturada.
Para gerar uma saída estruturada, é necessário especificar durante a inicialização do modelo o responseMimeType
apropriado (neste exemplo, application/json
), bem como o responseSchema
que você quer que o modelo use.
O uso de responseSchema
é compatível com o Gemini 1.5 Pro e o Gemini 1.5 Flash.
Aprenda a escolher um modelo do Gemini e, opcionalmente, um local adequado para seu caso de uso e app.
Outros exemplos
Para mais exemplos de como usar e gerar uma saída estruturada, confira a lista de Exemplos de esquemas e respostas de modelo na documentação de Google Cloud.
Gerar valores de tipo enumerado como saída
O exemplo a seguir mostra como usar um esquema de resposta para uma tarefa de classificação. O modelo precisa identificar o gênero de um filme com base na descrição dele. A saída é um valor de tipo enumerado de texto simples que o modelo seleciona de uma lista de valores definidos no esquema de resposta fornecido.
Para realizar essa tarefa de classificação estruturada, é necessário especificar durante a inicialização
do modelo o responseMimeType
apropriado (neste exemplo,
text/x.enum
) e o responseSchema
que você quer que o modelo use.
Saiba como escolher um modelo do Gemini e, opcionalmente, um local adequado para seu caso de uso e app.
Outras opções para controlar a geração de conteúdo
- Saiba mais sobre o design de comandos para que você possa influenciar o modelo a gerar uma saída específica para suas necessidades.
- Configure os parâmetros do modelo para controlar como ele gera uma resposta. Esses parâmetros incluem tokens de saída máximos, temperatura, topK e topP.
- Use as configurações de segurança para ajustar a probabilidade de receber respostas que possam ser consideradas nocivas, incluindo discurso de ódio e conteúdo sexualmente explícito.
- Defina instruções do sistema para orientar o comportamento do modelo. Esse recurso é como um "preâmbulo" que você adiciona antes que o modelo seja exposto a outras instruções do usuário final.
Envie feedback sobre sua experiência com o Vertex AI in Firebase