Mettre en forme vos requêtes API

Cette page vous explique comment mettre en forme les requêtes d'API pour Gemini sur Google Distributed Cloud (GDC) air-gapped à l'aide des détails du corps de la requête du point de terminaison OpenAI Chat Completions. En respectant ce format, vous pouvez intégrer de manière fluide les fonctionnalités avancées de Gemini dans vos applications tout en utilisant la structure de l'API OpenAI.

La famille de modèles Gemini inclut des modèles qui fonctionnent avec des requêtes multimodales. Le terme "multimodal" indique que vous pouvez utiliser plusieurs modalités ou types d'entrée dans une requête. Pour en savoir plus, consultez Concevoir des requêtes.

Pour en savoir plus sur les descriptions génériques des types, des méthodes et des champs générés pour la bibliothèque gRPC, consultez la documentation de référence Gemini gRPC.

Avant de commencer

Avant de mettre en forme vos requêtes API, assurez-vous de remplir les conditions préalables suivantes :

  • Découvrez les fonctionnalités de Gemini sur GDC.
  • Commencez par consulter la configuration minimale requise pour les projets afin d'envoyer des requêtes d'API pour Gemini.
  • Identifiez l'ID de point de terminaison du modèle Gemini que vous souhaitez utiliser dans vos requêtes. Sélectionner un modèle spécifique vous permet d'utiliser ses fonctionnalités uniques pour vos tâches. Consultez les modèles Gemini disponibles sur GDC.
  • Découvrez comment formuler vos requêtes avec soin pour obtenir les réponses attendues de Gemini. Testez différents styles et formats de requêtes pour optimiser le résultat. Pour en savoir plus, consultez Présentation des requêtes.
  • Explorez les différents paramètres disponibles dans le point de terminaison OpenAI Chat Completions pour contrôler le comportement de Gemini. Ajustez des paramètres tels que temperature, max_completion_tokens et top_p pour contrôler la créativité, la longueur et la diversité du texte généré. Pour en savoir plus, consultez Tester des paramètres.

Syntaxe des requêtes

Les exemples suivants contiennent la syntaxe que vous devez utiliser dans vos requêtes API pour générer une réponse du modèle :

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "MODEL_ID",
  messages = [
    {
      ...
    }
  ]
  ...
)

print(model_response)

curl

curl \
  -X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
  -d '{
      "model_id": "MODEL_ID",
      "messages" = [
        {
          ...
        }
      ]
      ...
  }'

Paramètres de l'API

Cette section contient une liste des paramètres les plus importants que vous pouvez définir dans le corps de la requête de vos requêtes d'API pour Gemini sur GDC et dans le corps de la réponse que le modèle doit renvoyer. Pour obtenir la documentation de référence complète sur le point de terminaison Chat Completions d'OpenAI, consultez https://platform.openai.com/docs/api-reference/chat.

Corps de la requête

{
  "messages" = [
    {
      "role": string,
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": string
          }
        },
        {
          "type": "input_audio",
          "input_audio": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "audio_url",
          "audio_url": {
            "url": string
          }
        },
        {
          "type": "input_video",
          "input_video": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "video_url",
          "video_url": {
            "url": string
          }
        },
        {
          "type": "input_document",
          "input_document": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "document_url",
          "document_url": {
            "url": string
          }
        }
      ]
    }
  ],
  "temperature": number,
  "max_completion_tokens": integer,
  "top_p": number,
  "n": integer,
  "stop": string,
  "user": string
}

Le tableau suivant décrit les principaux champs et leur signification dans le corps de la requête pour le point de terminaison OpenAI Chat Completions lorsqu'il est utilisé avec Gemini :

Paramètres
Nom du champ Description

model

Obligatoire : string

Modèle Gemini à utiliser.

Pour en savoir plus, consultez les modèles Gemini disponibles.

messages

Obligatoire : object

Liste des messages qui composent la conversation en cours avec le modèle. Chaque message comporte un role et un content.

Différents types de messages (modalités) sont acceptés, comme le texte, les images, l'audio, les vidéos et les documents.

