Autenticar

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

pip install openai

Para autenticar con la API de Chat Completions, puedes modificar la configuración del cliente o cambiar el entorno configuración para usar la autenticación de Google y un extremo de Vertex AI. Elige el método que te resulte más fácil y sigue los pasos de configuración según si quieres llamar a los modelos de Gemini o a los 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 Vertex AI antes de que puedan entregarse solicitudes. Cuando llames a estos modelos implementados por sí solos desde la API de Chat Completions, deberás especificar el ID del extremo. Para enumerar tus extremos de Vertex AI existentes, usa el comando gcloud ai endpoints list.

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 para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas 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 el usuario 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?