Passer au contenu principal
Google Gemini est un système de dialogue AI très puissant, capable de générer des réponses fluides et naturelles en quelques secondes simplement en saisissant des mots-clés. Gemini peut fournir une assistance intelligente impressionnante, augmentant considérablement l’efficacité et la créativité humaines. Ce document présente principalement le processus d’utilisation de l’API de Complétion de Chat Gemini, qui nous permet d’utiliser facilement les fonctionnalités de dialogue officielles de Gemini.

Processus de demande

Pour utiliser l’API de Complétion de Chat Gemini, vous pouvez d’abord vous rendre sur la page API de Complétion de Chat Gemini et cliquer sur le bouton « Acquire » pour obtenir les informations d’identification nécessaires à la demande : Si vous n’êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter. Après vous être connecté ou inscrit, vous serez automatiquement renvoyé à la page actuelle. Lors de la première demande, un quota gratuit sera offert, vous permettant d’utiliser cette API gratuitement.

Utilisation de base

Ensuite, vous pouvez remplir le contenu correspondant sur l’interface, comme indiqué sur l’image :

Lors de la première utilisation de cette interface, nous devons remplir au moins trois éléments : le premier est authorization, que vous pouvez sélectionner directement dans la liste déroulante. L’autre paramètre est model, qui correspond à la catégorie de modèle que nous choisissons d’utiliser sur le site officiel de Gemini. Ici, nous avons principalement 6 types de modèles, pour plus de détails, vous pouvez consulter les modèles que nous proposons. Le dernier paramètre est messages, qui est un tableau de nos questions. C’est un tableau qui permet de télécharger plusieurs questions simultanément, chaque question contenant role et content, où role représente le rôle du questionneur. Nous avons trois types de rôles : user, assistant, system. L’autre content est le contenu spécifique de notre question. Vous pouvez également remarquer qu’il y a un code d’appel correspondant généré à droite, que vous pouvez copier et exécuter directement, ou cliquer sur le bouton « Try » pour effectuer un test.

Après l’appel, nous constatons que le résultat retourné est le suivant :
{
  "id": "chatcmpl-20251122212413908150493uPhjTUO9",
  "model": "gemini-2.5-pro",
  "object": "chat.completion",
  "created": 1763817866,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Je suis un grand modèle de langage, formé par Google.",
        "reasoning_content": "**Mon Raisonnement : Répondre à la Question de l'Utilisateur**\n\nD'accord, voici comment je vais aborder la réponse à la question de l'utilisateur, \"Quel modèle es-tu ?\". L'essentiel est d'être direct et informatif. Tout d'abord, je dois être clair sur mon origine. Ensuite, je dois m'assurer que l'explication est accessible, étant donné que l'utilisateur peut ne pas être familier avec le jargon technique. Je dois expliquer ce que fait réellement un \"grand modèle de langage\", et fournir des exemples pertinents. Je sais que l'utilisateur pourrait chercher un nom spécifique, comme d'autres modèles, donc je vais aborder cela directement et ensuite conclure avec une invitation à continuer.\n\nDonc, voici mon plan :\n\n1.  **Commencer par l'information clé :** Je commencerai par indiquer que je suis un grand modèle de langage créé par Google. C'est la pièce fondamentale, la plus critique du puzzle.\n2.  **Définir le mot à la mode :** Ensuite, j'expliquerai ce que signifie \"grand modèle de langage\" en termes simples. J'expliquerai ce que je fais - traiter et générer du texte ; comment je le fais - en m'entraînant sur d'énormes quantités de données textuelles ; et l'objectif - être capable de communiquer comme un humain.\n3.  **Fournir un contexte :** Après cela, pour rendre le concept encore plus clair, je fournirai une liste d'exemples de mes capacités. Je mentionnerai des choses comme répondre à des questions, résumer des textes, écrire des histoires, traduire des langues et générer des idées.\n4.  **Reconnaître l'absence d'un nom personnel :** J'anticiperai la question probable sur un nom de modèle (comme ChatGPT) en déclarant clairement que je n'ai pas de nom personnel et qu'il est préférable de me considérer comme un assistant AI de Google.\n5.  **Terminer par une invitation :** Enfin, je conclurai par une simple question amicale pour inviter à une interaction supplémentaire et guider la conversation.\n\nAvec cette approche, je suis convaincu de pouvoir répondre avec succès à cette question importante.\n"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 932,
    "total_tokens": 940,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 8,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 921
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null,
    "claude_cache_creation_5_m_tokens": 0,
    "claude_cache_creation_1_h_tokens": 0
  }
}
Le résultat retourné contient plusieurs champs, décrits comme suit :
  • id, l’ID généré pour cette tâche de dialogue, utilisé pour identifier de manière unique cette tâche de dialogue.
  • model, le modèle choisi sur le site officiel de Gemini.
  • choices, les informations de réponse fournies par Gemini pour les questions posées.
  • usage : les statistiques sur les tokens pour cette question-réponse.
