Utilisez CometAPI POST /v1/chat/completions pour envoyer des conversations à plusieurs messages et obtenir des réponses de LLM avec Streaming, ainsi que des contrôles temperature et max_tokens.
{
"id": "chatcmpl-DNA27oKtBUL8TmbGpBM3B3zhWgYfZ",
"object": "chat.completion",
"created": 1774412483,
"model": "gpt-4.1-nano-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Four",
"refusal": null,
"annotations": []
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 29,
"completion_tokens": 2,
"total_tokens": 31,
"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": "fp_490a4ad033"
}model.
base_url par https://api.cometapi.com/v1.reasoning_effort s’applique uniquement aux modèles de raisonnement (o-series, GPT-5.1+), et certains modèles peuvent ne pas prendre en charge logprobs ou n > 1.o1-pro), utilisez plutôt le endpoint responses.| Role | Description |
|---|---|
system | Définit le comportement et la personnalité de l’assistant. Placé au début de la conversation. |
developer | Remplace system pour les modèles récents (o1+). Fournit des instructions que le modèle doit suivre indépendamment de l’entrée de l’utilisateur. |
user | Messages de l’utilisateur final. |
assistant | Réponses précédentes du modèle, utilisées pour conserver l’historique de la conversation. |
tool | Résultats des appels d’outil/de fonction. Doit inclure tool_call_id correspondant à l’appel d’outil d’origine. |
developer à system pour les messages d’instruction. Les deux fonctionnent, mais developer offre un comportement de suivi des instructions plus fort.content afin d’envoyer des messages multimodaux :
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.png",
"detail": "high"
}
}
]
}
detail contrôle la profondeur de l’analyse d’image :
low — plus rapide, utilise moins de tokens (coût fixe)high — analyse détaillée, davantage de tokens consommésauto — le modèle décide (par défaut)stream est défini sur true, la réponse est transmise sous forme de Server-Sent Events (SSE). Chaque événement contient un objet chat.completion.chunk avec un contenu incrémental :
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
stream_options.include_usage sur true. Les données d’utilisation apparaissent dans le dernier chunk avant [DONE].response_format :
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "result",
"strict": true,
"schema": {
"type": "object",
"properties": {
"answer": {"type": "string"},
"confidence": {"type": "number"}
},
"required": ["answer", "confidence"],
"additionalProperties": false
}
}
}
}
json_schema) garantit que la sortie correspond exactement à votre schéma. Le mode JSON Object (json_object) garantit uniquement un JSON valide — la structure n’est pas imposée.{
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
}
],
"tool_choice": "auto"
}
finish_reason: "tool_calls" et le tableau message.tool_calls contiendra le nom de la fonction et ses arguments. Vous exécutez ensuite la fonction et renvoyez le résultat sous forme de message tool avec le tool_call_id correspondant.
| Champ | Description |
|---|---|
id | Identifiant unique de completion (par ex. chatcmpl-abc123). |
object | Toujours chat.completion. |
model | Le model ayant généré la réponse (peut inclure un suffixe de version). |
choices | Tableau des choix de completion (généralement 1 sauf si n > 1). |
choices[].message | Le message de réponse de l’assistant avec role, content et, éventuellement, tool_calls. |
choices[].finish_reason | Pourquoi le model s’est arrêté : stop, length, tool_calls ou content_filter. |
usage | Détail de la consommation de tokens : prompt_tokens, completion_tokens, total_tokens et sous-comptes détaillés. |
system_fingerprint | Empreinte de configuration du backend pour le débogage de la reproductibilité. |
Prise en charge des paramètres selon les fournisseurs
| Parameter | OpenAI GPT | Claude (via compat) | Gemini (via compat) |
|---|---|---|---|
temperature | 0–2 | 0–1 | 0–2 |
top_p | 0–1 | 0–1 | 0–1 |
n | 1–128 | 1 uniquement | 1–8 |
stop | Jusqu’à 4 | Jusqu’à 4 | Jusqu’à 5 |
tools | ✅ | ✅ | ✅ |
response_format | ✅ | ✅ (json_schema) | ✅ |
logprobs | ✅ | ❌ | ❌ |
reasoning_effort | o-series, GPT-5.1+ | ❌ | ❌ (utilisez thinking pour Gemini natif) |
max_tokens vs max_completion_tokens
max_tokens — Le paramètre historique. Fonctionne avec la plupart des modèles mais est obsolète pour les nouveaux modèles OpenAI.max_completion_tokens — Le paramètre recommandé pour les modèles GPT-4.1, série GPT-5 et o-series. Requis pour les modèles de raisonnement car il inclut à la fois les tokens de sortie et les tokens de raisonnement.rôle system vs developer
system — Le rôle d’instruction traditionnel. Fonctionne avec tous les modèles.developer — Introduit avec les modèles o1. Offre un meilleur suivi des instructions pour les nouveaux modèles. Revient au comportement de system sur les anciens modèles.developer pour les nouveaux projets ciblant les modèles GPT-4.1+ ou o-series.429 Too Many Requests, implémentez un backoff exponentiel :
import time
import random
from openai import OpenAI, RateLimitError
client = OpenAI(
base_url="https://api.cometapi.com/v1",
api_key="<COMETAPI_KEY>",
)
def chat_with_retry(messages, max_retries=3):
for i in range(max_retries):
try:
return client.chat.completions.create(
model="gpt-5.4",
messages=messages,
)
except RateLimitError:
if i < max_retries - 1:
wait_time = (2 ** i) + random.random()
time.sleep(wait_time)
else:
raise
messages :
messages = [
{"role": "developer", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is Python?"},
{"role": "assistant", "content": "Python is a high-level programming language..."},
{"role": "user", "content": "What are its main advantages?"},
]
finish_reason ?| Value | Meaning |
|---|---|
stop | Fin naturelle ou séquence d’arrêt atteinte. |
length | Limite max_tokens ou max_completion_tokens atteinte. |
tool_calls | Le modèle a invoqué un ou plusieurs appels d’outil/fonction. |
content_filter | La sortie a été filtrée en raison de la politique de contenu. |
max_completion_tokens pour plafonner la longueur de sortie.gpt-5.4-mini ou gpt-5.4-nano pour les tâches plus simples).usage.Bearer token authentication. Use your CometAPI key.
Model ID to use for this request. See the Models page for current options.
"gpt-4.1"
A list of messages forming the conversation. Each message has a role (system, user, assistant, or developer) and content (text string or multimodal content array).
Show child attributes
If true, partial response tokens are delivered incrementally via server-sent events (SSE). The stream ends with a data: [DONE] message.
Sampling temperature between 0 and 2. Higher values (e.g., 0.8) produce more random output; lower values (e.g., 0.2) make output more focused and deterministic. Recommended to adjust this or top_p, but not both.
0 <= x <= 2Nucleus sampling parameter. The model considers only the tokens whose cumulative probability reaches top_p. For example, 0.1 means only the top 10% probability tokens are considered. Recommended to adjust this or temperature, but not both.
0 <= x <= 1Number of completion choices to generate for each input message. Defaults to 1.
Up to 4 sequences where the API will stop generating further tokens. Can be a string or an array of strings.
Maximum number of tokens to generate in the completion. The total of input + output tokens is capped by the model's context length.
Number between -2.0 and 2.0. Positive values penalize tokens based on whether they have already appeared, encouraging the model to explore new topics.
-2 <= x <= 2Number between -2.0 and 2.0. Positive values penalize tokens proportionally to how often they have appeared, reducing verbatim repetition.
-2 <= x <= 2A JSON object mapping token IDs to bias values from -100 to 100. The bias is added to the model's logits before sampling. Values between -1 and 1 subtly adjust likelihood; -100 or 100 effectively ban or force selection of a token.
A unique identifier for your end-user. Helps with abuse detection and monitoring.
An upper bound for the number of tokens to generate, including visible output tokens and reasoning tokens. Use this instead of max_tokens for GPT-4.1+, GPT-5 series, and o-series models.
Specifies the output format. Use {"type": "json_object"} for JSON mode, or {"type": "json_schema", "json_schema": {...}} for strict structured output.
Show child attributes
A list of tools the model may call. Currently supports function type tools.
Show child attributes
Controls how the model selects tools. auto (default): model decides. none: no tools. required: must call a tool.
Whether to return log probabilities of the output tokens.
Number of most likely tokens to return at each position (0-20). Requires logprobs to be true.
0 <= x <= 20Controls the reasoning effort for o-series and GPT-5.1+ models.
low, medium, high Options for streaming. Only valid when stream is true.
Show child attributes
Specifies the processing tier.
auto, default, flex, priority Successful chat completion response.
Unique completion identifier.
"chatcmpl-abc123"
chat.completion "chat.completion"
Unix timestamp of creation.
1774412483
The model used (may include version suffix).
"gpt-5.4-2025-07-16"
Array of completion choices.
Show child attributes
Show child attributes
"default"
"fp_490a4ad033"
{
"id": "chatcmpl-DNA27oKtBUL8TmbGpBM3B3zhWgYfZ",
"object": "chat.completion",
"created": 1774412483,
"model": "gpt-4.1-nano-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Four",
"refusal": null,
"annotations": []
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 29,
"completion_tokens": 2,
"total_tokens": 31,
"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": "fp_490a4ad033"
}