Usar bibliotecas da OpenAI com o Vertex AI

A API Chat Completions funciona como um ponto final compatível com a OpenAI, concebido para facilitar a interação com o Gemini no Vertex AI através das bibliotecas da OpenAI para Python e REST. Se já estiver a usar as bibliotecas da OpenAI, pode usar esta API como uma forma de baixo custo de alternar entre a chamada de modelos da OpenAI e modelos alojados na Vertex AI para comparar a saída, o custo e a escalabilidade, sem alterar o seu código existente. Se ainda não estiver a usar as bibliotecas da OpenAI, recomendamos que use o SDK de IA gen da Google.

Modelos suportados

A API Chat Completions suporta modelos Gemini e modelos implementados automaticamente selecionados do Model Garden.

Modelos do Gemini

Os seguintes modelos oferecem suporte para a API Chat Completions:

Modelos implementados automaticamente a partir do Model Garden

A interface de geração de texto do Hugging Face (HF TGI) e os contentores vLLM pré-criados do Vertex AI Model Garden suportam a API Chat Completions. No entanto, nem todos os modelos implementados nestes contentores suportam a API Chat Completions. A tabela seguinte inclui os modelos suportados mais populares por contentor:

HF TGI

vLLM

Parâmetros suportados

Para os modelos Google, a API Chat Completions suporta os seguintes parâmetros da OpenAI. Para ver uma descrição de cada parâmetro, consulte a documentação da OpenAI sobre a criação de conclusões de chat. O suporte de parâmetros para modelos de terceiros varia consoante o modelo. Para ver que parâmetros são suportados, consulte a documentação do modelo.

messages
  • System message
  • User message: os tipos text e image_url são suportados. O tipo image_url suporta imagens armazenadas num URI do Cloud Storage ou numa codificação base64 no formato "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". Para saber como criar um contentor do Cloud Storage e carregar um ficheiro para o mesmo, consulte Descubra o armazenamento de objetos. A opção detail não é suportada.
  • Assistant message
  • Tool message
  • Function message: este campo foi descontinuado, mas é suportado para compatibilidade com versões anteriores.
model
max_completion_tokens Alias para max_tokens.
max_tokens
n
frequency_penalty
presence_penalty
reasoning_effort Configura a quantidade de tempo e o número de tokens usados numa resposta.
  • low: 1024
  • medium: 8192
  • high: 24576
Como não são incluídos pensamentos na resposta, só é possível especificar um de reasoning_effort ou extra_body.google.thinking_config.
response_format
  • json_object: interpretado como a transmissão de "application/json" para a API Gemini.
  • json_schema. Os esquemas totalmente recursivos não são suportados. additional_properties é suportado.
  • text: interpretado como a transmissão de "text/plain" para a API Gemini.
  • Qualquer outro tipo MIME é transmitido tal como está ao modelo, como a transmissão direta de "application/json".
seed Corresponde a GenerationConfig.seed.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: especifique parâmetros através da especificação OpenAPI. Isto difere do campo de parâmetros da OpenAI, que é descrito como um objeto de esquema JSON. Para saber mais sobre as diferenças de palavras-chave entre o OpenAPI e o esquema JSON, consulte o guia do OpenAPI.
tool_choice
  • none
  • auto
  • required: corresponde ao modo ANY no FunctionCallingConfig.
  • validated: corresponde ao modo VALIDATED no FunctionCallingConfig. Isto é específico da Google.
web_search_options Corresponde à ferramenta GoogleSearch. Não são suportadas subopções.
function_call Este campo foi descontinuado, mas é suportado para efeitos de retrocompatibilidade.
functions Este campo foi descontinuado, mas é suportado para efeitos de retrocompatibilidade.

Se transmitir algum parâmetro não suportado, este é ignorado.

Parâmetros de entrada multimodal

A API Chat Completions suporta entradas multimodais selecionadas.

input_audio
  • data: Qualquer URI ou formato de blob válido. Suportamos todos os tipos de objetos binários grandes, incluindo imagens, áudio e vídeo. Tudo o que é suportado pelo GenerateContent é suportado (HTTP, Cloud Storage, etc.).
  • format: A OpenAI suporta wav (audio/wav) e mp3 (audio/mp3). Com o Gemini, todos os tipos MIME válidos são suportados.
image_url
  • data: Tal como input_audio, é compatível com qualquer URI ou formato de blob válido.
    Tenha em atenção que image_url como URL é predefinido para o tipo MIME image/* e image_url como dados blob pode ser usado como qualquer entrada multimodal.
  • detail: Semelhante à resolução dos meios>, isto determina o número máximo de tokens por imagem para o pedido. Tenha em atenção que, embora o campo da OpenAI seja por imagem, o Gemini aplica o mesmo detalhe ao longo do pedido e a transmissão de vários tipos de detalhes num pedido gera um erro.

Em geral, o parâmetro data pode ser um URI ou uma combinação do tipo MIME e bytes codificados em base64 no formato "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". Para ver uma lista completa de tipos MIME, consulte GenerateContent. Para mais informações sobre a codificação base64 da OpenAI, consulte a respetiva documentação.

Para ver exemplos de utilização, consulte os nossos exemplos de introdução multimodal.

Parâmetros específicos do Gemini

Existem várias funcionalidades suportadas pelo Gemini que não estão disponíveis nos modelos da OpenAI. Estas funcionalidades podem continuar a ser transmitidas como parâmetros, mas têm de estar contidas num elemento extra_content ou extra_body, caso contrário, são ignoradas.

extra_body funcionalidades

Inclua um campo google para conter quaisquer funcionalidades específicas do Gemini extra_body.

{
  ...,
  "extra_body": {
     "google": {
       ...,
       // Add extra_body features here.
     }
   }
}
safety_settings Isto corresponde ao SafetySetting do Gemini.
cached_content Isto corresponde ao GenerateContentRequest.cached_content do Gemini.
thinking_config Isto corresponde ao GenerationConfig.ThinkingConfig do Gemini.
thought_tag_marker Usado para separar os pensamentos de um modelo das respetivas respostas para modelos com a funcionalidade de pensamento disponível.
Se não for especificado, não são devolvidas etiquetas em torno das reflexões do modelo. Se estiverem presentes, as consultas subsequentes removem as etiquetas de pensamento e marcam os pensamentos adequadamente para contexto. Isto ajuda a preservar o contexto adequado para consultas subsequentes.

extra_part funcionalidades

extra_part permite-lhe especificar definições adicionais ao nível de cada Part.

Inclua um campo google para conter quaisquer funcionalidades específicas do Gemini extra_part.

{
  ...,
  "extra_part": {
     "google": {
       ...,
       // Add extra_part features here.
     }
   }
}
extra_content Um campo para adicionar conteúdo específico do Gemini que não deve ser ignorado.
thought Isto marca explicitamente se um campo é um pensamento (e tem precedência sobre thought_tag_marker). Isto deve ser usado para especificar se uma chamada de ferramenta faz parte de um pensamento ou não.

O que se segue?