La API de Chat Completions te permite enviar solicitudes a los modelos de Vertex AI a través de las bibliotecas de OpenAI para Python y REST. Si ya usas las bibliotecas de OpenAI, puedes usar esta API para alternar entre llamar a modelos de OpenAI y a modelos alojados en Vertex AI para comparar el resultado, el costo y la escalabilidad, sin cambiar tu código existente. Si todavía no usas las bibliotecas de OpenAI, te recomendamos que llames a la API de Gemini directamente.
Modelos compatibles
La API de Chat Completions admite modelos de Gemini y algunos modelos que se autoimplementan de Model Garden.
Modelos de Gemini
En la siguiente tabla, se muestran los modelos de Gemini compatibles:
Modelo | Versión |
---|---|
Gemini 1.5 Flash | google/gemini-1.5-flash-001 |
Gemini 1.5 Pro | google/gemini-1.5-pro-001 |
Gemini 1.0 Pro Vision | google/gemini-1.0-pro-vision google/gemini-1.0-pro-vision-001 |
Gemini 1.0 Pro | google/gemini-1.0-pro-002 google/gemini-1.0-pro-001 google/gemini-1.0-pro |
Modelos que se implementaron desde Model Garden
Los contenedores de la interfaz de generación de texto de HuggingFace (HF TGI) y vLLM compilado previamente de Vertex AI Model Garden admiten la API de finalización de chat. Sin embargo, no todos los modelos que se implementan en estos contenedores admiten la API de Chat Completions. En la siguiente tabla, se incluyen los modelos compatibles más populares por contenedor:
HF TGI |
vLLM |
---|---|
Autenticar
Para usar las bibliotecas de OpenAI para 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 sea más fácil y sigue los pasos para realizar la configuración según si deseas llamar a modelos de Gemini o modelos autoimplementados de Model Garden.
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 llamas a estos modelos implementados por ti desde la API de Chat Completions, debes especificar el ID del extremo. Para enumerar tus extremos existentes de Vertex AI, 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
pip install requests
Cambia el SDK de OpenAI para que apunte al extremo de finalización de chat de Vertex AI:
# Programmatically get an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
# 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.
# Pass the Vertex endpoint and authentication to the OpenAI SDK
PROJECT_ID = 'PROJECT_ID'
LOCATION = 'LOCATION'
##############################
# Choose one of the following:
##############################
# If you are calling a Gemini model, set the MODEL_ID variable and set
# your client's base URL to use openapi.
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/openapi',
api_key = creds.token)
# If you are calling a self-deployed model from Model Garden, set the
# ENDPOINT_ID variable and set your client's base URL to use your endpoint.
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/{ENDPOINT}',
api_key = creds.token)
De forma predeterminada, los tokens de acceso duran 1 hora. Puedes extender la vida útil de tu token de acceso o actualizarlo 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 con implementación automática desde Model Garden, configura 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}"
Luego, 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 duran 1 hora. Puedes extender la vida útil de tu token de acceso o actualizarlo periódicamente y actualizar la variable de entorno OPENAI_API_KEY
.
Llama a Gemini con la API de Chat Completions
En el siguiente ejemplo, se muestra cómo enviar solicitudes sin transmisión:
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \ -d '{ "model": "google/${MODEL_ID}", "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
En el siguiente ejemplo, se muestra cómo enviar solicitudes de transmisión a un modelo de Gemini a través de la API de Chat Completions:
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \ -d '{ "model": "google/${MODEL_ID}", "stream": true, "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Llama a un modelo que se implementó por sí solo con la API de Chat Completions
En el siguiente ejemplo, se muestra cómo enviar solicitudes sin transmisión:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT}/chat/completions \ -d '{ "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
En el siguiente ejemplo, se muestra cómo enviar solicitudes de transmisión a un modelo implementado de forma automática mediante la API de finalización de chat:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT}/chat/completions \ -d '{ "stream": true, "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
Parámetros admitidos
En el caso de los modelos de Google, la API de Chat Completions admite los siguientes parámetros de OpenAI. Para obtener una descripción de cada parámetro, consulta la documentación de OpenAI sobre cómo crear finalizaciones de chat. La compatibilidad de los parámetros con modelos de terceros varía según el modelo. Para ver qué parámetros son compatibles, consulta la documentación del modelo.
messages |
|
model |
|
max_tokens |
|
n |
|
response_format |
|
stop |
|
stream |
|
temperature |
|
top_p |
|
tools |
|
tool_choice |
|
function_call |
Este campo es obsoleto, pero se admite para versiones anteriores. |
functions |
Este campo es obsoleto, pero se admite para versiones anteriores. |
Si pasas algún parámetro no admitido, se ignorará.
Actualiza tus credenciales
En el siguiente ejemplo, se muestra cómo actualizar tus credenciales automáticamente según sea necesario:
Python
¿Qué sigue?
- Consulta ejemplos de llamadas a la API de inferencia con la sintaxis compatible con OpenAI.
- Para ver 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.
- Obtén más información sobre cómo migrar de Azure OpenAI a la API de Gemini.