Formate os seus pedidos de API

Esta página explica como formatar pedidos de API para o Gemini no Google Distributed Cloud (GDC) air-gapped usando os detalhes do corpo do pedido do ponto final Chat Completions da OpenAI. Ao seguir este formato, pode integrar facilmente as capacidades avançadas do Gemini nas suas aplicações enquanto usa a estrutura da API OpenAI.

A família de modelos Gemini inclui modelos que funcionam com pedidos de comandos multimodais. O termo multimodal indica que pode usar mais do que uma modalidade ou tipo de entrada num comando. Para mais informações, consulte o artigo Comandos de design.

Para mais informações sobre as descrições genéricas dos tipos, métodos e campos gerados para a biblioteca gRPC, consulte a referência do gRPC do Gemini.

Antes de começar

Antes de formatar os pedidos da API, certifique-se de que cumpre os seguintes pré-requisitos:

  • Saiba mais sobre as capacidades do Gemini na GDC.
  • Comece a usar os requisitos mínimos do projeto para fazer pedidos de API para o Gemini.
  • Identifique o ID do ponto final do modelo Gemini que quer usar nos seus pedidos. Selecionar um modelo específico permite-lhe usar as respetivas capacidades únicas para as suas tarefas. Veja os modelos do Gemini disponíveis no GDC.
  • Compreenda como criar os seus comandos cuidadosamente para obter as respostas esperadas do Gemini. Experimente diferentes estilos e formatos de comandos para otimizar o resultado. Para mais informações, consulte o artigo Introdução aos comandos.
  • Explore os vários parâmetros disponíveis no ponto final Chat Completions da OpenAI para controlar o comportamento do Gemini. Ajuste parâmetros como temperature, max_completion_tokens e top_p para controlar a criatividade, o comprimento e a diversidade do texto gerado. Para mais informações, consulte o artigo Faça experiências com parâmetros.

Sintaxe do pedido

Os exemplos seguintes contêm a sintaxe que tem de usar nos seus pedidos API para gerar uma resposta do modelo:

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "MODEL_ID",
  messages = [
    {
      ...
    }
  ]
  ...
)

print(model_response)

curl

curl \
  -X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
  -d '{
      "model_id": "MODEL_ID",
      "messages" = [
        {
          ...
        }
      ]
      ...
  }'

Parâmetros da API

Esta secção contém uma lista dos parâmetros mais importantes que pode definir no corpo do pedido dos seus pedidos de API para o Gemini no GDC e o corpo da resposta que o modelo tem de devolver. Para a referência completa da API do ponto final Chat Completions da OpenAI, consulte https://platform.openai.com/docs/api-reference/chat.

Corpo do pedido

{
  "messages" = [
    {
      "role": string,
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": string
          }
        },
        {
          "type": "input_audio",
          "input_audio": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "audio_url",
          "audio_url": {
            "url": string
          }
        },
        {
          "type": "input_video",
          "input_video": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "video_url",
          "video_url": {
            "url": string
          }
        },
        {
          "type": "input_document",
          "input_document": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "document_url",
          "document_url": {
            "url": string
          }
        }
      ]
    }
  ],
  "temperature": number,
  "max_completion_tokens": integer,
  "top_p": number,
  "n": integer,
  "stop": string,
  "user": string
}

A tabela seguinte descreve os campos principais e as respetivas descrições no corpo do pedido para o ponto final Chat Completions da OpenAI quando usado com o Gemini:

Parâmetros
Nome do campo Descrição

model

Obrigatório: string

O modelo do Gemini a usar.

Para mais informações, consulte os modelos do Gemini disponíveis.

messages

Obrigatório: object

Uma lista de mensagens que compõem a conversa atual com o modelo. Cada mensagem tem um role e um content.

São suportados diferentes tipos de mensagens (modalidades), como texto, imagens, áudio, vídeos e documentos.

role

Obrigatório: string

A função do autor da mensagem, que pode ser uma das seguintes:

  • system: Instruções fornecidas pelo sistema que o modelo tem de seguir, independentemente das mensagens enviadas pelo utilizador.
  • user: mensagens fornecidas pelo utilizador às quais o modelo tem de responder e que contêm comandos ou informações de contexto adicionais.
  • assistant: mensagens fornecidas pelo modelo em resposta às mensagens do utilizador.

content

Obrigatório: string ou array

O conteúdo da mensagem do sistema, do utilizador ou do assistente.

O valor é uma única instância para consultas de uma única interação. Para consultas com várias interações, content é um campo repetido que contém o histórico de conversas e o pedido mais recente. Para obter mais detalhes, consulte content.

temperature

Opcional: number ou null

A aleatoriedade do texto gerado.

Os valores mais baixos (mais próximos de 0) produzem respostas mais determinísticas e focadas, enquanto os valores mais elevados (mais próximos de 2) produzem resultados mais diversificados e criativos.

A predefinição é 1.

max_completion_tokens

Opcional: integer ou null

O número máximo de tokens a gerar na resposta, incluindo tokens de saída visíveis e tokens de raciocínio.

top_p

Opcional: number ou null

A probabilidade de amostragem do núcleo.

Os valores mais elevados (mais próximos de 1) são amostrados a partir de um intervalo mais amplo de potenciais tokens, enquanto os valores mais baixos (mais próximos de 0) se focam nos tokens mais prováveis.

A predefinição é 1.

n

Opcional: integer ou null

O número de conclusões a gerar para cada comando.

A predefinição é 1.

stop

Opcional: string, array ou null

Uma lista de strings que, quando encontradas, interrompem o processo de geração de texto.

A predefinição é null.

user

Opcional: string

Um identificador exclusivo do utilizador final.

Este parâmetro permite-lhe acompanhar os padrões de utilização e personalizar as respostas.

