Autenticar

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

pip install openai

Para autenticarte con la API Chat Completions, puedes modificar la configuración de tu cliente o cambiar la configuración de tu entorno para usar la autenticación de Google y un endpoint de Vertex AI. Elige el método que te resulte más sencillo y sigue los pasos para configurar la llamada a los modelos de Gemini o a los modelos de Model Garden autodesplegados.

Algunos modelos de Model Garden y modelos de Hugging Face compatibles deben desplegarse en un endpoint de Vertex AI antes de poder atender solicitudes. Cuando llames a estos modelos autodesplegados desde la API Chat Completions, debes especificar el ID del endpoint. Para ver una lista con los endpoints de Vertex AI que tienes, usa el comando gcloud ai endpoints list.

Configuración del cliente

Para obtener credenciales de Google de forma programática en Python, puedes usar el google-authSDK de Python:

pip install google-auth requests

Python

Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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 las cuentas de servicio duran 1 hora. Puedes ampliar la duración de los tokens de acceso de la cuenta de servicio o actualizar periódicamente el token 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 endpoint en su cliente predeterminado. Define 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, define la variable MODEL_ID y usa el 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 llamar a un modelo autodesplegado desde Model Garden, define 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 Completions de Gemini Chat usa OAuth para autenticarse con un token de acceso de corta duración. De forma predeterminada, los tokens de acceso de las cuentas de servicio duran 1 hora. Puedes ampliar la duración de los tokens de acceso de la cuenta de servicio o actualizar periódicamente el token y actualizar la variable openai.api_key.

Actualizar tus credenciales

En el siguiente ejemplo se muestra cómo actualizar tus credenciales automáticamente cuando 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)

Siguientes pasos