~/ / KI-Artikel / Lokale LLMs auf einem VPS / Ein lokales Modell aus dem eigenen Code aufrufen: Structured Outputs und die OpenAI-kompatible API in Ollama
Ein lokales Modell aus dem eigenen Code aufrufen: Structured Outputs und die OpenAI-kompatible API in Ollama
Sobald Ollama auf Ihrem Server läuft, braucht Ihr eigener Code zwei Dinge: eine Möglichkeit, Antworten in einer festen Form zu erhalten, und einen Weg, den Server aus Bibliotheken zu erreichen, die bereits die OpenAI API sprechen. Ollama dokumentiert beides. Dieser Artikel fasst die Seite zu Structured Outputs und die Seite zur OpenAI-Kompatibilität zusammen und weist darauf hin, was laut Dokumentation nicht unterstützt wird.
Veröffentlicht: · 4 Min. Lesezeit · Geprüft anhand der offiziellen Ollama-Dokumentation am 2026-10-26. Die unterstützten Funktionen ändern sich zwischen den Versionen; bitte bestätigen Sie sie in den aktuellen Dokumenten.
Zwei Wege, denselben Server aufzurufen
Ollama hat eine eigene API; die Beispiele in der Dokumentation senden ihre POST-Anfragen an http://localhost:11434/api/chat. Außerdem gibt es unter /v1/ eine OpenAI-kompatible API, sodass bestehende OpenAI-Clients den Server ansprechen können, indem man die Basis-URL ändert.
| Punkt | Native API | OpenAI-compatible API |
|---|---|---|
| Basisadresse | http://localhost:11434/api/chat | http://localhost:11434/v1/ |
| API-Schlüssel | in den Beispielen nicht erwähnt | api_key='ollama', den die Seite als erforderlich, aber ignoriert kennzeichnet |
| Feld für strukturierte Ausgabe | format | response_format |
Die Angabe zum API-Schlüssel stammt aus dem Beispiel der Dokumentation für den lokalen Server. Für die Cloud zeigt die Seite base_url https://ollama.com/v1 mit einem API-Schlüssel aus Ihrem Ollama-Konto; das ist ein anderer Fall.
Structured Outputs: das Feld format
Das Feld format schränkt die Antwort ein. Es akzeptiert den String json für generisches JSON oder ein JSON-Schema-Objekt. In den cURL-Beispielen der Dokumentation hat der Anfrage-Body vier Felder: model, messages, stream mit dem Wert false und format. Das Schema in den Beispielen enthält type, properties und required.
| Wert von format | Wirkung laut Dokumentation |
|---|---|
| "json" | Das Modell antwortet mit generischem JSON |
| ein JSON-Schema-Objekt | Die Antwort wird auf dieses Schema eingeschränkt |
- Die Dokumentation nennt es ideal, das JSON Schema zusätzlich als String im Prompt mitzugeben, um die Antwort des Modells zu verankern.
- Sie empfiehlt außerdem, die temperature zu senken, zum Beispiel auf 0, für deterministischere Ergebnisse.
- Für Python und JavaScript schlägt sie vor, Schemas mit Pydantic oder Zod zu definieren, damit sie auch für die Validierung wiederverwendet werden können.
- Vision-Modelle akzeptieren denselben Parameter format. Das Vision-Beispiel in der Dokumentation übergibt ein Bild zusammen mit einem Schema.
- Laut der Seite unterstützt die Cloud von Ollama derzeit keine Structured Outputs.
Prüfen Sie ein Schema, bevor Sie sich darauf verlassen. Der JSON Schema Validator unten zeigt Ihnen, ob das Schema selbst gültig ist und ob eine Beispielantwort dazu passt.
Das gesendete Schema prüfen
Ein fehlerhaftes Schema kann erst spät scheitern, nämlich wenn die erste Anfrage das Modell erreicht. Fügen Sie das Schema und ein Beispiel des erwarteten JSON ein und sehen Sie, ob beide zusammenpassen.
Ausprobieren: JSON Schema Validator
Folgt für die unterstützten Schlüsselwörter JSON Schema Draft 2020-12. $ref wird nur innerhalb desselben Schemas gelesen.
Alles läuft in Ihrem Browser. Schema und Daten werden nicht hochgeladen.
Die OpenAI-kompatiblen Endpunkte
| Endpunkt | Was die Seite aufführt | Als nicht unterstützt aufgeführt |
|---|---|---|
| /v1/chat/completions | Chat, Streaming, JSON mode, reproduzierbare Ausgaben, Vision, Tools, Steuerung des Reasoning | logprobs, tool_choice, logit_bias, user, n; Bild-URLs (stattdessen base64 verwenden) |
| /v1/completions | Completions, Streaming, JSON mode, reproduzierbare Ausgaben | logprobs, best_of, echo, logit_bias, user, n |
| /v1/models | Modelle auflisten und abrufen | nicht aufgeführt |
| /v1/embeddings | Eingabe als String oder String-Array, Kodierungsformat, Dimensionen | Token-Arrays, user |
| /v1/responses | Streaming, Function-Calling-Tools, Zusammenfassungen des Reasoning | zustandsbehaftete Anfragen: previous_response_id, conversation, truncation |
- Beim Chat-Endpunkt nennt die Seite unter den unterstützten Anfragefeldern: response_format, tools, stream, stream_options, seed, stop, temperature, top_p, max_tokens, frequency_penalty und presence_penalty.
- Die Seite hält fest, dass Structured Outputs über die OpenAI-kompatible API mit response_format funktionieren.
- Wenn Ihr Code ein Feld aus der Spalte der nicht unterstützten Felder verwendet, ändern Sie den Code, statt zu erwarten, dass der Server es ignoriert. Die Dokumentation sagt nicht, wie die einzelnen nicht unterstützten Felder behandelt werden; Ausnahme ist speech, wo nicht unterstützte Werte einen 400-Fehler zurückgeben.
Tools und das Format von Tool-Definitionen
Sowohl die native API als auch der OpenAI-kompatible Chat-Endpunkt akzeptieren tools. Wenn Sie Tools in der OpenAI-Form beschreiben, prüft der Tool Definition Checker auf dieser Website Namen, Beschreibungen und Parameter-Schemas gegen dieses Format, bevor Sie sie senden.
Wenn die Antwort trotzdem kein gültiges JSON ist
Die Einschränkung der Ausgabe soll Ihnen gültiges JSON liefern, aber Ihr Code kann trotzdem Text von einem anderen Modell, einer älteren Version oder aus einer Anfrage ohne format erhalten. Das Werkzeug unten repariert die häufigen Fehler wie Code-Fences, nachgestellte Kommas und falsche Anführungszeichen und warnt, wenn eine Reparatur die Bedeutung verändert.
Ausprobieren: LLM JSON Repair
Es werden nur Korrekturen mit einer eindeutigen Lösung angewendet. Alles andere wird mit seiner Position gemeldet, statt geraten zu werden.
Alles läuft in Ihrem Browser. Der eingefügte Text wird nicht hochgeladen.
Ein Hinweis zum Zugriff
Laut dem lokalen Beispiel der Dokumentation ist der API-Schlüssel erforderlich, wird aber ignoriert. Unsere Lesart, keine Aussage aus den Dokumenten: Der Schlüssel schützt den Server nicht. Lassen Sie Ollama daher auf seiner Standardadresse und schalten Sie eine Authentifizierung davor, wenn ein anderer Rechner darauf zugreifen muss.
Quellen
Als Nächstes lesen
- Open WebUI auf einem VPS: in Docker betreiben und mit Ollama verbindenOpen WebUI mit Docker betreiben und auf dem eigenen Server mit Ollama verbinden: die Befehle, das erste Konto, die zwei Verbindungstypen und das Aktualisieren.
- Was kann ein lokales Modell? Tools, Thinking, Vision und Embeddings in Ollama und was auf einen VPS passtTools, Thinking, Vision, Embeddings: was die Labels in der Ollama-Bibliothek bedeuten, welche Modelle sie tragen und wie groß die Downloads sind.
- Ollama auf einem VPS installieren und dauerhaft betreiben: Installation, systemd-Dienst, Einstellungen und UpdatesOllama auf einem Linux-VPS installieren und dauerhaft betreiben: Installationsbefehl, systemd-Dienst, Umgebungsvariablen, Modellspeicher und Updates, nach der offiziellen Dokumentation.
- Wie viel Arbeitsspeicher braucht ein lokales LLM auf einem VPS? Modelldatei plus KV-CacheModelldatei plus KV-Cache: Was die Ollama-Bibliothek, die Ollama-FAQ und die offiziellen Modellkonfigurationen über den Arbeitsspeicherbedarf eines lokalen LLM auf einem VPS sagen.