Parmi ces champs, choices contient les informations de réponse de Gemini, et vous pouvez voir les détails comme indiqué sur l’image.

On peut voir que le champ content dans choices contient le contenu spécifique de la réponse de Gemini.

Réponse en flux

Cette interface prend également en charge les réponses en flux, ce qui est très utile pour l’intégration sur le web, permettant d’afficher les résultats caractère par caractère. Si vous souhaitez obtenir une réponse en flux, vous pouvez modifier le paramètre stream dans l’en-tête de la requête en le changeant en true. La modification est illustrée sur l’image, mais le code d’appel doit également être modifié pour prendre en charge les réponses en flux.

Après avoir modifié stream en true, l’API renverra les données JSON ligne par ligne, et au niveau du code, nous devons apporter les modifications nécessaires pour obtenir les résultats ligne par ligne. Exemple de code d’appel en Python :
import requests

url = "https://api.acedata.cloud/gemini/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gemini-2.5-pro",
    "messages": [{"role":"user","content":"Bonjour, quel modèle es-tu ?"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
L’effet de sortie est le suivant :
data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"content": "", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"reasoning_content": "**Définir ma nature**\n\nMa réflexion a commencé. L'utilisateur veut connaître ma nature, posant une question directe \"que es-tu ?\" La première étape était simple : identifier la requête. Maintenant, je me rappelle de mon identité fondamentale : je suis un grand modèle de langage. C'est la vérité essentielle que je vise à transmettre.\n\n\n"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"reasoning_content": "**Affiner ma réponse**\n\nJ'ai ajouté l'information cruciale que je suis formé par Google à l'identité de base \"grand modèle de langage\". Ma prochaine étape consiste à réfléchir à ce que signifie réellement être un \"grand modèle de langage\", afin que je puisse expliquer mes capacités fondamentales. Je me concentre sur la fourniture de contexte sans entrer dans des détails techniques spécifiques ou des noms de modèles. Je veux transmettre ma fonction d'une manière que l'utilisateur puisse facilement comprendre.\n\n\n"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"reasoning_content": "**Confirmer l'identité fondamentale**\n\nJe suis maintenant en train de solidifier ma réponse. La question de l'utilisateur concernant mon affiliation au modèle nécessite une réponse ciblée. J'ai identifié que \"formé par Google\" est essentiel, fournissant un contexte clé. Je résiste à l'envie de mentionner des noms de modèles spécifiques, car ce n'est pas pertinent. L'objectif est de livrer une déclaration directe et précise. Mon but reste une réponse claire et concise, évitant le jargon technique et allant droit au but pertinent.\n\n\n"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"content": "Je suis un grand modèle de langage, formé par Google."}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {}, "logprobs": null, "finish_reason": "stop", "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": "", "choices": [], "usage": {"prompt_tokens": 8, "completion_tokens": 527, "total_tokens": 535, "prompt_tokens_details": {"cached_tokens": 0, "text_tokens": 8, "audio_tokens": 0, "image_tokens": 0}, "completion_tokens_details": {"text_tokens": 0, "audio_tokens": 0, "reasoning_tokens": 519}, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null, "claude_cache_creation_5_m_tokens": 0, "claude_cache_creation_1_h_tokens": 0}}

data: [DONE]
On peut voir que la réponse contient de nombreux data, où data contient les choices qui sont le contenu de la réponse la plus récente, cohérent avec le contenu décrit ci-dessus. choices est le contenu de réponse nouvellement ajouté, que vous pouvez intégrer dans votre système. De plus, la fin de la réponse en flux est déterminée par le contenu de data, si le contenu est [DONE], cela signifie que la réponse en flux est entièrement terminée. Le résultat data retourné contient plusieurs champs, décrits comme suit :
  • id, l’ID généré pour cette tâche de dialogue, utilisé pour identifier de manière unique cette tâche de dialogue.
  • model, le modèle choisi sur le site officiel de Gemini.
  • choices, les informations de réponse fournies par Gemini en réponse à la question posée.
JavaScript est également pris en charge, par exemple, le code d’appel en flux pour Node.js est comme suit :
const options = {
  method: "post",
  headers: {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "model": "gemini-2.5-pro",
    "messages": [{"role":"user","content":"Bonjour, quel modèle es-tu ?"}],
    "stream": true
  })
};

