Chamar o Gemini usando a biblioteca OpenAI

A API Gemini Chat Completions permite enviar solicitações à API Vertex AI Gemini usando as bibliotecas OpenAI para Python e REST. Se você já estiver usando as bibliotecas OpenAI, poderá usar esta API para alternar entre chamar modelos OpenAI e modelos Gemini para comparar resultados, custos e escalabilidade, sem alterar o código existente. Se você ainda não usa as bibliotecas OpenAI, recomendamos chamar a API Gemini diretamente.

Modelos compatíveis

Modelo Versão
Gemini 1.5 Flash google/gemini-1.5-flash-preview-0514
google/gemini-1.5-flash-001
Gemini 1.5 Pro google/gemini-1.5-pro-preview-0514
google/gemini-1.5-pro-preview-0409
google/gemini-1.5-pro-001
Gemini 1.0 Pro Vision google/gemini-1.0-pro-vision
google/gemini-1.0-pro-vision-001
Gemini 1.0 Pro google/gemini-1.0-pro-002
google/gemini-1.0-pro-001
google/gemini-1.0-pro

Autenticar

Para usar as bibliotecas OpenAI Python, instale o OpenAI SDK:

pip install openai

Para autenticar com a API Gemini Chat Completions, você pode modificar a configuração do cliente ou alterar a configuração do ambiente para usar a autenticação do Google e um endpoint da Vertex AI. Escolha uma das seguintes opções, a que for mais fácil:

Configuração do cliente

Para obter credenciais do Google de maneira programática em Python, use o SDK Python google-auth:

pip install google-auth
pip install requests

Altere o SDK do OpenAI para apontar para o endpoint de conclusões de bate-papo da Vertex AI:

# Programmatically get an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
# Note: the credential lives for 1 hour by default (https://cloud.google.com/docs/authentication/token-types#at-lifetime); after expiration, it must be refreshed.

# Pass the Vertex endpoint and authentication to the OpenAI SDK
PROJECT = 'PROJECT_ID'
LOCATION = 'LOCATION'
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
    base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT}/locations/{LOCATION}/endpoints/openapi',
    api_key = creds.token)

Por padrão, os tokens de acesso duram 1 hora. Você pode prolongar a vida útil do seu token de acesso ou atualizá-lo periodicamente e atualizar a variável openai.api_key.

Variáveis de ambiente

Instale a CLI do Google Cloud. A biblioteca OpenAI pode ler as variáveis de ambiente OPENAI_API_KEY e OPENAI_BASE_URL para alterar a autenticação e o endpoint no cliente padrão. Configure as variáveis a seguir:

$ export PROJECT=PROJECT_ID
$ export LOCATION=LOCATION
$ export MODEL_ID=MODEL_ID
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT}/locations/${LOCATION}/endpoints/openapi"

Em seguida, inicialize o cliente:

client = openai.OpenAI()

A API Gemini Chat Completions usa OAuth para autenticação com um token de acesso de curta duração. Por padrão, os tokens de acesso duram 1 hora. Você pode prolongar a vida útil do seu token de acesso ou atualizá-lo periodicamente e atualizar a variável de ambiente OPENAI_API_KEY.

Chamar a API Gemini Chat Completions

O exemplo a seguir mostra como enviar solicitações sem streaming:

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \
-d '{
  "model": "google/${MODEL_ID}",
  "messages": [{
    "role": "user",
    "content": "Write a story about a magic backpack."
  }]
}'

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "google/${MODEL_ID}",
  messages = [{"role": "user", "content": "Write a story about a magic backpack." }]
)

print(model_response)

O exemplo a seguir mostra como enviar solicitações de streaming:

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \
-d '{
  "model": "google/${MODEL_ID}",
  "stream": true,
  "messages": [{
    "role": "user",
    "content": "Write a story about a magic backpack."
  }]
}'

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "google/${MODEL_ID}",
  stream = True,
  messages = [{"role": "user", "content": "Write a story about a magic backpack." }]
)

print(model_response)

Parâmetros aceitos

A API Gemini Chat Completions aceita os seguintes parâmetros OpenAI. Para ver uma descrição de cada parâmetro, consulte a documentação da OpenAI sobre Como criar conclusões de chat.

messages
  • System message
  • User message: os tipos text e image_url são aceitos. O tipo image_url é compatível apenas com imagens armazenadas no Cloud Storage. 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
model
max_tokens
n
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
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.

A seguir