/v1/chat/completions pour la génération de texte compatible OpenAI.
Streaming
Définissezstream: true pour recevoir des server-sent events. Chaque événement est un
chat.completion.chunk OpenAI, et le flux se termine par data: [DONE].
Paramètres
Les paramètres standard OpenAI sont acceptés, notammenttemperature, top_p,
max_tokens, stop, n, frequency_penalty, presence_penalty, seed,
response_format, tools, tool_choice, logprobs, top_logprobs,
logit_bias, user et stream.
Intensité du raisonnement
Définissezreasoning_effort au niveau racine pour les modèles à raisonnement configurable. Le format Responses reasoning.effort est également accepté. Si les deux sont fournis, leurs valeurs doivent être identiques ; sinon, la requête renvoie 400.
GET /v1/models sous capability_metadata.reasoning, ce qui permet aux clients de configurer un modèle sans coder de tableau en dur.
Les limites comme max_completion_tokens, max_output_tokens et leurs équivalents natifs comptent à la fois les tokens de raisonnement et de réponse finale. effort n’est pas une limite de tokens de sortie. Le budget peut toujours être épuisé (finish_reason: "length" dans Chat Completions), laissant une réponse finale incomplète ou vide.
Compatibilité Kimi K3
kimi-k3 utilise le même endpoint compatible OpenAI, mais son contrat natif suit des règles propres au modèle :
- K3 raisonne toujours et le raisonnement ne peut pas être désactivé. Il accepte
low,highetmax; la valeur par défaut estmax, et un effort plus faible échange de la profondeur de raisonnement contre de la latence. L’objetthinkingde K2.x n’est accepté que comme alias de compatibilité activé. - Préférez
max_completion_tokens. APIAny.AI accepte lemax_tokensobsolète et utilisemax_completion_tokenspour Kimi K3. Si aucune limite n’est fournie, la valeur par défaut du modèle s’applique. Le maximum explicite est de 1 048 576 tokens. - Les paramètres d’échantillonnage de K3 sont figés. APIAny.AI supprime
temperature,top_p,frequency_penaltyetpresence_penaltypour K3 uniquement ;ndoit valoir1. reasoning_contentcontient la trace de raisonnement etcontentla réponse finale. En streaming, ils arrivent sous forme de deltas séparés. Ne fusionnez pas la trace de raisonnement dans la réponse finale.- Rejouez le message assistant complet, y compris
reasoning_contentettool_calls, dans les requêtes multi-tours et d’appel d’outils. - Le dernier message assistant peut utiliser
partial: true. Un message system sans content peut portertoolspour charger dynamiquement les outils de K3. - Les blocs de contenu image/vidéo de K3 doivent utiliser une URL
data:Base64 ou un ID de fichierms://. Les URL HTTP publiques sont rejetées avant l’envoi de la requête au modèle.
finish_reason vaut length, le budget de sortie a été épuisé. La réponse reste compatible OpenAI, mais la réponse finale peut être absente ou incomplète ; augmentez max_completion_tokens ou réduisez l’entrée avant de réessayer.
Remarques
modelest un ID de modèle public APIAny.AI.- L’utilisation des tokens est normalisée dans l’objet
usagede style OpenAI lorsque les données d’utilisation sont disponibles.
Sortie GPT-6 et fin du flux
Avecgpt-6-astra, les blocs de réflexion initiaux reconnaissables sont séparés de la réponse finale. Lisez content / output_text pour la réponse, et les champs de raisonnement ou événements summary pour la réflexion. Les exemples explicites de balises et les cas ambigus sont conservés. Ce formatage ne modifie ni l’effort de raisonnement ni la limite de tokens.
Un flux HTTP 200 ne garantit pas le succès. Gérez les événements d’erreur et marquez toute réponse partielle comme incomplète. En Chat, lisez le dernier usage avant [DONE] ; en Responses, distinguez response.completed, response.incomplete et response.failed / error.
Dans GPT-6 Chat, [DONE] termine le flux sans annuler une erreur précédente ni garantir une réponse complète. Vérifiez aussi finish_reason : length indique que la limite de sortie a été atteinte, et content_filter indique un filtrage du contenu. Ces valeurs ne sont pas remplacées par stop. Si la connexion se ferme avant la fin ou si un événement d’erreur est reçu, ne considérez pas le texte partiel comme une réponse complète.