API compatible OpenAI

IA / LLM 🟡 Mid

Définition

Le format /v1/chat/complétions d'OpenAI (messages, tools, stream) est devenu un standard de fait : Ollama (/v1, clé factice 'ollama'), vLLM, llama.cpp et de nombreux fournisseurs l'implémentent. Le même SDK client bascule d'un fournisseur à l'autre en changeant baseURL. Attention aux fonctionnalités absentes (logprobs, tool_choice, conversations à état chez Ollama).

Analogie

Le port USB-C des LLM : le même câble, mais tous les chargeurs ne délivrent pas la même puissance.

Exemple de code

import OpenAI from 'openai';

// Même code, trois cibles : OpenAI, Ollama local, vLLM auto-hébergé
const providers = {
  openai: new OpenAI(),
  ollama: new OpenAI({ baseURL: 'http://localhost:11434/v1', apiKey: 'ollama' }),
  vllm:   new OpenAI({ baseURL: 'http://gpu-box:8000/v1', apiKey: 'sk-local' }),
};
const model = { openai: 'gpt-6-luna', ollama: 'qwen3.8:27b', vllm: 'mistralai/Mistral-Small-4' };

const target = process.env.LLM_PROVIDER as keyof typeof providers;
const res = await providers[target].chat.completions.create({
  model: model[target],
  messages: [{ role: 'user', content: 'Résume ce ticket : ' + ticket }],
});
console.log(res.choices[0].message.content);

Cas d'usage

Développer en local sur Ollama, tester sur vLLM, produire sur un fournisseur cloud sans réécrire le client.

Anti-pattern

Supposer que toutes les options fonctionnent partout : vérifier tool calling et JSON mode sur chaque cible.
#ia#api#interop

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre