Gerar saída estruturada (como JSON) usando a API Gemini 


Por padrão, 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. Assim, é possível extrair diretamente os dados 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 anote o texto com um conjunto específico de rótulos (por exemplo, um conjunto específico de tipos enumerados como positive e negative), em vez de rótulos produzidos pelo modelo (que podem ter um grau de variabilidade como good, positive, negative ou bad).

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

Se ainda não fez isso, conclua o guia de primeiros passos para os SDKs Vertex AI in Firebase. Verifique se você fez o seguinte:

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

  2. Conecte seu app ao Firebase, incluindo o registro e a adição da configuração do Firebase.

  3. Adicione o SDK e inicialize o serviço Vertex AI e o modelo generativo no seu app.

Depois de conectar o app ao Firebase, adicionar o SDK e inicializar o serviço Vertex AI e o modelo generativo, você poderá chamar o 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 intent fique clara, recomendamos que você use uma estrutura clara, nomes de campos inequívocos e até descrições, conforme necessário.

Considerações sobre esquemas de resposta

Considere o seguinte ao escrever o esquema de resposta:

  • 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 JSON conforme definido no esquema de resposta (útil para requisitos de saída estruturada)

    • 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 oferece suporte aos 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 esquema 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 é o oposto do comportamento padrão do 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, especifique durante a inicialização do modelo o responseMimeType apropriado (neste exemplo, application/json) e 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.

Aprenda a 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 comando para influenciar o modelo a gerar resultados específicos para suas necessidades.
  • Configure os parâmetros do modelo para controlar como o modelo 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