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 Agent Platform. 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 Model Garden e modelos Hugging Face com suporte precisam ser implantados em um endpoint da Gemini Enterprise Agent Platform antes de disponibilizar solicitações. Ao chamar esses modelos autoimplantados da API Chat Completions, é necessário especificar o ID do endpoint. Para listar seus endpoints atuais da Agent Platform, use o gcloud ai endpoints list comando.

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 esta amostra, siga as instruções de configuração Python no Guia de início rápido da Agent Platform: como usar bibliotecas de cliente.

Para autenticar na Agent Platform, configure o Application Default Credentials. Se quiser 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 da conta de serviço duram 1 hora. Você pode prolongar a vida útil dos tokens de acesso da conta de serviço ou atualizar o token 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 da conta de serviço duram 1 hora. Você pode prolongar a vida útil dos tokens de acesso da conta de serviço ou atualizar o token periodicamente e atualizar a variável 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