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_tokensettop_ppour 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 | |
|
Obligatoire : Modèle Gemini à utiliser. Pour en savoir plus, consultez les modèles Gemini disponibles. |
|
|
Obligatoire : Liste des messages qui composent la conversation en cours avec le modèle. Chaque message comporte un Différents types de messages (modalités) sont acceptés, comme le texte, les images, l'audio, les vidéos et les documents. |
|
|
Obligatoire : Rôle de l'auteur du message. Il peut s'agir de l'un des rôles suivants :
|
|
|
Obligatoire : 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, |
|
|
Facultatif : Le caractère aléatoire du texte généré. Les valeurs inférieures (plus proches de La valeur par défaut est |
|
|
Facultatif : Nombre maximal de jetons à générer dans la réponse, y compris les jetons de sortie visibles et les jetons de raisonnement. |
|
|
Facultatif : Probabilité d'échantillonnage du noyau. Les valeurs plus élevées (plus proches de La valeur par défaut est |
|
|
Facultatif : Nombre de complétions à générer pour chaque requête. La valeur par défaut est |
|
|
Facultatif : 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 |
|
|
Facultatif : 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 | |
|---|---|---|
|
Obligatoire : Type de contenu pour les requêtes multimodales. Les valeurs acceptées incluent les suivantes :
|
|
|
Obligatoire : 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 Par conséquent, ce nom de champ est l'un des suivants :
Chaque champ d'entrée comporte un |
|
|
Facultatif : 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. |
|
|
Facultatif : 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 |
|
|
Facultatif : Spécification du format des données fournies si le contenu d'entrée est fourni dans le champ 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 | |
|---|---|---|
|
Identifiant unique du texte généré. |
|
|
Type d'objet, qui est toujours |
|
|
Code temporel, en secondes, de la génération du texte. |
|
|
Modèle utilisé pour générer le texte. |
|
|
Liste de choix de génération de texte. Ce champ peut contenir plusieurs choix si |
|
|
Index du choix dans la liste des choix. |
|
|
Message de génération de texte généré par le modèle. Ce champ contient les propriétés suivantes :
|
|
|
Informations sur la probabilité logarithmique du choix. |
|
|
Raison pour laquelle le modèle a cessé de générer des jetons. La valeur est l'une des suivantes :
|
|
|
Statistiques d'utilisation de la requête. |
|
|
Nombre de jetons dans le texte généré. |
|
|
Nombre de jetons dans la requête. |
|
|
Nombre total de jetons dans la requête et le texte généré. |
|
|
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": ""
}