L'API Chat Completions vous permet d'envoyer des requêtes aux modèles Vertex AI à l'aide des bibliothèques OpenAI pour Python et REST. Si vous utilisez déjà les bibliothèques OpenAI, vous pouvez utiliser cette API pour passer de l'appel de modèles OpenAI à l'appel de modèles hébergés par Vertex AI afin de comparer la sortie, les coûts et l'évolutivité, sans modifier votre code existant. Si vous n'utilisez pas déjà les bibliothèques OpenAI, nous vous recommandons d'appeler directement l'API Gemini.
Modèles compatibles
L'API Chat Completions est compatible avec les modèles Gemini et sélectionne les modèles autodéployés à partir de Model Garden.
Modèles Gemini
Le tableau suivant présente les modèles Gemini compatibles :
Modèle | Version |
---|---|
Gemini 1.5 Flash | google/gemini-1.5-flash |
Gemini 1.5 Pro | google/gemini-1.5-pro |
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 |
Modèles autodéployés à partir de Model Garden
Les conteneurs HuggingFace Text Generation Interface (HF TGI) et Vertex AI Model Garden vLLM prédéfinis sont compatibles avec l'API Chat Completions. Toutefois, tous les modèles déployés dans ces conteneurs ne sont pas compatibles avec l'API Chat Completions. Le tableau suivant inclut les modèles compatibles les plus populaires par conteneur :
HF TGI |
vLLM |
---|---|
Authentifier
Pour utiliser les bibliothèques Python OpenAI, installez le SDK OpenAI :
pip install openai
Pour vous authentifier auprès de l'API Chat Completions, vous pouvez modifier la configuration de votre client ou modifier la configuration de votre environnement afin d'utiliser l'authentification Google et un point de terminaison Vertex AI. Choisissez la méthode la plus simple et suivez la procédure de configuration selon que vous souhaitez appeler des modèles Gemini ou des modèles Model Garden auto-déployés.
Certains modèles de Model Garden et des modèles Hugging Face compatibles doivent d'abord être déployés sur un point de terminaison Vertex AI avant de pouvoir diffuser des requêtes.
Lorsque vous appelez ces modèles autodéployés à partir de l'API Chat Completions, vous devez spécifier l'ID du point de terminaison. Pour lister vos points de terminaison Vertex AI existants, exécutez la commande gcloud ai endpoints list
.
Configuration du client
Pour obtenir des identifiants Google de manière programmatique dans Python, vous pouvez utiliser le SDK Python google-auth
:
pip install google-auth
pip install requests
Modifiez le SDK OpenAI de sorte qu'il pointe vers le point de terminaison des achèvements du chat 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)
Par défaut, les jetons d'accès durent une heure. Vous pouvez prolonger la durée de vie de votre jeton d'accès ou actualiser régulièrement votre jeton et mettre à jour la variable openai.api_key
.
Variables d'environnement
Installez Google Cloud CLI. La bibliothèque OpenAI peut lire les variables d'environnement OPENAI_API_KEY
et OPENAI_BASE_URL
pour modifier l'authentification et le point de terminaison dans leur client par défaut.
Définissez ces variables :
$ export PROJECT_ID=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
Pour appeler un modèle Gemini, définissez la variable MODEL_ID
et utilisez le point de terminaison openapi
:
$ export MODEL_ID=MODEL_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"
Pour appeler un modèle autodéployé à partir de Model Garden, définissez la variable ENDPOINT
et utilisez-la dans votre URL à la place :
$ export ENDPOINT=ENDPOINT_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"
Ensuite, initialisez le client :
client = openai.OpenAI()
L'API Gemini Chat Completions utilise OAuth pour s'authentifier avec un jeton d'accès de courte durée.
Par défaut, les jetons d'accès durent une heure. Vous pouvez prolonger la durée de vie de votre jeton d'accès ou actualiser régulièrement votre jeton et mettre à jour la variable d'environnement OPENAI_API_KEY
.
Appeler Gemini avec l'API Chat Completions
L'exemple suivant montre comment envoyer des requêtes qui ne sont pas en streaming :
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
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
L'exemple suivant vous montre comment envoyer des requêtes en streaming à un modèle Gemini à l'aide de l'API 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
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Appeler un modèle autodéployé avec l'API Chat Completions
L'exemple suivant montre comment envoyer des requêtes qui ne sont pas en streaming :
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." }] }'
L'exemple suivant montre comment envoyer des requêtes en streaming à un modèle auto-déployé à l'aide de l'API Chat Completions :
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." }] }'
Paramètres possibles
Pour les modèles Google, l'API Chat Completions accepte les paramètres OpenAI suivants. Pour obtenir une description de chaque paramètre, consultez la documentation d'OpenAI sur la création de complétion de chat. La compatibilité des paramètres avec les modèles tiers varie selon le modèle. Pour connaître les paramètres compatibles, consultez la documentation du modèle.
messages |
|
model |
|
max_tokens |
|
n |
|
frequency_penalty |
|
presence_penalty |
|
response_format |
|
stop |
|
stream |
|
temperature |
|
top_p |
|
tools |
|
tool_choice |
|
function_call |
Ce champ est obsolète, mais compatible avec les versions antérieures. |
functions |
Ce champ est obsolète, mais compatible avec les versions antérieures. |
Si vous transmettez un paramètre non compatible, il est ignoré.
Actualiser vos identifiants
L'exemple suivant montre comment actualiser automatiquement vos identifiants si nécessaire :
Python
Étape suivante
- Consultez des exemples d'appel de l'API Inference avec la syntaxe compatible avec OpenAI.
- Consultez des exemples d'appel de l'API d'appel de fonction avec une syntaxe compatible avec OpenAI.
- Apprenez-en plus sur l'API Gemini.
- En savoir plus sur la migration d'Azure OpenAI vers l'API Gemini.