Invitez des amis et gagnez des tokens gratuits !En savoir plus

Documentation de l'API Chat Completions (Complétions de chat)

Cette API permet, à partir d'une série de messages de conversation, au modèle de renvoyer une ou plusieurs complétions prédictives. Elle prend en charge la sortie en flux (streaming), l'appel d'outils (Function Calling) ainsi que l'ajustement de divers paramètres d'échantillonnage.

1. Informations sur l'API (Endpoint)

  • Nom de l'interface : Test N officiel
  • Méthode de requête : POST
  • URL de requête : https://api.codingplanx.ai/v1/chat/completions
  • Type de contenu (Content-Type) : application/json
  • Méthode d'authentification : Bearer {{YOUR_API_KEY}}

2. En-têtes de requête (Headers)

Nom du paramètreRequisTypeDescriptionExemple
Content-TypeOuistringIdentifiant du type de médiaapplication/json
AcceptOuistringFormat de réponse accepté par le clientapplication/json
AuthorizationNonstringJeton d'accès (Token) de l'APIBearer sk-xxxxxx

3. Corps de la requête (Request Body)

Nom du paramètreRequisTypeDescription
modelOuistringID du modèle à utiliser (ex. gpt-4o, gpt-3.5-turbo).
messagesOuiarrayListe des messages de la conversation. Chaque objet contient un rôle (role : system/user/assistant) et un contenu (content).
toolsOuiarrayListe d'outils que le modèle peut appeler. Actuellement, seules les fonctions sont prises en charge.
tool_choiceOuiobjectContrôle quelle fonction le modèle doit appeler. none (aucun appel), auto (automatique), ou spécifie une fonction précise.
temperatureNonnumberTempérature d'échantillonnage (0-2). Plus elle est élevée, plus le résultat est aléatoire ; plus elle est basse, plus il est déterministe. Il est recommandé de modifier soit ce paramètre, soit top_p, mais pas les deux.
top_pNonnumberÉchantillonnage par noyau (Nucleus sampling). 0.1 signifie que seuls les tokens représentant les 10 % de la masse de probabilité supérieure sont pris en compte.
nNonintegerPar défaut 1. Nombre de réponses générées pour chaque message d'entrée.
streamNonbooleanPar défaut false. Si true, envoie des tokens de manière incrémentielle (streaming) à l'instar de ChatGPT.
stopNonstringSéquences d'arrêt. Le modèle cesse de générer des tokens lorsqu'il rencontre ces caractères.
max_tokensNonintegerNombre maximal de tokens à générer. Par défaut infini (inf).
presence_penaltyNonnumberEntre -2.0 et 2.0. Pénalise les sujets déjà abordés, augmentant la probabilité que le modèle parle de nouveaux sujets.
frequency_penaltyNonnumberEntre -2.0 et 2.0. Pénalise les mots et expressions répétés.
logit_biasNonobjectModifie la probabilité d'apparition de tokens spécifiques.
userNonstringIdentifiant de l'utilisateur final, utilisé pour détecter les abus.
response_formatNonobjectSpécifie le format de réponse. Par exemple, { "type": "json_object" } active le mode JSON.
seenNonintegerFonctionnalité en phase de test. Spécifie une graine (Seed) pour tenter d'obtenir une sortie déterministe.

4. Paramètres de réponse (Response Body)

Nom du paramètreTypeDescription
idstringIdentifiant unique pour cette requête.
objectstringType d'objet, généralement chat.completion.
createdintegerHorodatage de création de la requête (en secondes).
choicesarrayListe des options de réponse.
├─ indexintegerIndex de cette option dans la liste.
├─ messageobjectMessage spécifique généré par le modèle.
│ ├─ rolestringRôle, généralement assistant.
│ └─ contentstringContenu textuel du message.
└─ finish_reasonstringRaison de l'arrêt de la génération (ex. stop, length, tool_calls).
usageobjectStatistiques d'utilisation des tokens.
├─ prompt_tokensintegerNombre de tokens consommés par l'entrée (prompt).
├─ completion_tokensintegerNombre de tokens consommés par la sortie (complétion).
└─ total_tokensintegerNombre total de tokens consommés.

5. Exemples (Examples)

Exemple de requête

{
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": "who are u?"
        }
    ],
    "n": 1,
    "max_tokens": 100,
    "temperature": 0.8,
    "stream": false
}

Exemple de réponse

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
Hello there, how may I assist you today?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

6. Foire aux questions (FAQ)

Q : Pourquoi est-ce que j'obtiens une erreur alors que j'ai défini response_format: { "type": "json_object" } ? R : Lors de l'utilisation du mode JSON, vous devez explicitement demander au modèle de générer du JSON via un message système ou utilisateur dans le tableau messages (par exemple : "Veuillez répondre au format JSON"). Dans le cas contraire, le modèle risque de se bloquer ou de renvoyer une erreur, car il ne parviendra pas à générer un JSON valide.

Q : Peut-on ajuster temperature et top_p en même temps ? R : Techniquement oui, mais les directives officielles recommandent généralement de choisir l'un ou l'autre. L'ajustement d'un seul de ces paramètres suffit normalement à modifier le caractère aléatoire de la sortie. Ajuster les deux simultanément peut rendre les résultats difficiles à prévoir.

Q : Comment recevoir les données lorsque stream: true ? R : Lorsque le streaming est activé, le serveur envoie une série d'événements Server-Sent Events (SSE). La partie de données (data) de chaque événement est un objet JSON, et le flux se terminera par data: [DONE]. Vous devez utiliser une bibliothèque d'analyse de flux (comme response.iter_lines() en Python) pour traiter les données ligne par ligne.

Q : Comment calculer la consommation de Tokens ? R : Pour l'anglais, 1 Token équivaut à environ 4 caractères ou 0,75 mot ; pour le chinois, 1 caractère correspond souvent à 1 ou 2 Tokens. La consommation finale et facturée est déterminée par les valeurs du champ usage dans le corps de la réponse.

Q : Que signifie finish_reason: "length" ? R : Cela indique que le contenu généré a dépassé la limite que vous avez définie dans le paramètre max_tokens, ou qu'il a atteint la limite de longueur maximale de contexte du modèle, ce qui a entraîné la troncature du contenu.

Q : L'API prend-elle en charge l'appel de fonction (Function Calling) ? R : Oui. En définissant les prototypes de vos fonctions via le paramètre tools, le modèle renverra un tableau tool_calls dans choices[0].message au lieu d'un simple content textuel, s'il juge pertinent d'appeler une fonction.