Para usar las bibliotecas de Python de OpenAI con Vertex AI, debes autenticarte con credenciales de Google y configurar tu cliente para que use un extremo de Vertex AI. En este documento, se muestra cómo configurar tu entorno y autenticar con dos métodos diferentes.
Antes de comenzar
Requisitos previos
1. Instala los SDKs
Instala los SDKs de OpenAI y Google Auth:
pip install openai google-auth requests
2. Configura la autenticación
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación (ADC). Para obtener más información, consulta Configura credenciales predeterminadas de la aplicación.
3. Identifica tu extremo
Tu extremo depende del tipo de modelo al que llames:
- Modelos de Gemini: Usa
openapi
como el ID del extremo. - Modelos implementados por el usuario: Ciertos modelos de Model Garden y los modelos de Hugging Face compatibles primero deben implementarse antes de que puedan entregarse solicitudes. Cuando llames a estos modelos, debes especificar el ID de extremo único de tu implementación.
Métodos de autenticación
Para autenticarte, configura el objeto cliente directamente en tu código o establece variables de entorno. En el siguiente flujo de trabajo, se describe el proceso.
Elige el método que mejor se adapte a tu caso de uso.
Método | Ventajas | Desventajas | Clientes ideales |
---|---|---|---|
Configuración del cliente | Programática y flexible. Permite la administración dinámica de credenciales dentro de la aplicación. | Requiere más código para administrar credenciales y extremos directamente. | Aplicaciones que necesitan administrar varios clientes o actualizar credenciales de forma dinámica. |
Variables de entorno | Configuración sencilla que separa la configuración del código. Ideal para el desarrollo y las pruebas locales. | Son menos seguros si no se administran correctamente. Menos flexible para los cambios de credenciales dinámicos. | Guías de inicio rápido, desarrollo local e implementaciones en contenedores en las que las variables de entorno son estándar |
Configuración del cliente
Puedes obtener credenciales de Google de manera programática y configurar el cliente de OpenAI en tu código de Python. De forma predeterminada, los tokens de acceso vencen después de una hora. En el caso de las aplicaciones de larga duración, consulta cómo actualizar tus credenciales.
Cómo ver el código de Python para la configuración del cliente
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, )
Variables de entorno
Puedes usar Google Cloud CLI para obtener un token de acceso. La biblioteca de OpenAI lee automáticamente las variables de entorno OPENAI_API_KEY
y OPENAI_BASE_URL
para configurar el cliente predeterminado.
-
Configura las siguientes variables de entorno comunes:
export PROJECT_ID=PROJECT_ID export LOCATION=LOCATION export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
-
Establece la URL base para tu tipo de modelo:
-
Para un modelo Gemini:
export MODEL_ID=MODEL_ID export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"
-
Para un modelo que se implementó por sí solo desde Model Garden:
export ENDPOINT=ENDPOINT_ID export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"
-
-
Inicializa el cliente:
El cliente usa las variables de entorno que configuraste.
client = openai.OpenAI()
De forma predeterminada, los tokens de acceso vencen después de una hora. Deberás actualizar el token periódicamente y actualizar la variable de entorno OPENAI_API_KEY
.
Actualiza tus credenciales
Los tokens de acceso obtenidos de las credenciales predeterminadas de la aplicación vencen después de una hora. En el caso de los servicios o las aplicaciones de larga duración, debes implementar un mecanismo para actualizar el token. En el siguiente ejemplo, se muestra una clase de wrapper que actualiza automáticamente el token cuando vence.
Consulta un ejemplo de una clase de actualización de credenciales
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?
- Consulta ejemplos de cómo llamar a la API de Chat Completions con la sintaxis compatible con OpenAI.
- Consulta ejemplos de cómo llamar a la API de Inference con la sintaxis compatible con OpenAI.
- Consulta ejemplos de cómo llamar a la API de Functions Calling con una sintaxis compatible con OpenAI.
- Obtén más información sobre la API de Gemini.