Passer au contenu principal
OpenAI ChatGPT 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. ChatGPT se distingue dans l’industrie par sa remarquable capacité de compréhension et de génération de langage. Aujourd’hui, ChatGPT est largement utilisé dans divers secteurs et domaines, et son influence devient de plus en plus significative. Que ce soit pour des conversations quotidiennes, de l’écriture créative, ou des consultations professionnelles, ou de la programmation de code, ChatGPT 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 OpenAI, qui nous permet d’utiliser facilement les fonctionnalités de dialogue de l’OpenAI ChatGPT officiel.

Processus de demande

Pour utiliser l’API de Complétion de Chat OpenAI, vous pouvez d’abord vous rendre sur la page OpenAI Chat Completion API 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 votre 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 d’OpenAI ChatGPT. Ici, nous avons principalement 20 modèles, dont les détails peuvent être consultés dans les modèles que nous fournissons. Le dernier paramètre est messages, qui est un tableau de nos questions. Il s’agit d’un tableau qui permet de télécharger plusieurs questions simultanément, chaque question contenant role et content, où role indique le rôle du questionneur. Nous avons trois identités : 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. Paramètres optionnels courants :
  • max_tokens : limite le nombre maximum de tokens pour une réponse unique.
  • temperature : génère de l’aléatoire, entre 0 et 2, plus la valeur est élevée, plus c’est dispersé.
  • n : combien de réponses candidates générer en une seule fois.
  • response_format : paramètres de format de retour.

Après l’appel, nous constatons que le résultat retourné est le suivant :
{
  "id": "chatcmpl-Cmd6uwSxN75F4PAdQSFEO8f2QPs4E",
  "object": "chat.completion",
  "created": 1765706120,
  "model": "gpt-5.2",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Bonjour ! Comment puis-je vous aider aujourd'hui ?",
        "refusal": null,
        "annotations": []
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 7,
    "completion_tokens": 13,
    "total_tokens": 20,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default",
  "system_fingerprint": null
}
Le résultat retourné contient plusieurs champs, décrits comme suit :
  • id, l’ID de la tâche de dialogue générée, utilisé pour identifier de manière unique cette tâche de dialogue.
  • model, le modèle choisi sur le site officiel d’OpenAI ChatGPT.
  • choices, les informations de réponse fournies par ChatGPT en réponse aux questions.
  • usage : les informations statistiques sur les tokens pour cette question-réponse.
Parmi ces champs, choices contient les informations de réponse de ChatGPT, et vous pouvez voir comme indiqué sur l’image.

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

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 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/openai/chat/completions"

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

payload = {
    "model": "gpt-4",
    "messages": [{"role":"user","content":"hello"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
L’effet de sortie est le suivant :
data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "Salut", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " là", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "!", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " Comment", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " puis-je", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " vous", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " aider", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " aujourd'hui", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "?", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"role": "assistant"}, "finish_reason": "stop", "index": 0}], "created": 1721007349, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: [DONE]

Vous pouvez 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, conforme à ce qui a été décrit ci-dessus. choices est le contenu de la réponse ajoutée, 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. Les résultats de data retournés contiennent plusieurs champs, décrits comme suit :
  • id, l’ID généré pour cette tâche de conversation, utilisé pour identifier de manière unique cette tâche de conversation.
  • model, le modèle choisi sur le site officiel d’OpenAI ChatGPT.
  • choices, les informations de réponse fournies par ChatGPT en réponse aux questions.
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: "gpt-4",
    messages: [{ role: "user", content: "bonjour" }],
    stream: true,
  }),
};

fetch("https://api.acedata.cloud/openai/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", "gpt-4");
jsonObject.put("messages", [{"role":"user","content":"bonjour"}]);
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/openai/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 modifiés en conséquence, le principe est 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/openai/chat/completions"

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

