Chat completions
POST /v1/chat/completions accepte le format de requête OpenAI et renvoie le format de réponse OpenAI. L’identifiant du modèle est le seul changement obligatoire dans votre code OpenAI actuel.
Requête
http
POST https://api-ai.fr/v1/chat/completions
Authorization: Bearer mdf-...
content-type: application/json
{
"model": "claude-sonnet-5-5",
"messages": [
{ "role": "system", "content": "You are concise." },
{ "role": "user", "content": "Why is the sky blue?" }
],
"max_tokens": 256,
"stream": false
}Réponse
Format identique à OpenAI, 1 pour 1 — id, choices[].message, usage.
json
{
"id": "chatcmpl_01...",
"object": "chat.completion",
"created": 1715472000,
"model": "claude-sonnet-5-5",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "Rayleigh scattering..." },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 48,
"completion_tokens": 92,
"total_tokens": 140
}
}SDK OpenAI (Python)
python
from openai import OpenAI
client = OpenAI(
api_key="<OPENAI_API_KEY>",
base_url="https://api-ai.fr/v1",
)
r = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Say hi."}],
)
print(r.choices[0].message.content)SDK OpenAI (Node)
ts
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: "https://api-ai.fr/v1",
});
const r = await client.chat.completions.create({
model: "claude-sonnet-5-5",
messages: [{ role: "user", content: "Say hi." }],
});
console.log(r.choices[0].message?.content);Correspondance des champs
| Champ OpenAI | Comportement sur API-AI |
|---|---|
messages | Transmis ; le rôle system est remonté dans le champ Anthropic system. |
max_tokens | Forwarded. |
temperature, top_p | Forwarded. |
tools, tool_choice | Traduit en tools / tool_choice Anthropic — même normalisation que pour l’utilisation d’outils. |
stream | Transmis ; émet des fragments SSE au format OpenAI (pas des événements Anthropic). |
response_format | json_object est respecté via une consigne système. Le mode strict json_schema est actuellement ignoré. |
logprobs, top_logprobs | Ignoré — non exposé par le fournisseur amont. |
seed | Ignoré — non pris en charge en amont. |
n > 1 | Renvoie un seul choix. Appelez le point d’accès N fois si vous avez besoin de N échantillons. |
Choisissez un format et tenez-vous-y
/v1/chat/completions et /v1/messages atteignent les mêmes modèles au même prix. La couche chat-completions ajoute une traduction ; le point d’accès Messages natif, non. Pour un nouveau projet, nous recommandons /v1/messages. Pour migrer depuis OpenAI, la couche de compatibilité est la voie la plus rapide.Dernière mise à jour : 2 octobre 2026Une erreur ? support@minedom-france.fr