Como usar as bibliotecas da OpenAI com a Vertex AI

A API Chat Completions funciona como um endpoint compatível com a OpenAI, projetado para facilitar a interface com o Gemini na Vertex AI usando as bibliotecas da OpenAI para Python e REST. Se você já estiver usando as bibliotecas OpenAI, poderá usar essa API como uma maneira econômica de alternar entre chamar modelos OpenAI e modelos hospedados do Vertex AI para comparar resultados, custos e escalabilidade, sem mudar o código atual. Se você ainda não usa as bibliotecas OpenAI, recomendamos usar o SDK do Google Gen AI.

Modelos compatíveis

A API Chat Completions oferece suporte a modelos do Gemini e a alguns modelos autoimplantados do Model Garden.

Modelos do Gemini

Os modelos a seguir oferecem suporte à API Chat Completions:

Modelos autoimplantados do Model Garden

O Interface de geração de texto Hugging Face (HF TGI) (link em inglês) e os contêineres de vLLM pré-criados do Model Garden da Vertex AI têm suporte à API Chat Completions. No entanto, nem todos os modelos implantados nesses contêineres são compatíveis com a API Chat Completions. A tabela a seguir inclui os modelos com suporte mais conhecidos por contêiner:

HF TGI

vLLM

Parâmetros aceitos

Para modelos do Google, a API Chat Completions é compatível com as seguintes APIs parâmetros. Para ver uma descrição de cada parâmetro, consulte a documentação da OpenAI sobre Como criar conclusões de chat. A compatibilidade com parâmetros para modelos de terceiros varia de acordo com o modelo. Para saber quais parâmetros são aceitos, consulte a documentação do modelo.

messages
  • System message
  • User message: os tipos text e image_url são aceitos. O tipo image_url oferece suporte a imagens armazenadas em um URI do Cloud Storage ou uma codificação Base64 no formato "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". Para saber como criar um bucket do Cloud Storage e fazer upload de um arquivo nele, consulte Descubra o armazenamento de objetos. A opção detail não é compatível.
  • Assistant message
  • Tool message
  • Function message: o uso deste campo foi descontinuado, mas tem suporte para compatibilidade com versões anteriores.
model
max_completion_tokens Alias de max_tokens.
max_tokens
n
frequency_penalty
presence_penalty
reasoning_effort Configura quanto tempo e quantos tokens são usados em uma resposta.
  • low: 1024
  • medium: 8192
  • high: 24576
Como nenhuma ideia é incluída na resposta, apenas uma de reasoning_effort ou extra_body.google.thinking_config pode ser especificada.
response_format
  • json_object: interpretado como transmissão de "application/json" para a API Gemini.
  • json_schema. Esquemas totalmente recursivos não são aceitos. additional_properties é compatível.
  • text: interpretado como transmissão de "texto/simples" para a API Gemini.
  • Qualquer outro tipo MIME é passado no estado em que se encontra para o modelo, como passar "application/json" diretamente.
seed Corresponde a GenerationConfig.seed.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: especifique parâmetros usando a Especificação OpenAPI. Ela é diferente 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 os esquemas OpenAPI e JSON, consulte o Guia da OpenAPI.
tool_choice
  • none
  • auto
  • required: corresponde ao modo ANY no FunctionCallingConfig.
  • validated: corresponde ao modo VALIDATED no FunctionCallingConfig. Isso é específico do Google.
web_search_options Corresponde à ferramenta GoogleSearch. Não há suporte para subopções.
function_call Este campo está obsoleto, mas tem suporte para compatibilidade com versões anteriores.
functions Este campo está obsoleto, mas tem suporte para compatibilidade com versões anteriores.

Se você passar algum parâmetro não suportado, ele será ignorado.

Parâmetros de entrada multimodais

A API Chat Completions oferece suporte a algumas entradas multimodais.

input_audio
  • data: Qualquer URI ou formato de blob válido. Oferecemos suporte a todos os tipos de blob, incluindo imagem, áudio e vídeo. Tudo o que é compatível com GenerateContent é aceito (HTTP, Cloud Storage etc.).
  • format: O OpenAI oferece suporte a wav (áudio/wav) e mp3 (áudio/mp3). Com o Gemini, todos os tipos MIME válidos são aceitos.
image_url
  • data: Como input_audio, qualquer URI ou formato de blob válido é aceito.
    O image_url como um URL vai usar o tipo MIME image/* por padrão, e o image_url como dados blob pode ser usado como qualquer entrada multimodal.
  • detail: Semelhante à resolução de mídia, isso determina o número máximo de tokens por imagem para a solicitação. Embora o campo do OpenAI seja por imagem, o Gemini aplica o mesmo detalhe em toda a solicitação. Transmitir vários tipos de detalhes em uma solicitação gera um erro.

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

Para saber como usar, consulte nossos exemplos de entrada multimodal.

Parâmetros específicos do Gemini

O Gemini oferece vários recursos que não estão disponíveis nos modelos da OpenAI. Esses recursos ainda podem ser transmitidos como parâmetros, mas precisam estar contidos em um extra_content ou extra_body, caso contrário, eles serão ignorados.

extra_body recursos

safety_settings Isso corresponde a SafetySetting do Gemini.
cached_content Isso corresponde a GenerateContentRequest.cached_content do Gemini.
thinking_config Isso corresponde a GenerationConfig.ThinkingConfig do Gemini.
thought_tag_marker Usado para separar os pensamentos de um modelo das respostas dele para modelos com o recurso de Pensamento disponível.
Se não for especificado, nenhuma tag será retornada em relação aos pensamentos do modelo. Se estiverem presentes, as consultas subsequentes vão remover as tags de pensamento e marcar os pensamentos de forma adequada para o contexto. Isso ajuda a preservar o contexto adequado para consultas subsequentes.

extra_part recursos

extra_part permite especificar outras configurações no nível de Part.

extra_content Um campo para adicionar conteúdo específico do Gemini que não pode ser ignorado.
thought Isso marca explicitamente se um campo é um pensamento (e tem precedência sobre thought_tag_marker). Isso deve ser usado para especificar se uma chamada de ferramenta faz parte de um pensamento ou não.

A seguir