Autenticar

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

pip install openai

Para autenticar com a API 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 o método mais fácil e siga as etapas de configuração, dependendo se você quer chamar modelos do Gemini ou do Model Garden autoimplantado.

Certos modelos no Grupo de modelos e modelos Hugging Face com suporte precisam ser implantadas em um endpoint da Vertex AI antes de veicular solicitações. Ao chamar esses modelos autoimplantados da API Chat Completions, é necessário especificar o ID do endpoint. Para listar seus endpoints atuais da Vertex AI, use o comando gcloud ai endpoints list.

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 requests

Python

Antes de testar esse exemplo, siga as instruções de configuração para Python no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Python.

Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import openai

from google.auth import default
import google.auth.transport.requests

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
# 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.

##############################
# Choose one of the following:
##############################

# If you are calling a Gemini model, set the ENDPOINT_ID variable to use openapi.
ENDPOINT_ID = "openapi"

# If you are calling a self-deployed model from Model Garden, set the
# ENDPOINT_ID variable and set the client's base URL to use your endpoint.
# ENDPOINT_ID = "YOUR_ENDPOINT_ID"

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/{ENDPOINT_ID}",
    api_key=credentials.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_ID=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"

Para chamar um modelo do Gemini, defina o MODEL_ID e use o endpoint openapi:

$ export MODEL_ID=MODEL_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"

Para chamar um modelo autoimplantado do Model Garden, defina a variável ENDPOINT e use-a no URL:

$ export ENDPOINT=ENDPOINT_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"

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.

Atualizar suas credenciais

O exemplo a seguir mostra como atualizar suas credenciais automaticamente como necessário:

Python

from typing import Any

import google.auth
import google.auth.transport.requests
import openai


class OpenAICredentialsRefresher:
    def __init__(self, **kwargs: Any) -> None:
        # Set a placeholder key here
        self.client = openai.OpenAI(**kwargs, api_key="PLACEHOLDER")
        self.creds, self.project = google.auth.default(
            scopes=["https://www.googleapis.com/auth/cloud-platform"]
        )

    def __getattr__(self, name: str) -> Any:
        if not self.creds.valid:
            self.creds.refresh(google.auth.transport.requests.Request())

            if not self.creds.valid:
                raise RuntimeError("Unable to refresh auth")

            self.client.api_key = self.creds.token
        return getattr(self.client, name)



    # TODO(developer): Update and un-comment below lines
    # project_id = "PROJECT_ID"
    # location = "us-central1"

    client = OpenAICredentialsRefresher(
        base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    )

    response = client.chat.completions.create(
        model="google/gemini-2.0-flash-001",
        messages=[{"role": "user", "content": "Why is the sky blue?"}],
    )

    print(response)

A seguir