role

Obligatoire : string

Rôle de l'auteur du message. Il peut s'agir de l'un des rôles suivants :

  • system : instructions fournies par le système que le modèle doit suivre, quels que soient les messages envoyés par l'utilisateur.
  • user : messages fournis par l'utilisateur auxquels le modèle doit répondre et qui contiennent des requêtes ou des informations contextuelles supplémentaires.
  • assistant : messages fournis par le modèle en réponse aux messages des utilisateurs.

content

Obligatoire : string ou array

Contenu du message provenant du système, de l'utilisateur ou de l'assistant.

La valeur est une instance unique pour les requêtes à un seul tour. Pour les requêtes multitours, content est un champ répété contenant l'historique de la conversation et la dernière requête. Pour en savoir plus, consultez content.

temperature

Facultatif : number ou null

Le caractère aléatoire du texte généré.

Les valeurs inférieures (plus proches de 0) produisent des réponses plus déterministes et ciblées, tandis que les valeurs supérieures (plus proches de 2) produisent des résultats plus diversifiés et créatifs.

La valeur par défaut est 1.

max_completion_tokens

Facultatif : integer ou null

Nombre maximal de jetons à générer dans la réponse, y compris les jetons de sortie visibles et les jetons de raisonnement.

top_p

Facultatif : number ou null

Probabilité d'échantillonnage du noyau.

Les valeurs plus élevées (plus proches de 1) échantillonnent à partir d'une plus large gamme de jetons potentiels, tandis que les valeurs plus faibles (plus proches de 0) se concentrent sur les jetons les plus probables.

La valeur par défaut est 1.

n

Facultatif : integer ou null

Nombre de complétions à générer pour chaque requête.

La valeur par défaut est 1.

stop

Facultatif : string, array ou null

Liste de chaînes qui, lorsqu'elles sont rencontrées, interrompent le processus de génération de texte.

La valeur par défaut est null.

user

Facultatif : string

Identifiant unique de l'utilisateur final.

Ce paramètre vous permet de suivre les habitudes d'utilisation et de personnaliser les réponses.

content

Ce champ est le type de données structurées de base contenant le contenu en plusieurs parties d'un message.

Si l'entrée est une invite textuelle, la valeur de ce champ est une chaîne. Toutefois, pour les requêtes multimodales, ce champ se compose d'un tableau contenant deux propriétés principales dans chaque objet : type et INPUT. La propriété type indique le type de contenu de l'entrée multimodale, tandis que la propriété INPUT contient l'élément d'entrée, représenté sous forme de données encodées en base64 ou d'URL provenant d'un bucket de stockage GDC.

Le tableau suivant décrit les principaux champs content et leurs descriptions pour les requêtes multimodales :

Nom du champ Description

type

Obligatoire : string

Type de contenu pour les requêtes multimodales. Les valeurs acceptées incluent les suivantes :

  • image_url : le contenu d'entrée est une image fournie sous forme de données encodées en base64 ou sous forme d'URL provenant d'un bucket de stockage GDC.
  • input_audio : le contenu d'entrée est un fichier audio fourni sous forme de données encodées en base64.
  • audio_url : le contenu d'entrée est un fichier audio fourni sous forme d'URL à partir d'un bucket de stockage GDC.
  • input_video : le contenu d'entrée est une vidéo fournie sous forme de données encodées en base64.
  • video_url : le contenu d'entrée est une vidéo fournie sous forme d'URL à partir d'un bucket de stockage GDC.
  • input_document : le contenu d'entrée est un document fourni sous forme de données encodées en base64.
  • document_url : le contenu d'entrée est un document fourni sous forme d'URL à partir d'un bucket de stockage GDC.

INPUT

Obligatoire : object

Contenu d'entrée pour les requêtes multimodales. Le nom de ce champ doit être identique à la valeur spécifiée dans le champ type.

