Opublikowano: 13 maja 2025 r.
Duże modele językowe (LLM) są znane z tego, że czasami udzielają długich odpowiedzi. Nawet jeśli poprosisz model o odpowiedź „true” lub „false”, może on odpowiedzieć w przyjazny sposób i podać więcej informacji, niż oczekujesz, np. „Oczywiście, odpowiedź to: true”.
Aby rozwiązać ten problem, interfejs Prompt API umożliwia określenie formatu wyjściowego JSON odpowiedzi modelu przez przekazanie schematu JSON do metod LanguageModel.prompt() i LanguageModel.promptStreaming(). Obsługa danych wyjściowych w postaci uporządkowanej jest dostępna od wersji Chrome 137.
Czym jest schemat JSON
Schemat JSON to słownik, który umożliwia zachowanie spójności, ważności i interoperacyjności danych JSON na dużą skalę. W przypadku wymiany danych schemat JSON wyróżnia się jako skuteczny standard definiowania struktury i reguł danych JSON. Używa on zestawu słów kluczowych do definiowania właściwości danych.
Schemat JSON to standard branżowy zapewniający uporządkowane dane wyjściowe, używany m.in. przez interfejs OpenAI API i Gemini API.
Na przykład możesz poprosić model o przypisanie co najwyżej 3 hashtagów do posta w sieci społecznościowej online, takiej jak Mastodon. Idealne dane wyjściowe mogą wyglądać podobnie do tego kodu JSON:
{
"hashtags": [
"#pottery",
"#dyi"
]
}
Odpowiedni schemat JSON dla tego żądanego kształtu obiektu wyjściowego będzie wyglądać tak:
{
"type": "object",
"properties": {
"hashtags": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"pattern": "^#[^\\s#]+$"
}
}
},
"required": ["hashtags"],
"additionalProperties": false
}
Ten schemat JSON definiuje strukturę obiektu, który musi zawierać pole hashtags z tymi ograniczeniami:
"type": "object": wartość główna musi być obiektem JSON."properties": { "hashtags": ... }: obiekt może (a w tym przypadku musi) mieć właściwość o nazwiehashtags."hashtags":"type": "array": wartość musi być tablicą."maxItems": 3: tablica może zawierać co najwyżej 3 elementy."items": { "type": "string", "pattern": "^#[^\\s#]+$" }: każdy element w tablicy musi być ciągiem znaków pasującym do podanego wzorca wyrażenia regularnego:^#[^\\s#]+$:^#→ musi zaczynać się od znaku#.[^\\s#]+→ po którym następuje co najmniej 1 znak, który nie jest spacją (\s) ani innym znakiem#.$→ musi się tam kończyć.
"required": ["hashtags"]: obiekt musi zawierać właściwośćhashtags."additionalProperties": false: nie są dozwolone żadne inne właściwości niż hashtagi.
Pełny opis możliwości formatu znajdziesz w dokumentacji podstaw schematu JSON.
Modele LLM doskonale radzą sobie z tworzeniem schematów JSON. Wystarczy, że w prompcie opiszesz ograniczenia w języku naturalnym i podasz prawidłowy przykładowy obiekt JSON. Następnie możesz zweryfikować obiekty JSON na podstawie wygenerowanego schematu JSON za pomocą jednego z walidatorów schematu JSON, np. internetowego walidatora schematu JSON Newtonsoft.

Przekazywanie schematu JSON do interfejsu Prompt API
Aby mieć pewność, że model będzie przestrzegać żądanego schematu JSON, musisz przekazać schemat JSON jako argument do obiektu opcji metod prompt() lub promptStreaming() jako wartość pola responseConstraint.
Oto bardzo prosty przykład schematu JSON, który zapewnia, że model odpowie
„true” lub „false” w przypadku klasyfikowania, czy dana wiadomość, np. ten
post na Mastodonie, dotyczy
ceramiki.
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
Obsługa przewidywalnych danych wyjściowych
Obsługa danych wyjściowych w postaci uporządkowanej w interfejsie Prompt API sprawia, że odpowiedzi LLM są znacznie bardziej przewidywalne. Zamiast wyodrębniać obiekt z odpowiedzi w formacie Markdown lub innego przetwarzania końcowego, deweloperzy mogą teraz założyć, że odpowiedź modelu jest prawidłowym kodem JSON.
Dzięki temu wbudowana AI jest o krok bliżej interfejsów API opartych na chmurze, z wszystkimi zaletami działania lokalnej AI po stronie klienta.