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ètre | Requis | Type | Description | Exemple |
|---|---|---|---|---|
| Content-Type | Oui | string | Identifiant du type de média | application/json |
| Accept | Oui | string | Format de réponse accepté par le client | application/json |
| Authorization | Non | string | Jeton d'accès (Token) de l'API | Bearer sk-xxxxxx |
3. Corps de la requête (Request Body)
| Nom du paramètre | Requis | Type | Description |
|---|---|---|---|
| model | Oui | string | ID du modèle à utiliser (ex. gpt-4o, gpt-3.5-turbo). |
| messages | Oui | array | Liste des messages de la conversation. Chaque objet contient un rôle (role : system/user/assistant) et un contenu (content). |
| tools | Oui | array | Liste d'outils que le modèle peut appeler. Actuellement, seules les fonctions sont prises en charge. |
| tool_choice | Oui | object | Contrôle quelle fonction le modèle doit appeler. none (aucun appel), auto (automatique), ou spécifie une fonction précise. |
| temperature | Non | number | Tempé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_p | Non | number | É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. |
| n | Non | integer | Par défaut 1. Nombre de réponses générées pour chaque message d'entrée. |
| stream | Non | boolean | Par défaut false. Si true, envoie des tokens de manière incrémentielle (streaming) à l'instar de ChatGPT. |
| stop | Non | string | Séquences d'arrêt. Le modèle cesse de générer des tokens lorsqu'il rencontre ces caractères. |
| max_tokens | Non | integer | Nombre maximal de tokens à générer. Par défaut infini (inf). |
| presence_penalty | Non | number | Entre -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_penalty | Non | number | Entre -2.0 et 2.0. Pénalise les mots et expressions répétés. |
| logit_bias | Non | object | Modifie la probabilité d'apparition de tokens spécifiques. |
| user | Non | string | Identifiant de l'utilisateur final, utilisé pour détecter les abus. |
| response_format | Non | object | Spécifie le format de réponse. Par exemple, { "type": "json_object" } active le mode JSON. |
| seen | Non | integer | Fonctionnalité 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ètre | Type | Description |
|---|---|---|
| id | string | Identifiant unique pour cette requête. |
| object | string | Type d'objet, généralement chat.completion. |
| created | integer | Horodatage de création de la requête (en secondes). |
| choices | array | Liste des options de réponse. |
| ├─ index | integer | Index de cette option dans la liste. |
| ├─ message | object | Message spécifique généré par le modèle. |
| │ ├─ role | string | Rôle, généralement assistant. |
| │ └─ content | string | Contenu textuel du message. |
| └─ finish_reason | string | Raison de l'arrêt de la génération (ex. stop, length, tool_calls). |
| usage | object | Statistiques d'utilisation des tokens. |
| ├─ prompt_tokens | integer | Nombre de tokens consommés par l'entrée (prompt). |
| ├─ completion_tokens | integer | Nombre de tokens consommés par la sortie (complétion). |
| └─ total_tokens | integer | Nombre 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.