Compatibilité OpenAI et Ollama
- Normative
- Brouillon 1.0
- Mis à jour
- Afficher en Markdown
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_urlmodifié. 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.