content

Este campo é o tipo de dados estruturados base que contém o conteúdo multipartes de uma mensagem.

Se a entrada for um comando de texto, o valor deste campo é uma string. No entanto, para comandos multimodais, este campo consiste numa matriz que contém duas propriedades principais em cada objeto: type e INPUT. A propriedade type denota o tipo de conteúdo da entrada multimodal, enquanto a propriedade INPUT contém o elemento de entrada, representado como dados codificados em base64 ou um URL de um contentor de armazenamento do GDC.

A tabela seguinte descreve os principais campos content e as respetivas descrições para comandos multimodais:

Nome do campo Descrição

type

Obrigatório: string

O tipo de conteúdo para comandos multimodais. Os valores aceitáveis incluem o seguinte:

  • image_url: o conteúdo de entrada é uma imagem fornecida como dados codificados em base64 ou como um URL de um contentor de armazenamento do GDC.
  • input_audio: o conteúdo de entrada é áudio fornecido como dados codificados em base64.
  • audio_url: O conteúdo de entrada é áudio fornecido como um URL de um contentor de armazenamento do GDC.
  • input_video: o conteúdo de entrada é um vídeo fornecido como dados codificados em base64.
  • video_url: o conteúdo de entrada é um vídeo fornecido como um URL de um contentor de armazenamento do GDC.
  • input_document: o conteúdo de entrada é um documento facultado como dados codificados em base64.
  • document_url: o conteúdo de entrada é um documento facultado como um URL de um contentor de armazenamento do GDC.

INPUT

Obrigatório: object

A entrada de conteúdo para comandos multimodais. O nome deste campo tem de ser igual ao valor especificado no campo type.

Por isso, o nome deste campo é um dos seguintes:

  • Para imagens: image_url
  • Para áudio: input_audio ou audio_url
  • Para vídeo: input_video ou video_url
  • Para documentos: input_document ou document_url.

Cada campo de entrada tem um url ou data e format.

url

Opcional: string

Se o conteúdo de entrada for fornecido como um URL, o caminho para o ficheiro num contentor de armazenamento do GDC.

No caso das imagens, este campo pode conter dados codificados em Base64 em vez de um URL.

data

Opcional: string

Se o conteúdo de entrada for fornecido como dados codificados em base64, os dados binários são convertidos numa string de carateres.

No caso das imagens, os dados codificados em Base64 são fornecidos no campo url.

format

Opcional: string

Se o conteúdo de entrada for fornecido no campo data, a especificação de formato dos dados fornecidos.

Consoante os dados de entrada, são suportados diferentes formatos. Para mais informações, consulte os tipos MIME para imagens, áudio, vídeos e documentos.

Corpo da resposta

{
  "id": string,
  "object": string,
  "created": integer,
  "model": string,
  "choices": [
    {
      "index": integer,
      "message": {
        "role": string,
        "content": string,
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": string
    }
  ],
  "usage": {
    "completion_tokens": integer,
    "prompt_tokens": integer,
    "total_tokens": integer
  },
  "system_fingerprint": string
}

A tabela seguinte descreve os campos principais e as respetivas descrições no corpo da resposta devolvido pelo modelo com base na entrada fornecida:

Nome do campo Descrição

id

string

Um identificador exclusivo do texto gerado.

object

string

O tipo de objeto, que é sempre chat.completion.

created

integer

A data/hora em segundos de quando o texto é gerado.

model

string

O modelo usado para gerar o texto.

choices

array

Uma lista de opções de geração de texto. Este campo pode conter várias opções se n for superior a 1.

index

integer

O índice da escolha na lista de escolhas.

message

object

Uma mensagem de geração de texto gerada pelo modelo. Este campo contém as seguintes propriedades:

  • role: (string) A função do autor da mensagem.
  • content: (string ou null) O conteúdo da mensagem.
  • refusal: (string ou null) A mensagem de recusa gerada pelo modelo.

logprobs

object ou null

Informações de probabilidade do registo para a escolha.

finish_reason

string

O motivo pelo qual o modelo parou de gerar tokens. O valor é um dos seguintes:

  • stop: o modelo atinge um ponto de paragem natural ou uma sequência de paragem fornecida.
  • length: foi atingido o número máximo de tokens especificado no pedido.
  • content_filter: o conteúdo é omitido devido a uma denúncia dos filtros de conteúdo.
  • tool_calls: o modelo chamou uma ferramenta.

usage

object

Estatísticas de utilização do pedido.

completion_tokens

integer

Número de tokens no texto gerado.

prompt_tokens

integer

Número de tokens no comando.

total_tokens

integer

Número total de tokens no comando e no texto gerado.

system_fingerprint

string

A configuração de back-end que o modelo usa para ser executado.

Exemplos

Esta secção contém um exemplo do corpo do pedido e da resposta de geração de texto que o modelo tem de devolver.

Exemplo de pedido

O exemplo seguinte mostra os detalhes de um corpo do pedido que envia um comando ao Gemini para gerar texto. O exemplo contém controlos de temperatura e de tokens máximos. Para ver detalhes de implementação, consulte os artigos Envie um comando de texto ou Envie um comando multimodal.

{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful and informative assistant."
    },
    {
      "role": "user",
      "content": "What is the capital of France?"
    }
  ],
  "temperature": 0.7,
  "max_completion_tokens": 100
}

Exemplo de resposta

O exemplo seguinte mostra os detalhes de uma resposta de geração de texto devolvida pelo modelo:

{
  "id": "",
  "object": "",
  "created": 0,
  "model": "",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "The capital of France is Paris.\n",
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "completion_tokens": 7,
    "prompt_tokens": 8,
    "total_tokens": 15
  },
  "system_fingerprint": ""
}

O que se segue?