payload = {
    "model": "gpt-4",
    "messages": [{"role":"user","content":"Bonjour"},{"role":"assistant","content":"Salut ! Comment puis-je vous aider aujourd'hui ?"},{"role":"user","content":"Qu'est-ce que j'ai dit tout à l'heure ?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
En téléchargeant plusieurs mots de question, il est facile de réaliser un dialogue en plusieurs tours, et on peut obtenir la réponse suivante :
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Vous avez dit : \"Bonjour.\""
      },
      "finish_reason": "stop"
    }
  ],
  "created": 1721323012,
  "id": "chatcmpl-NWZmOTA5MDlkZjBjNDRjNGEwMzRjYzA5NmM1MzQwMWY",
  "model": "gpt-4",
  "object": "chat.completion.chunk",
  "recipient": "all",
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 6,
    "total_tokens": 37
  }
}
On peut voir que les informations contenues dans choices sont cohérentes avec le contenu de base utilisé, cela inclut le contenu spécifique de la réponse de ChatGPT à plusieurs dialogues, permettant ainsi de répondre aux questions correspondantes en fonction de plusieurs contenus de dialogue.

Intégration avec OpenAI-Python

Le service OpenAI Chat Completion API est en amont du service officiel d’OpenAI, vous pouvez consulter le OpenAI-Python officiel pour plus de détails, cet article présentera brièvement comment utiliser le service fourni par l’officiel.
  1. Tout d’abord, vous devez configurer un environnement Python local, ce processus peut être recherché sur Google.
  2. Téléchargez et installez un environnement de développement, par exemple, installez l’éditeur VSCode.
  3. Configurez les variables d’environnement OpenAI.
  • Dans le dossier du projet, créez un fichier nommé .env et enregistrez-le.
  • Contenu du fichier .env :
OPENAI_API_KEY="sk-xxx"
OPENAI_BASE_URL="https://api.acedata.cloud/openai"  # Rappel : si vous utilisez la clé OpenAI officielle, n'utilisez pas cette adresse.
Remplacez sk-xxx par votre propre clé. OPENAI_BASE_URL est l’interface proxy pour accéder à OpenAI.
  1. Installez les paquets de dépendance du projet
pip install openai
La commande pour Mac OS est :
pip3 install openai
  1. Créez un fichier source d’exemple
Supposons que nous avons créé un code d’exemple index.py, le contenu est le suivant :
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

response = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "bonjour",
        }
    ],
    model="gpt-4",
)

print(response.text)

Modèle en ligne

Les modèles gpt-3.5-browsing et gpt-4-browsing sont différents des autres modèles, ils peuvent effectuer des recherches en ligne en fonction des mots de question et ajuster les résultats de recherche en ligne pour vous les renvoyer. Cet article démontrera la fonctionnalité en ligne à travers un exemple concret, vous pouvez ensuite remplir le contenu correspondant sur l’interface OpenAI Chat Completion API, comme illustré ci-dessous :

Vous pouvez également remarquer qu’il y a un code d’appel correspondant généré à droite, vous pouvez copier le code pour l’exécuter directement ou cliquer sur le bouton « Essayer » pour tester.

Après l’appel, nous constatons que le résultat retourné est le suivant :
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Pour les dernières nouvelles en Chine aujourd'hui, vous pouvez consulter les principaux sites d'actualités tels que :\n\n- [BBC News Chine](https://www.bbc.com/news/world/asia/china)\n- [CNN Nouvelles Chine](https://edition.cnn.com/china)\n- [Reuters Chine](https://www.reuters.com/news/archive/china-news)\n\nCes sources auront des informations à jour sur les événements actuels en Chine."
      },
      "finish_reason": "stop"
    }
  ],
  "created": 1721009347,
  "id": "chatcmpl-YzA0M2RjZDVkYThlNDkxNTkzOThmZWQ4OGMzNzdhNzA",
  "model": "gpt-4-browsing",
  "object": "chat.completion.chunk",
  "recipient": "all",
  "usage": {
    "prompt_tokens": 325,
    "completion_tokens": 82,
    "total_tokens": 407
  }
}
On peut voir que les informations de réponse dans choices sont basées sur les recherches en ligne et fournissent également des liens pertinents. Les informations de réponse dans choices doivent être rendues en utilisant la syntaxe markdown pour obtenir la meilleure expérience, ce qui met également en évidence la puissance de la fonctionnalité en ligne de notre modèle.

