Génération de réponses conversationnelles
Génération de réponses conversationnelles compatible avec OpenAI, avec diffusion en continu, prise en charge des images, appels d’outils et contrôle du raisonnement.
POST /v1/chat/completions
curl https://api.unquant.io/v1/chat/completions \
-H "Authorization: Bearer $UNQUANT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"glm-5.3-flash",
"messages":[{"role":"user","content":"Hello!"}]}'Champs de la requête
modelchaîne de caractèresObligatoireglm-5.3-flash ou qwen-3.8-flash-next.
messagestableauObligatoireRôles : system, user, assistant et tool. Le contenu est une chaîne de caractères ou un tableau d’éléments de type text et image_url.
streambooléenDiffusez la réponse en continu sous forme d’événements envoyés par le serveur (SSE).
stream_optionsobjet{"include_usage": true} ajoute un dernier fragment contenant le décompte des tokens.
max_tokensentierLongueur maximale de la réponse.
max_completion_tokensentierÉquivalent à max_tokens.
temperaturenombreDegré d’aléatoire de l’échantillonnage.
top_pnombreÉchantillonnage par noyau de probabilité.
top_kentierÉchantillonnage parmi les k tokens les plus probables.
min_pnombreProbabilité relative minimale d’un token.
seedentierGraine aléatoire permettant un échantillonnage reproductible.
stopchaîne de caractères ou tableauSéquences d’arrêt.
frequency_penaltynombrePénalise les tokens en fonction de leur fréquence d’apparition.
presence_penaltynombrePénalise les tokens déjà apparus, quelle que soit leur fréquence.
repetition_penaltynombrePénalité multiplicative de répétition.
toolstableauFonctions que le modèle peut appeler, au format OpenAI.
tool_choicechaîne de caractères ou objetauto, none, required ou une fonction désignée par son nom.
parallel_tool_callsbooléenAutorise plusieurs appels d’outils dans un même tour de conversation.
response_formatobjetSortie au format JSON.
logprobsbooléenRenvoie les probabilités logarithmiques des tokens.
top_logprobsentierNombre d’alternatives à renvoyer pour chaque token.
nentierDoit valoir 1 : une seule réponse générée par requête.
reasoning_effortchaîne de caractèresPour les deux modèles : none, low ou high ; GLM-5.3-Flash accepte également max.
chat_template_kwargsobjetOptions du gabarit de conversation, comme {"enable_thinking": false}.
Les autres champs sont ignorés.
Réponse
response.choices[0].message.contentLes décomptes de consommation sont renvoyés pour vous permettre de suivre votre utilisation ; ils ne donnent jamais lieu à une facturation.
Diffusion en continu
Avec "stream": true, la réponse arrive sous forme d’événements envoyés par le serveur (SSE), au format de fragments d’OpenAI, et se termine par data: [DONE]. Récupérez le texte dans choices[0].delta.content.
Images
Les deux modèles acceptent les images sous forme d’éléments image_url contenant une URL de données en base64 (data:image/png;base64,..., JPEG ou WebP). Les images fournies par des URL distantes ne sont pas récupérées et entraînent une erreur 400.
{"role": "user", "content": [
{"type": "text", "text": "Describe this image."},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQ..."}}
]}Appels d’outils
Fournissez tools comme dans l’API OpenAI. Lorsque le modèle appelle un outil, la réponse contient finish_reason: "tool_calls" et message.tool_calls ; exécutez l’outil, ajoutez un message tool contenant son résultat et le tool_call_id correspondant, puis effectuez un nouvel appel.
Raisonnement
Les deux modèles raisonnent avant de répondre et acceptent le paramètre reasoning_effort : none pour des réponses directes, low pour un raisonnement léger ou high pour les problèmes plus complexes ; GLM-5.3-Flash propose également max et utilise high par défaut. Le raisonnement est renvoyé séparément dans reasoning_content, sans jamais être intégré à content. "thinking": {"type": "disabled"} et "chat_template_kwargs": {"enable_thinking": false} permettent également de le désactiver.
Requêtes simultanées
Votre forfait détermine le nombre de requêtes pouvant s’exécuter simultanément, toutes vos clés confondues. Toute requête dépassant cette limite renvoie immédiatement une erreur 429 et n’est pas mise en attente ; les requêtes en cours ne sont pas affectées.