Veröffentlicht: 13. Mai 2025
Large Language Models (LLMs) sind dafür bekannt, dass sie manchmal sehr lange Antworten geben. Auch wenn Sie dem Modell sagen, dass es nur mit „wahr“ oder „falsch“ antworten soll, kann es mit einer freundlichen Antwort und mehr als dem, was Sie gefragt haben, reagieren, z. B.: „Die Antwort ist: wahr.“
Um diese Herausforderung zu meistern, können Sie mit der Prompt API ein JSON-Ausgabeformat für die Antwort des Modells festlegen, indem Sie ein JSON-Schema an die Methoden LanguageModel.prompt()
und LanguageModel.promptStreaming()
übergeben. Die Unterstützung für strukturierte Ausgabe ist ab Chrome-Version 137 verfügbar.
Was ist ein JSON-Schema?
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 JSON Schema ein leistungsstarker Standard zum Definieren der Struktur und der Regeln von JSON-Daten. Dabei wird eine Reihe von Schlüsselwörtern verwendet, um die Eigenschaften Ihrer Daten zu definieren.
JSON Schema ist der Branchenstandard für strukturierte Ausgaben und wird unter anderem von der OpenAI API und der Gemini API verwendet.
Sie fordern das Modell beispielsweise auf, einem Beitrag in einem Onlinesozialen Netzwerk wie Mastodon maximal drei Hashtags zuzuweisen. Die ideale Ausgabe könnte in etwa so aussehen:
{
"hashtags": [
"#pottery",
"#dyi"
]
}
Das entsprechende JSON-Schema für diese angeforderte Form des Ausgabetyps würde dann so aussehen:
{
"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 hashtags
-Feld mit den folgenden Einschränkungen enthalten muss:
"type": "object"
: Der Stammwert muss ein JSON-Objekt sein."properties": { "hashtags": ... }
: Das Objekt kann (und muss in diesem Fall) eine Property namenshashtags
haben."hashtags":
"type": "array"
: Der Wert muss ein Array sein."maxItems": 3
: Das Array kann maximal drei Elemente enthalten."items": { "type": "string", "pattern": "^#[^\\s#]+$" }
: Jedes Element im Array muss ein String sein, der dem angegebenen Muster für reguläre Ausdrücke 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 die Propertyhashtags
enthalten."additionalProperties": false
: Es sind nur Hashtags zulässig.
Eine vollständige Beschreibung der Funktionen des Formats finden Sie in der Dokumentation JSON Schema Basics.
Tatsächlich sind LLMs sehr gut darin, JSON-Schemas zu erstellen. Beschreiben Sie die Einschränkungen in natürlicher Sprache in Ihrem Prompt und geben Sie ein gültiges JSON-Objekt als Beispiel an. Anschließend können Sie JSON-Objekte mit einem der JSON-Schema-Validierungstools anhand des generierten JSON-Schemas validieren, z. B. mit dem Online-Tool Newtonsoft JSON Schema Validator.
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 Options-Objekt der Methoden prompt()
oder promptStreaming()
als Wert eines responseConstraint
-Felds übergeben.
Hier ist ein sehr einfaches JSON-Schema-Beispiel, das dafür sorgt, dass das Modell mit true
oder false
antwortet, wenn es klassifiziert, ob es in einer bestimmten Nachricht wie diesem Mastodon-Beitrag um Töpferei 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 strukturierter Ausgaben für die Prompt API macht die Antworten des LLM viel vorhersehbarer. Anstatt ein Objekt aus einer Markdown-Antwort oder einer anderen Nachbearbeitung zu extrahieren, können Entwickler jetzt davon ausgehen, dass die Antwort des Modells gültiges JSON ist.
Damit rückt die integrierte KI einen Schritt näher an cloudbasierte APIs heran – mit allen Vorteilen der lokalen, clientseitigen Ausführung von KI.