Modèle visuel

gpt-4o est un modèle de langage multimodal de grande taille développé par OpenAI, qui a ajouté des capacités de compréhension visuelle à GPT-4. Ce modèle peut traiter simultanément des entrées textuelles et d’images, réalisant une compréhension et une génération intermodales. L’utilisation des capacités de traitement d’images du modèle gpt-4o est similaire à l’utilisation de base décrite ci-dessus, ci-dessous nous allons brièvement expliquer comment utiliser la capacité de traitement d’images du modèle. L’utilisation des capacités de traitement d’images du modèle gpt-4o se fait principalement en ajoutant un champ type à la base du contenu content, ce champ permet de savoir si ce qui est téléchargé est du texte ou une image, permettant ainsi d’utiliser les capacités de traitement d’images du modèle gpt-4o. Nous allons principalement aborder comment appeler cette fonctionnalité en utilisant Curl et Python.
  • Méthode de script Curl
curl -X POST 'https://api.acedata.cloud/openai/chat/completions' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Qu'est-ce qu'il y a dans cette image ?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
            }
          }
        ]
      }
    ]
  }'
  • Méthode de script Python
```python
import requests

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

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

payload = {
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text", "text": "Qu'est-ce qu'il y a dans cette image ?"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
                    }
                },
            ],
        }
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Ensuite, vous pouvez obtenir le résultat ci-dessous, les informations des champs dans le résultat sont cohérentes avec le texte ci-dessus, comme suit :
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-4-vision-preview",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "\n\nCette image montre une passerelle en bois s'étendant à travers un marais verdoyant."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}
On peut voir que le contenu de la réponse est basé sur l’image, donc par les deux méthodes ci-dessus, il est facile d’utiliser les capacités de traitement de texte et d’image du modèle gpt-4-vision. En plus de gpt-4o, il existe un modèle à coût inférieur, appelé gpt-4o-mini. gpt-4o-mini est le dernier modèle de langage de grande taille développé par OpenAI, qui non seulement répond rapidement, mais est également moins cher et prend en charge le multimodal. L’utilisation de la fonction vision peut se référer au contenu d’utilisation du modèle gpt-4o ci-dessus.

Modèle de dessin GPT-4o

Exemple de requête :
{
  "model": "gpt-4o-image",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Générez une image dans le style de Ghibli, et mettez-lui un chapeau"
        },
        {
          "type": "file_url",
          "file_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exemple de résultat :
{
  "id": "chatcmpl-89CXTr5EHi7WgiO3qSzWxvmqwfryP",
  "object": "chat.completion.chunk",
  "model": "gpt-4o-image",
  "created": 1744395060,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "{\n  \"prompt\": \"Une jeune femme avec de longs cheveux noirs portant une robe blanche se tenant dans un cadre extérieur pittoresque. L'image est dans le style de l'animation du Studio Ghibli, avec des couleurs douces et des détails délicats. Elle porte un chapeau mignon et élégant, avec un sourire chaleureux et joyeux. L'arrière-plan montre une verdure luxuriante et une atmosphère paisible, avec la lumière du soleil filtrant à travers les arbres.\",\n  \"size\": \"1024x1024\"\n}\n\n\n![file-96TSnzJ6MipkZwCmmYEZSA](https://filesystem.site/cdn/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n[Télécharger⏬](https://filesystem.site/cdn/download/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n\nVoici l'image créée dans le style du Studio Ghibli, mettant en vedette une jeune femme portant une robe blanche et un chapeau élégant dans un cadre extérieur pittoresque. L'atmosphère douce et chaleureuse est capturée avec des détails délicats et des couleurs vibrantes."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 70,
    "completion_tokens": 17,
    "total_tokens": 87
  }
}

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 requêtes, 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 OpenAI Chat Completion pour réaliser facilement les fonctionnalités de conversation de l’OpenAI ChatGPT. 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.