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_tokens
n
frequency_penalty
presence_penalty
response_format
  • json_object: interpretado como transmissão de "application/json" para a API Gemini.
  • 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.
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.
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: Assim 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.
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.

A seguir