Créer une complétion de chat (Non-streaming)
Ce point de terminaison (endpoint) est utilisé pour fournir une invite (Prompt) au modèle, qui retourne ensuite un ou plusieurs résultats de complétion prédits. L'interface non-streaming renvoie le résultat en une seule fois après la génération de la réponse complète.
- URL de l'API :
https://api.codingplanx.ai/v1/chat/completions - Méthode HTTP :
POST - Type de contenu :
application/json
Paramètres de la Requête
En-têtes (Headers)
| Nom du paramètre | Type | Requis | Exemple de valeur | Description |
|---|---|---|---|---|
| Content-Type | string | Oui | application/json | Format du corps de la requête |
| Accept | string | Oui | application/json | Format du corps de la réponse |
| Authorization | string | Non | Bearer {{YOUR_API_KEY}} | Jeton (token) d'authentification |
Corps de la Requête (Body)
| Nom du paramètre | Type | Requis | Valeur par défaut | Description |
|---|---|---|---|---|
| model | string | Oui | - | ID du modèle à utiliser (ex. gpt-4o, gpt-3.5-turbo). |
| messages | array | Oui | - | Liste des messages de la conversation. Chaque objet contient role (system/user/assistant) et content. |
| temperature | number | Non | 1 | Température d'échantillonnage (0-2). Plus la valeur est élevée, plus le texte est aléatoire ; plus elle est basse, plus il est déterministe. |
| top_p | number | Non | 1 | Échantillonnage par noyau (Nucleus sampling). Ne considère que les tokens constituant la masse de probabilité top_p. Il est recommandé de modifier soit ce paramètre, soit temperature, mais pas les deux. |
| n | integer | Non | 1 | Nombre de choix de complétion à générer pour chaque message d'entrée. |
| stream | boolean | Non | false | Activer le streaming. Ici, il doit être défini sur false. |
| stop | string/array | Non | null | Séquence(s) (jusqu'à 4) où l'API s'arrêtera de générer des tokens supplémentaires. |
| max_tokens | integer | Non | inf | Le nombre maximum de tokens à générer, limité par la longueur de contexte du modèle. |
| presence_penalty | number | Non | 0 | Entre -2.0 et 2.0. Des valeurs positives augmentent la probabilité que le modèle aborde de nouveaux sujets. |
| frequency_penalty | number | Non | 0 | Entre -2.0 et 2.0. Des valeurs positives réduisent la probabilité que le modèle répète les mêmes mots. |
| logit_bias | object | Non | null | Modifie la probabilité d'apparition de tokens spécifiques dans la complétion. |
| user | string | Non | - | Identifiant unique de l'utilisateur final, utile pour surveiller et détecter les abus. |
| response_format | object | Non | - | Spécifie le format de sortie, ex : { "type": "json_object" } pour activer le mode JSON. |
| tools | array | Non | - | Liste des outils que le modèle peut appeler (actuellement, seules les fonctions "function" sont prises en charge). |
| tool_choice | string/obj | Non | auto | Contrôle quel outil est appelé par le modèle (none/auto/fonction spécifique). |
Paramètres de Réponse
Corps de la Réponse (Response Body)
| Nom du paramètre | Type | Description |
|---|---|---|
| id | string | Identifiant unique de cette requête. |
| object | string | Type d'objet, toujours chat.completion. |
| created | integer | Horodatage Unix (en secondes). |
| choices | array | Liste des résultats de complétion. |
| ├─ index | integer | L'index de ce résultat dans la liste. |
| ├─ message | object | Le contenu du message généré par le modèle. |
| │ ├─ role | string | Le rôle, généralement assistant. |
| │ └─ content | string | Le contenu textuel spécifique du message. |
| └─ finish_reason | string | Raison de l'arrêt (ex. stop, length, tool_calls). |
| usage | object | Statistiques d'utilisation des tokens. |
| ├─ prompt_tokens | integer | Nombre de tokens consommés par l'invite (prompt). |
| ├─ completion_tokens | integer | Nombre de tokens générés pour la réponse. |
| └─ total_tokens | integer | Nombre total de tokens consommés. |
Exemples
Exemple de Requête (cURL)
curl --location --request POST 'https://api.codingplanx.ai/v1/chat/completions' \
--header 'Authorization: Bearer VOTRE_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "Bonjour, présentez-vous s'\''il vous plaît."
}
],
"max_tokens": 1000
}'
Exemple de Réponse
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Bonjour ! Je suis l'assistant IA fourni par CodingPlanX, ravi de vous aider."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 25,
"total_tokens": 40
}
}
FAQ (Foire Aux Questions)
Q1 : Comment activer le mode JSON ?
R1 : Définissez "response_format": { "type": "json_object" } dans le corps de la requête. Attention : Lorsque vous utilisez le mode JSON, vous devez explicitement demander au modèle de générer du JSON dans le message system ou user. Dans le cas contraire, le modèle pourrait générer un espace blanc infini.
Q2 : Comment choisir entre temperature et top_p ?
R2 : Nous recommandons généralement de ne modifier qu'un seul des deux. Si vous souhaitez que le modèle soit plus créatif, vous pouvez augmenter temperature (ex. 0.8) ; si vous avez besoin de réponses plus rigoureuses et constantes, vous pouvez la réduire (ex. 0.2).
Q3 : Pourquoi le paramètre finish_reason est-il length ?
R3 : Cela signifie que la réponse générée a été tronquée parce qu'elle a atteint la limite de max_tokens que vous avez définie, ou qu'elle a dépassé la longueur de contexte maximale du modèle.
Q4 : Qu'est-ce qu'un Token ? R4 : Le token est l'unité de base du traitement de texte par le modèle. Pour le chinois, un caractère équivaut à environ 1 à 2 tokens (pour le français, un mot représente généralement 1 à 1,5 token). La facturation de l'API et les limites de contexte sont basées sur le nombre de tokens.
Q5 : Quelle est la différence entre presence_penalty et frequency_penalty ?
R5 : presence_penalty se concentre sur l'"introduction de nouveaux sujets", pénalisant un mot dès qu'il est apparu ; frequency_penalty se concentre sur la "fréquence de répétition", pénalisant un mot proportionnellement au nombre de fois où il apparaît.
Q6 : Comment puis-je obtenir un effet de génération de texte en temps réel ?
R6 : Veuillez définir le paramètre stream sur true. Notez que le format de réponse en streaming est différent de celui documenté ici (non-streaming) et s'appuie sur la technologie Server-Sent Events (SSE).