Compatibilité OpenAI et Ollama

8.1 Points de terminaison compatibles OpenAI

Un service DEVRAIT proposer une interface compatible OpenAI à côté de l’interface LMSP, et la déclarer dans interfaces avec kind défini à openai. Pour couvrir les clients existants, un service qui le fait DOIT implémenter au moins ces points de terminaison sous le préfixe /v1 :

Point de terminaison Remarques
GET /v1/models Liste les modèles du catalogue LMSP. Chaque id est l’identifiant de modèle LMSP.
POST /v1/chat/completions Chat Completions, avec et sans streaming.
POST /v1/responses La forme OpenAI Responses.
POST /v1/embeddings L’interface principale de LMSP 1.0 n’a pas de point de terminaison d’embeddings. L’adaptateur sert ce point de terminaison directement, pour les modèles dont capabilities.embeddings vaut true.

Ces points de terminaison acceptent les mêmes jetons porteurs que l’interface LMSP. Un client qui parle le protocole OpenAI définit le jeton LMSP comme clé d’API.

Une première implémentation peut commencer par /v1/models et /v1/chat/completions (page 12).

8.2 Points de terminaison compatibles Ollama

Un service DEVRAIT aussi fournir ces points de terminaison, afin que les clients écrits pour Ollama fonctionnent eux aussi :

Point de terminaison Remarques
GET /api/tags Liste les modèles du catalogue LMSP.
POST /api/chat Chat.
POST /api/generate Génération de texte simple.

Un service qui les fournit déclare une interface avec kind défini à ollama.

8.3 Un seul cœur d’exécution

La couche de compatibilité DOIT se contenter de convertir des données. Elle NE DOIT PAS créer une seconde logique de gestion des modèles. Une requête sur une interface de compatibilité est transposée en une réponse LMSP, s’exécute sur le même cœur et le même adaptateur qu’une requête native, et utilise le même catalogue de modèles et la même authentification.

OpenAI Chat Completions
          |  conversion de la requête
          v
     LMSP Response
          |  adaptation au backend
          v
llama.cpp / Ollama / vLLM / autres environnements d’exécution

Sur les points de terminaison /v1 et /api, un service DEVRAIT signaler les erreurs dans le format que définit l’API correspondante, afin que les clients non modifiés puissent les interpréter. L’interface LMSP utilise toujours application/problem+json.

8.4 Limites

La compatibilité a des limites, et il vaut mieux les énoncer clairement :

  • Un client compatible OpenAI existant n’a généralement besoin que d’un base_url modifié. Il ne bénéficie pas automatiquement de la découverte LMSP.
  • Seuls les clients qui prennent en charge LMSP peuvent découvrir un service automatiquement, lire ses capacités détaillées, reprendre des flux d’événements et gérer des tâches asynchrones.
  • Aucun protocole côté serveur ne peut faire fonctionner un client qui n’est pas configurable et n’accepte que les adresses officielles du cloud.