Par conséquent, ce nom de champ est l'un des suivants :

  • Pour les images : image_url
  • Pour l'audio : input_audio ou audio_url
  • Pour les vidéos : input_video ou video_url
  • Pour les documents : input_document ou document_url.

Chaque champ d'entrée comporte un url ou un data et un format.

url

Facultatif : string

Si le contenu d'entrée est fourni sous forme d'URL, il s'agit du chemin d'accès au fichier dans un bucket de stockage GDC.

Dans le cas des images, ce champ peut contenir des données encodées en base64 au lieu d'une URL.

data

Facultatif : string

Si le contenu d'entrée est fourni sous forme de données encodées en base64, les données binaires sont converties en chaîne de caractères.

Dans le cas des images, les données encodées en base64 sont fournies dans le champ url.

format

Facultatif : string

Spécification du format des données fournies si le contenu d'entrée est fourni dans le champ data.

Différents formats sont acceptés selon les données d'entrée. Pour en savoir plus, consultez les types MIME pour les images, les fichiers audio, les vidéos et les documents.

Corps de la réponse

{
  "id": string,
  "object": string,
  "created": integer,
  "model": string,
  "choices": [
    {
      "index": integer,
      "message": {
        "role": string,
        "content": string,
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": string
    }
  ],
  "usage": {
    "completion_tokens": integer,
    "prompt_tokens": integer,
    "total_tokens": integer
  },
  "system_fingerprint": string
}

Le tableau suivant décrit les principaux champs et leur description dans le corps de la réponse renvoyée par le modèle en fonction de l'entrée fournie :

Nom du champ Description

id

string

Identifiant unique du texte généré.

object

string

Type d'objet, qui est toujours chat.completion.

created

integer

Code temporel, en secondes, de la génération du texte.

model

string

Modèle utilisé pour générer le texte.

choices

array

Liste de choix de génération de texte. Ce champ peut contenir plusieurs choix si n est supérieur à 1.

index

integer

Index du choix dans la liste des choix.

message

object

Message de génération de texte généré par le modèle. Ce champ contient les propriétés suivantes :

  • role : (string) rôle de l'auteur du message.
  • content : (string ou null) contenu du message.
  • refusal : (string ou null) message de refus généré par le modèle.

logprobs

object ou null

Informations sur la probabilité logarithmique du choix.

finish_reason

string

Raison pour laquelle le modèle a cessé de générer des jetons. La valeur est l'une des suivantes :

  • stop : le modèle atteint un point d'arrêt naturel ou une séquence d'arrêt fournie.
  • length : le nombre maximal de jetons spécifié dans la requête a été atteint.
  • content_filter : le contenu est omis en raison d'un signalement des filtres de contenu.
  • tool_calls : modèle appelant un outil.

usage

object

Statistiques d'utilisation de la requête.

completion_tokens

integer

Nombre de jetons dans le texte généré.

prompt_tokens

integer

Nombre de jetons dans la requête.

total_tokens

integer

Nombre total de jetons dans la requête et le texte généré.

system_fingerprint

string

Configuration du backend que le modèle utilise pour s'exécuter.

Exemples

Cette section contient un exemple de corps de requête et de réponse de génération de texte que le modèle doit renvoyer.

Exemple de requête

L'exemple suivant montre les détails d'un corps de requête qui envoie une invite à Gemini pour générer du texte. L'exemple contient des contrôles de température et de jetons maximum. Pour en savoir plus sur l'implémentation, consultez Envoyer une requête textuelle ou Envoyer une requête multimodale.

{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful and informative assistant."
    },
    {
      "role": "user",
      "content": "What is the capital of France?"
    }
  ],
  "temperature": 0.7,
  "max_completion_tokens": 100
}

Exemple de réponse

L'exemple suivant montre les détails d'une réponse de génération de texte renvoyée par le modèle :

{
  "id": "",
  "object": "",
  "created": 0,
  "model": "",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "The capital of France is Paris.\n",
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "completion_tokens": 7,
    "prompt_tokens": 8,
    "total_tokens": 15
  },
  "system_fingerprint": ""
}

Étapes suivantes