Appeler les API MaaS pour les modèles ouverts

De nombreux modèles ouverts sur Gemini Enterprise Agent Platform proposent des modèles entièrement gérés et sans serveur en tant qu'API à l'aide de Gemini Enterprise Agent Platform Chat Completions API. Pour ces modèles, il n'est pas nécessaire de provisionner ni de gérer l'infrastructure.

Vous pouvez diffuser vos réponses en flux continu pour réduire la perception de la latence côté utilisateur. Une réponse en flux continu utilise des événements envoyés par le serveur (SSE) pour diffuser la réponse de manière incrémentielle.

Cette page explique comment effectuer des appels en flux continu et sans flux continu vers des modèles ouverts compatibles avec l'API OpenAI Chat Completions. Pour connaître les considérations spécifiques à Llama, consultez Demander des prédictions Llama.

Avant de commencer

Pour utiliser des modèles ouverts avec Gemini Enterprise Agent Platform, procédez comme suit. L'API Agent Platform (aiplatform.googleapis.com) doit être activée pour utiliser Gemini Enterprise Agent Platform. Si vous disposez déjà d'un projet pour lequel l'API Agent Platform est activée, vous pouvez utiliser ce projet au lieu de créer un projet.

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  4. Accédez à la fiche de modèle Model Garden pour le modèle que vous souhaitez utiliser, puis cliquez Activer pour activer le modèle dans votre projet.

    Accéder à Model Garden

Effectuer un appel en flux continu à un modèle ouvert

L'exemple suivant effectue un appel en flux continu à un modèle ouvert :

Python

Avant d'essayer cet exemple, suivez les instructions de configuration Python décrites dans le guide de démarrage rapide d'Agent Platform à l'aide des bibliothèques clientes.

Pour vous authentifier auprès d'Agent Platform, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

Avant d'exécuter cet exemple, assurez-vous de définir la variable d'environnement OPENAI_BASE_URL. Pour en savoir plus, consultez Authentification et identifiants.

from openai import OpenAI
client = OpenAI()

