Veröffentlicht am 13. Mai 2025
Large Language Models (LLMs) sind für ihre gelegentlich langen Antworten bekannt. Auch wenn Sie dem Modell sagen, es soll nur mit „true“ oder „false“ antworten, kann es mit einer freundlichen Antwort und mehr als dem, was Sie gefragt haben, antworten, z. B. „Sicher, die Antwort ist: true“.
Um dieses Problem zu beheben, können Sie mit der Prompt API
ein JSON-Ausgabeformat für die Antwort des Modells angeben, indem Sie ein
JSON-Schema an die LanguageModel.prompt() und
LanguageModel.promptStreaming() Methoden übergeben. Die Unterstützung für strukturierte Ausgaben ist ab Chrome-Version 137 verfügbar.
Was ist ein JSON-Schema?
Ein JSON-Schema ist ein Vokabular, das die Konsistenz, Gültigkeit und Interoperabilität von JSON-Daten im großen Maßstab ermöglicht. Beim Datenaustausch ist das JSON-Schema ein leistungsstarker Standard zum Definieren der Struktur und der Regeln von JSON-Daten. Es verwendet eine Reihe von Keywords, um die Eigenschaften Ihrer Daten zu definieren.
Das JSON-Schema ist der Branchenstandard für strukturierte Ausgaben und wird unter anderem von der OpenAI API und Gemini APIverwendet.
Sie fordern das Modell beispielsweise auf, maximal drei Hashtags für einen Beitrag in einem sozialen Onlinenetzwerk wie Mastodon zuzuweisen. Die ideale Ausgabe könnte so aussehen:
{
"hashtags": [
"#pottery",
"#dyi"
]
}
Das entsprechende JSON-Schema für diese angeforderte Form des Ausgabobjekts sieht dann so aus:
{
"type": "object",
"properties": {
"hashtags": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"pattern": "^#[^\\s#]+$"
}
}
},
"required": ["hashtags"],
"additionalProperties": false
}
Dieses JSON-Schema definiert eine Struktur für ein Objekt, das ein Feld hashtags mit den folgenden Einschränkungen enthalten muss:
"type": "object": Der Stammwert muss ein JSON-Objekt sein."properties": { "hashtags": ... }: Das Objekt kann (und in diesem Fall, muss) eine Property namenshashtagshaben."hashtags":"type": "array": Der Wert muss ein Array sein."maxItems": 3: Das Array darf maximal drei Elemente enthalten."items": { "type": "string", "pattern": "^#[^\\s#]+$" }: Jedes Element im Array muss ein String sein, der dem angegebenen regulären Ausdrucksmuster entspricht:^#[^\\s#]+$:^#→ muss mit einem#beginnen.[^\\s#]+→ gefolgt von einem oder mehreren Zeichen, die kein Leerzeichen (\s) oder ein weiteres#sind.$→ muss dort enden.
"required": ["hashtags"]: Das Objekt muss diehashtagsProperty enthalten."additionalProperties": false: Es sind keine anderen Properties als Hashtags zulässig.
Eine vollständige Beschreibung der Funktionen des Formats finden Sie in der Dokumentation zu den JSON Schema Basics.
Tatsächlich sind LLMs sehr gut im Erstellen von JSON-Schemas. Beschreiben Sie die Einschränkungen in natürlicher Sprache in Ihrem Prompt und geben Sie ein gültiges JSON-Beispielobjekt an. Dann haben Sie schon die Hälfte geschafft. Sie können JSON-Objekte dann mit einem der JSON-Schema-Validatoren anhand des generierten JSON-Schemas validieren, z. B. mit dem Online-Validator für das Newtonsoft-JSON-Schema.

JSON-Schema an die Prompt API übergeben
Damit das Modell ein angefordertes JSON-Schema berücksichtigt, müssen Sie das JSON-Schema als Argument an das Optionenobjekt der Methoden prompt() oder promptStreaming() übergeben, und zwar als Wert eines Felds responseConstraint.
Hier ist ein sehr einfaches JSON-Schema-Beispiel, das dafür sorgt, dass das Modell mit
entweder true oder false antwortet, wenn es klassifiziert, ob es in einer bestimmten Nachricht wie diesem
Mastodon-Beitrag um
Keramik geht.
const session = await LanguageModel.create();
const schema = {
"type": "boolean"
};
const post = "Mugs and ramen bowls, both a bit smaller than intended- but that's
how it goes with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";
const result = await session.prompt(
`Is this post about pottery?\n\n${post}`,
{
responseConstraint: schema,
}
);
console.log(JSON.parse(result));
// true
Vorhersehbare Ausgaben unterstützen
Die Unterstützung für strukturierte Ausgaben für die Prompt API macht die Antworten des LLM viel vorhersehbarer. Anstatt ein Objekt aus einer Markdown-Antwort zu extrahieren oder eine andere Nachbearbeitung durchzuführen, können Entwickler jetzt davon ausgehen, dass die Antwort des Modells gültiges JSON ist.
Dadurch rückt die integrierte KI einen Schritt näher an cloudbasierte APIs heran, mit allen Vorteilen der lokalen, clientseitigen KI.