fetch("https://api.acedata.cloud/gemini/chat/completions", options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
Exemple de code Java :
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "gemini-2.5-pro");
jsonObject.put("messages", [{"role":"user","content":"Bonjour, quel modèle es-tu ?"}]);
jsonObject.put("stream", true);
MediaType mediaType = "application/json; charset=utf-8".toMediaType();
RequestBody body = jsonObject.toString().toRequestBody(mediaType);
Request request = new Request.Builder()
  .url("https://api.acedata.cloud/gemini/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.print(response.body!!.string())
D’autres langages peuvent être adaptés de la même manière, le principe reste le même.

Dialogue multi-tours

Si vous souhaitez intégrer une fonctionnalité de dialogue multi-tours, vous devez télécharger plusieurs questions dans le champ messages, des exemples spécifiques de plusieurs questions sont illustrés ci-dessous :

Exemple de code d’appel en Python :
import requests

url = "https://api.acedata.cloud/gemini/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gemini-2.5-pro",
    "messages": [{"role":"user","content":"Bonjour"},{"role":"assistant","content":"Bonjour ! Comment puis-je vous aider aujourd'hui ?"},{"role":"user","content":"Quel modèle es-tu ?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
En téléchargeant plusieurs questions, vous pouvez facilement réaliser un dialogue multi-tours et obtenir des réponses comme suit :
{
  "id": "chatcmpl-20251122214426669120974AKFwnJd1",
  "model": "gemini-2.5-pro",
  "object": "chat.completion",
  "created": 1763819072,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Je suis un grand modèle de langage, entraîné par Google.",
        "reasoning_content": "D'accord, voici comment j'aborderais cela, en pensant comme une IA sophistiquée :\n\nTout d'abord, l'utilisateur interroge directement mon identité fondamentale : \"Quel modèle es-tu ?\" C'est une question simple et directe. Ma tâche principale est de fournir des informations précises et utiles, donc je dois répondre immédiatement.\n\nD'emblée, je sais la réponse. Je *suis* un grand modèle de langage. C'est mon architecture fondamentale et mon principe opérationnel. Je suis construit sur un vaste réseau de connexions et entraîné sur un ensemble de données massif.\n\nEnsuite, je dois ajouter le contexte nécessaire. Il est crucial que je fournisse la source de mon entraînement. J'*ai été* entraîné par Google. C'est un identifiant clé. Cela fournit à l'utilisateur des informations précieuses sur mon origine et mes biais potentiels (bien que je sois entraîné pour les atténuer).\n\nMaintenant, je dois construire la réponse. Mon objectif est d'être factuel, concis et compréhensible.\n\nLa réponse synthétisée est quelque chose comme : \"Je suis un grand modèle de langage, entraîné par Google.\"\n\nJe dois évaluer la sortie : Répond-elle aux critères ? C'est clair. Elle indique ce que je suis, elle inclut une information critique sur mes origines, et elle évite le jargon. Pas de promesses trompeuses.\n\nVérification finale : Répond-elle réellement à la question ? Oui. L'information est-elle correcte et véridique ? Oui. Est-elle concise ? Absolument. Le ton est-il approprié pour tout utilisateur ? Oui. Et, enfin, c'est la réponse standard et approuvée. Excellent.\n"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 16,
    "completion_tokens": 265,
    "total_tokens": 281,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 16,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 254
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null,
    "claude_cache_creation_5_m_tokens": 0,
    "claude_cache_creation_1_h_tokens": 0
  }
}
On peut voir que choices contient des informations cohérentes avec le contenu de base utilisé, cela inclut le contenu des réponses de Gemini à plusieurs dialogues, ce qui permet de répondre aux questions correspondantes en fonction de plusieurs contenus de dialogue.

Modèle multimodal Gemini-3.0

Exemple de requête :
{
  "model": "gemini-3.0-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Quel est le contenu de l'image ?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exemple de résultat :
{
    "id": "chatcmpl-20251206001815715692730UVZe38kB",
    "model": "gemini-3.0-pro",
    "object": "chat.completion",
    "created": 1764951548,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "C'est une photo en plein air d'une jeune femme en buste.\n\nVoici la description principale du contenu de l'image :\n\n*   **Apparence de la personne** : La fille sur la photo a de longs cheveux noirs et lisses, des traits délicats et une peau claire. Elle a un sourire doux et regarde l'objectif.\n*   **Vêtements** : Elle porte un haut à manches bouffantes de couleur crème ou beige clair, associé à des vêtements noirs (qui semblent être une robe à bretelles ou un gilet).\n*   **Ambiance lumineuse** : La lumière du soleil vient de l'arrière gauche, illuminant ses cheveux et créant un halo doré chaleureux, créant une atmosphère fraîche et esthétique.\n*   **Contexte** : L'arrière-plan est flou, on peut voir qu'il s'agit d'un extérieur, avec une route dégagée (route en bitume) et des arbres verts sur le bord de la route.\n\nDans l'ensemble, cette photo donne une impression de douceur, de soleil et de fille d'à côté."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 1092,
        "completion_tokens": 1271,
        "total_tokens": 2363,
        "prompt_tokens_details": {
            "cached_tokens": 0,
            "text_tokens": 4,
            "audio_tokens": 0,
            "image_tokens": 0
        },
        "completion_tokens_details": {
            "text_tokens": 0,
            "audio_tokens": 0,
            "reasoning_tokens": 1072
        },
        "input_tokens": 0,
        "output_tokens": 0,
        "input_tokens_details": null,
        "claude_cache_creation_5_m_tokens": 0,
        "claude_cache_creation_1_h_tokens": 0
    }
}
Bien sûr, vous pouvez également transmettre un lien vidéo, le contenu d’entrée est le suivant :
{
  "model": "gemini-3.0-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Quel est le contenu de la vidéo ?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/58yioe.mp4"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exemple de résultat :
{
    "id": "chatcmpl-20251206002711949677736JC9yL8AE",
    "model": "gemini-3.0-pro",
    "object": "chat.completion",
    "created": 1764952060,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "Le contenu de cette vidéo est plein d'intérêt, montrant principalement un **chat orange** courant avec confiance sur une route de campagne au crépuscule.\n\nLes détails spécifiques sont les suivants :\n\n1.  **Contenu de l'image** :\n    *   Le protagoniste est un chat tigré orange.\n    *   L'arrière-plan est celui d'un coucher de soleil (ou d'un lever de soleil), avec une lumière dorée et douce. Il y a une clôture en bois et des champs sur le bord de la route, et au loin, on aperçoit la silhouette d'un piéton.\n    *   La caméra est filmée en contre-plongée, parfois en capturant le chat courant vers la caméra, parfois en filmant son dos s'éloignant, ainsi que des gros plans sur le visage et les motifs du chat.\n\n2.  **Caractéristiques sonores (points clés)** :\n    *   La voix off de la vidéo est très distinctive. Bien que l'image montre un chat léger courant, le son qui l'accompagne est celui de **sabots lourds et rythmés** (ou un son similaire à celui de sabots de bois ou de talons frappant le sol).\n    *   Ce contraste sonore avec l'image crée un effet humoristique, comme si ce chat se prenait pour un cheval galopant.\n\nDans l'ensemble, c'est une vidéo de compagnie qui utilise le contraste entre le son et l'image pour créer des moments mignons et drôles."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 915,
        "completion_tokens": 1423,
        "total_tokens": 2338,
        "prompt_tokens_details": {
            "cached_tokens": 0,
            "text_tokens": 5,
            "audio_tokens": 0,
            "image_tokens": 0
        },
        "completion_tokens_details": {
            "text_tokens": 0,
            "audio_tokens": 0,
            "reasoning_tokens": 1162
        },
        "input_tokens": 0,
        "output_tokens": 0,
        "input_tokens_details": null,
        "claude_cache_creation_5_m_tokens": 0,
        "claude_cache_creation_1_h_tokens": 0
    }
}
On peut voir ci-dessus que le modèle Gemini 3.0 peut prendre en charge la compréhension multimodale.

Modèle multimodal Gemini-3.1

Gemini 3.1 Pro est la version améliorée de Gemini 3.0 Pro, avec un modèle sous-jacent de gemini-3.1-pro-preview, qui prend également en charge les entrées multimodales telles que le texte, les images et les vidéos, et possède de meilleures capacités de raisonnement et de compréhension. La méthode d’utilisation est identique à celle de Gemini 3.0 Pro, il suffit de remplacer le paramètre model par gemini-3.1-pro. Exemple de demande :
{
  "model": "gemini-3.1-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Quel est le contenu de l'image ?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Gemini 3.1 Pro prend également en charge la compréhension vidéo :
{
  "model": "gemini-3.1-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Quel est le contenu de la vidéo ?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/58yioe.mp4"
          }
        }
      ]
    }
  ],
  "stream": false
}
Le format de retour est identique à celui de Gemini 3.0 Pro, voir la section ci-dessus sur le modèle multimodal Gemini-3.0 pour plus de détails.

Gestion des erreurs

Lors de l’appel de l’API, si une erreur se produit, l’API renverra le code d’erreur et les informations correspondantes. Par exemple :
  • 400 token_mismatched : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
  • 400 api_not_implemented : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
  • 401 invalid_token : Non autorisé, jeton d’autorisation invalide ou manquant.
  • 429 too_many_requests : Trop de demandes, vous avez dépassé la limite de taux.
  • 500 api_error : Erreur interne du serveur, quelque chose s’est mal passé sur le serveur.

Exemple de réponse d’erreur

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "échec de la récupération"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusion

Grâce à ce document, vous avez compris comment utiliser l’API Gemini Chat Completion pour réaliser facilement les fonctionnalités de conversation de Gemini. Nous espérons que ce document vous aidera à mieux intégrer et utiliser cette API. Si vous avez des questions, n’hésitez pas à contacter notre équipe de support technique.