stream = client.chat.completions.create(
    model="MODEL",
    messages=[{"role": "ROLE", "content": "CONTENT"}],
    max_tokens=MAX_OUTPUT_TOKENS,
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")
  • MODEL : nom du modèle que vous souhaitez utiliser, par exemple deepseek-ai/deepseek-v3.1-maas.
  • ROLE : rôle associé à un message. Vous pouvez spécifier user ou assistant. Le premier message doit utiliser le rôle user. Les modèles fonctionnent avec des tours user et assistant alternés. Si le message final utilise le rôle assistant, le contenu de la réponse continue immédiatement à partir du contenu de ce message. Cela vous permet de limiter une partie de la réponse du modèle.
  • CONTENT : contenu, tel que le texte, du message user ou assistant.
  • MAX_OUTPUT_TOKENS : nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à quatre caractères. 100 jetons correspondent à environ 60-80 mots.

    Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.

REST

Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester un prompt textuel. L'exemple suivant envoie une requête au point de terminaison du modèle de l'éditeur.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION: région compatible avec les modèles ouverts.
  • MODEL : nom du modèle que vous souhaitez utiliser, par exemple deepseek-ai/deepseek-v2.
  • ROLE : rôle associé à un message. Vous pouvez spécifier user ou assistant. Le premier message doit utiliser le rôle user. Les modèles fonctionnent avec des tours user et assistant alternés. Si le message final utilise le rôle assistant, le contenu de la réponse continue immédiatement à partir du contenu de ce message. Cela vous permet de limiter une partie de la réponse du modèle.
  • CONTENT : contenu, tel que le texte, du message user ou assistant.
  • MAX_OUTPUT_TOKENS : nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à quatre caractères. 100 jetons correspondent à environ 60-80 mots.

    Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.

  • STREAM : valeur booléenne qui spécifie si la réponse est diffusée ou non. Diffusez votre réponse en flux continu pour réduire la perception de la latence que peuvent avoir les utilisateurs finaux. Définissez la valeur sur true pour diffuser la réponse et sur false pour la renvoyer simultanément.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions

Corps JSON de la requête :

{
  "model": "MODEL",
  "messages": [
    {
      "role": "ROLE",
      "content": "CONTENT"
    }
  ],
  "max_tokens": MAX_OUTPUT_TOKENS,
  "stream": true
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Effectuer un appel sans flux continu à un modèle ouvert

L'exemple suivant effectue un appel sans flux continu à un modèle ouvert :

Python

Avant d'essayer cet exemple, suivez les instructions de configuration Python décrites dans le guide de démarrage rapide d'Agent Platform à l'aide des bibliothèques clientes.

Pour vous authentifier auprès d'Agent Platform, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

Avant d'exécuter cet exemple, assurez-vous de définir la variable d'environnement OPENAI_BASE_URL. Pour en savoir plus, consultez Authentification et identifiants.

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
    model="MODEL",
    messages=[{"role": "ROLE", "content": "CONTENT"}],
    max_tokens=MAX_OUTPUT_TOKENS,
    stream=False,
)
print(completion.choices[0].message)
  • MODEL : nom du modèle que vous souhaitez utiliser, par exemple deepseek-ai/deepseek-v3.1-maas.
  • ROLE : rôle associé à un message. Vous pouvez spécifier user ou assistant. Le premier message doit utiliser le rôle user. Les modèles fonctionnent avec des tours user et assistant alternés. Si le message final utilise le rôle assistant, le contenu de la réponse continue immédiatement à partir du contenu de ce message. Cela vous permet de limiter une partie de la réponse du modèle.
  • CONTENT : contenu, tel que le texte, du message user ou assistant.
  • MAX_OUTPUT_TOKENS : nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à quatre caractères. 100 jetons correspondent à environ 60-80 mots.

    Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.

REST

Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester un prompt textuel. L'exemple suivant envoie une requête au point de terminaison du modèle de l'éditeur.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION: région compatible avec les modèles ouverts.
  • MODEL : nom du modèle que vous souhaitez utiliser, par exemple deepseek-ai/deepseek-v2.
  • ROLE : rôle associé à un message. Vous pouvez spécifier user ou assistant. Le premier message doit utiliser le rôle user. Les modèles fonctionnent avec des tours user et assistant alternés. Si le message final utilise le rôle assistant, le contenu de la réponse continue immédiatement à partir du contenu de ce message. Cela vous permet de limiter une partie de la réponse du modèle.
  • CONTENT : contenu, tel que le texte, du message user ou assistant.
  • MAX_OUTPUT_TOKENS : nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à quatre caractères. 100 jetons correspondent à environ 60-80 mots.

    Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.

  • STREAM : valeur booléenne qui spécifie si la réponse est diffusée ou non. Diffusez votre réponse en flux continu pour réduire la perception de la latence que peuvent avoir les utilisateurs finaux. Définissez la valeur sur true pour diffuser la réponse et sur false pour la renvoyer simultanément.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions

Corps JSON de la requête :

{
  "model": "MODEL",
  "messages": [
    {
      "role": "ROLE",
      "content": "CONTENT"
    }
  ],
  "max_tokens": MAX_OUTPUT_TOKENS,
  "stream": false
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Points de terminaison régionaux et mondiaux

Pour les points de terminaison régionaux, les requêtes sont traitées à partir de la région que vous avez spécifiée. Si vous avez des exigences en matière de résidence des données ou si un modèle n'est pas compatible avec le point de terminaison mondial, utilisez les points de terminaison régionaux.

Lorsque vous utilisez le point de terminaison mondial, Google peut traiter et diffuser vos requêtes à partir de n'importe quelle région compatible avec le modèle que vous utilisez. Dans certains cas, cela peut entraîner une latence plus élevée. Le point de terminaison mondial contribue à améliorer la disponibilité globale et à réduire les erreurs.

Il n'y a pas de différence de prix avec les points de terminaison régionaux lorsque vous utilisez le point de terminaison mondial. Toutefois, les quotas de points de terminaison mondiaux et les fonctionnalités de modèle compatibles peuvent différer des points de terminaison régionaux. Pour en savoir plus, consultez la page du modèle tiers associé.

Spécifier le point de terminaison mondial

Pour utiliser le point de terminaison mondial, définissez la région sur global.

Par exemple, l'URL de requête d'une commande curl utilise le format suivant : https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/endpoints/openapi

Pour le SDK Agent Platform, un point de terminaison régional est défini par défaut. Définissez la région sur GLOBAL pour utiliser le point de terminaison mondial.

Restreindre l'utilisation des points de terminaison d'API mondiaux

Pour appliquer l'utilisation de points de terminaison régionaux, utilisez la contrainte de règle d'administration constraints/gcp.restrictEndpointUsage afin de bloquer les requêtes envoyées au point de terminaison d'API mondial. Pour en savoir plus, consultez Restreindre l'utilisation des points de terminaison.

Étape suivante