Autenticar

Para usar las bibliotecas de OpenAI Python, instala el SDK de OpenAI:

pip install openai

Para autenticarte con la API de Chat Completions, puedes modificar la configuración del cliente o cambiar la configuración del entorno para usar la autenticación de Google y un extremo de Agent Platform. Elige el método que sea más fácil y sigue los pasos para configurar según si quieres llamar a modelos de Gemini o modelos de Model Garden implementados por tu cuenta.

Ciertos modelos en Model Garden y los modelos de Hugging Face compatibles primero deben implementarse en un extremo de Gemini Enterprise Agent Platform antes de que puedan entregarse solicitudes. Cuando llames a estos modelos implementados por tu cuenta desde la API de Chat Completions, debes especificar el ID del extremo. Para enumerar tus extremos existentes de Agent Platform, usa el gcloud ai endpoints list comando.

Configuración del cliente

Para obtener credenciales de Google en Python de manera programática, puedes usar el SDK de Python google-auth:

pip install google-auth requests

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Agent Platform sobre cómo usar bibliotecas cliente.

Para autenticarte en Agent Platform, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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,
)

De forma predeterminada, los tokens de acceso de la cuenta de servicio duran 1 hora. Puedes extender la vida útil de los tokens de acceso de la cuenta de servicio o actualizar tu token periódicamente y actualizar la variable openai.api_key.

Variables de entorno

Instala Google Cloud CLI. La biblioteca de OpenAI puede leer las variables de entorno OPENAI_API_KEY y OPENAI_BASE_URL para cambiar la autenticación y el extremo en su cliente predeterminado. Configura las siguientes variables:

$ export PROJECT_ID=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"

Para llamar a un modelo de Gemini, establece la variable MODEL_ID y usa el extremo openapi:

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

Para llamar a un modelo implementado por tu cuenta desde Model Garden, establece la variable ENDPOINT y úsala en tu URL:

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

A continuación, inicializa el cliente:

client = openai.OpenAI()

La API de Gemini Chat Completions usa OAuth para autenticarse con un token de acceso de corta duración. De forma predeterminada, los tokens de acceso de la cuenta de servicio duran 1 hora. Puedes extender la vida útil de los tokens de acceso de la cuenta de servicio o actualizar tu token periódicamente y actualizar la variable openai.api_key.

Actualiza tus credenciales

En el siguiente ejemplo, se muestra cómo actualizar tus credenciales automáticamente según sea necesario:

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)

¿Qué sigue?