~/ / Articles sur l'IA / LLM locaux sur un VPS / Appeler un modèle local depuis votre code : sorties structurées et API compatible OpenAI dans Ollama
Appeler un modèle local depuis votre code : sorties structurées et API compatible OpenAI dans Ollama
Une fois Ollama en marche sur votre serveur, votre propre code a besoin de deux choses : un moyen d'obtenir des réponses dans une forme fixe, et un moyen de joindre le serveur depuis des bibliothèques qui parlent déjà l'API OpenAI. Ollama documente les deux. Cet article résume la page sur les sorties structurées et la page sur la compatibilité OpenAI, et signale ce que la documentation indique comme non pris en charge.
Publié: · 4 min de lecture · Vérifié le 2026-10-26 par rapport à la documentation officielle d'Ollama. Les fonctionnalités prises en charge changent d'une version à l'autre ; confirmez-les dans les documents actuels.
Deux façons d'appeler le même serveur
Ollama possède sa propre API, pour laquelle les exemples de la documentation envoient un POST à http://localhost:11434/api/chat. Il propose aussi une API compatible OpenAI sous /v1/, afin que les clients OpenAI existants puissent s'y connecter en changeant l'URL de base.
| Élément | API native | API compatible OpenAI |
|---|---|---|
| Adresse de base | http://localhost:11434/api/chat | http://localhost:11434/v1/ |
| Clé d'API | non mentionnée dans les exemples | api_key='ollama', que la page indique comme obligatoire mais ignorée |
| Champ de sortie structurée | format | response_format |
La ligne sur la clé d'API provient de l'exemple de serveur local de la documentation. Pour le cloud, la page montre base_url https://ollama.com/v1 avec une clé d'API issue de votre compte Ollama, ce qui est un autre cas.
Sorties structurées : le champ format
Le champ format contraint la réponse. Il accepte la chaîne json pour du JSON générique, ou un objet JSON Schema. Dans les exemples cURL de la documentation, le corps de la requête comporte quatre champs : model, messages, stream défini à false, et format. Le schéma des exemples comporte type, properties et required.
| Valeur de format | Effet selon la documentation |
|---|---|
| "json" | Le modèle répond avec du JSON générique |
| un objet JSON Schema | La réponse est contrainte à ce schéma |
- La documentation indique qu'il est idéal de passer aussi le JSON Schema sous forme de chaîne dans le prompt, pour ancrer la réponse du modèle.
- Elle indique aussi de baisser la température, par exemple à 0, pour obtenir des complétions plus déterministes.
- Pour Python et JavaScript, elle suggère de définir les schémas avec Pydantic ou Zod, afin de pouvoir les réutiliser pour la validation.
- Les modèles de vision acceptent le même paramètre format. L'exemple de vision de la documentation transmet une image avec un schéma.
- Selon la page, le cloud d'Ollama ne prend actuellement pas en charge les sorties structurées.
Avant de vous fier à un schéma, vérifiez-le. Le JSON Schema Validator ci-dessous vous indique si le schéma lui-même est valide et si un exemple de réponse y correspond.
Vérifier le schéma que vous envoyez
Un schéma comportant une erreur peut échouer tardivement, lorsque la première requête atteint le modèle. Collez le schéma et un exemple du JSON attendu, et voyez s'ils concordent.
Essayer: JSON Schema Validator
Suit JSON Schema Draft 2020-12 pour les mots-clés pris en charge. Il ne lit $ref qu'à l'intérieur du même schéma.
Tout s'exécute dans votre navigateur. Le schéma et les données ne sont pas envoyés.
Les points de terminaison compatibles OpenAI
| Point de terminaison | Ce que la page énumère | Indiqué comme non pris en charge |
|---|---|---|
| /v1/chat/completions | chat, streaming, JSON mode, sorties reproductibles, vision, tools, contrôle du raisonnement | logprobs, tool_choice, logit_bias, user, n ; URL d'images (utiliser base64) |
| /v1/completions | complétions, streaming, JSON mode, sorties reproductibles | logprobs, best_of, echo, logit_bias, user, n |
| /v1/models | lister et récupérer des modèles | non indiqué |
| /v1/embeddings | entrée sous forme de chaîne ou de tableau de chaînes, format d'encodage, dimensions | tableaux de tokens, user |
| /v1/responses | streaming, tools d'appel de fonctions, résumés de raisonnement | requêtes avec état : previous_response_id, conversation, truncation |
- Pour le point de terminaison de chat, la page range parmi les champs de requête pris en charge : response_format, tools, stream, stream_options, seed, stop, temperature, top_p, max_tokens, frequency_penalty et presence_penalty.
- La page indique que les sorties structurées fonctionnent via l'API compatible OpenAI grâce à response_format.
- Si votre code utilise un champ de la colonne des champs non pris en charge, modifiez le code au lieu d'attendre que le serveur l'ignore. La documentation n'indique pas comment chaque champ non pris en charge est traité, sauf pour la parole (speech), où les valeurs non prises en charge renvoient une erreur 400.
Tools et format des définitions d'outils
L'API native comme le point de terminaison de chat compatible OpenAI acceptent tools. Si vous décrivez des outils dans le format OpenAI, le Tool Definition Checker de ce site vérifie les noms, les descriptions et les schémas de paramètres par rapport à ce format avant l'envoi.
Quand la réponse n'est toujours pas du JSON valide
Contraindre la sortie vise à vous donner du JSON valide, mais votre propre code peut tout de même recevoir du texte provenant d'un autre modèle, d'une version plus ancienne ou d'une requête sans format. L'outil ci-dessous répare les défauts courants tels que les blocs de code délimités, les virgules finales et les guillemets incorrects, et avertit lorsqu'une réparation modifie le sens.
Essayer: LLM JSON Repair
Seules les corrections qui n'ont qu'une réponse possible sont appliquées. Le reste est signalé avec sa position, sans être deviné.
Tout s'exécute dans votre navigateur. Le texte collé n'est pas envoyé.
Une remarque sur l'accès
L'exemple local de la documentation indique que la clé d'API est obligatoire mais ignorée. Notre lecture, et non une déclaration des documents : la clé ne protège pas le serveur ; gardez donc Ollama sur son adresse par défaut et placez une authentification devant lui si une autre machine doit y accéder.
Sources
À lire ensuite
- Open WebUI sur un VPS : le lancer dans Docker et le connecter à OllamaLancez Open WebUI avec Docker et connectez-le à Ollama sur votre propre serveur : les commandes, le premier compte, les deux types de connexion et la mise à jour.
- Que peut faire un modèle local ? Tools, thinking, vision et embeddings dans Ollama, et ce qui tient sur un VPSTools, thinking, vision, embeddings : ce que signifient les libellés de la bibliothèque Ollama, quels modèles les portent et quelle est la taille des téléchargements.
- Installer Ollama sur un VPS et le garder en marche : installation, service systemd, réglages et mises à jourInstaller Ollama sur un VPS Linux et le garder en marche : la commande d'installation, le service systemd, les variables d'environnement, le stockage des modèles et les mises à jour, d'après la documentation officielle.
- De quelle mémoire un LLM local a-t-il besoin sur un VPS ? Fichier du modèle plus cache KVFichier du modèle plus cache KV : ce que disent la bibliothèque Ollama, la FAQ d'Ollama et les configurations officielles des modèles sur la mémoire dont un LLM local a besoin sur un VPS.