Опубликовано: 13 мая 2025 г.
Большие языковые модели (БЯМ) печально известны своими порой затянутыми ответами. Даже если вы попросите модель ответить просто «истина» или «ложь», она может выдать более понятный ответ, чем вы запрашивали, например: «Безусловно, ответ: истина».
Для решения этой проблемы API Prompt позволяет указывать формат вывода JSON для ответа модели, передавая схему JSON методам LanguageModel.prompt() и LanguageModel.promptStreaming() . Поддержка структурированного вывода доступна начиная с версии Chrome 137.
Что такое JSON Schema?
JSON Schema — это словарь, обеспечивающий согласованность, достоверность и совместимость данных JSON в масштабах всей системы. В контексте обмена данными JSON Schema выделяется как мощный стандарт для определения структуры и правил данных JSON. Он использует набор ключевых слов для определения свойств ваших данных.
JSON Schema — это отраслевой стандарт, обеспечивающий структурированный вывод данных, используемый, в частности, API OpenAI и API Gemini .
Например, вы просите модель присвоить публикации в онлайн-социальной сети, такой как Mastodon, не более трех хэштегов. Идеальный результат должен выглядеть примерно так в формате JSON:
{
"hashtags": [
"#pottery",
"#dyi"
]
}
Соответствующая JSON-схема для запрошенного формата выходного объекта будет выглядеть следующим образом:
{
"type": "object",
"properties": {
"hashtags": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"pattern": "^#[^\\s#]+$"
}
}
},
"required": ["hashtags"],
"additionalProperties": false
}
Данная JSON-схема определяет структуру объекта, который должен содержать поле hashtags и следующими ограничениями:
-
"type": "object": Корневое значение должно быть объектом JSON. -
"properties": { "hashtags": ... }: Объект может (и в данном случае должен) иметь свойство с именемhashtags. "hashtags":-
"type": "array": Значение должно быть массивом. -
"maxItems": 3: Массив может содержать не более 3 элементов. -
"items": { "type": "string", "pattern": "^#[^\\s#]+$" }: Каждый элемент массива должен быть строкой, соответствующей заданному шаблону регулярного выражения:^#[^\\s#]+$:-
^#→ должно начинаться с#. -
[^\\s#]+→ за которым следует один или несколько символов, не являющихся пробелом (\s) или другим#. - На этом
$должно закончиться.
-
-
"required": ["hashtags"]: Объект должен содержать свойствоhashtags."additionalProperties": false: Никакие другие свойства, кроме хэштегов, не допускаются.
Для получения полного описания возможностей формата JSON Schema ознакомьтесь с документацией «Основы JSON Schema» .
На самом деле, студенты магистратуры очень хорошо умеют создавать JSON-схемы. Опишите ограничения на естественном языке в задании и предоставьте допустимый пример JSON-объекта — и вы уже на полпути к цели. Затем вы можете проверить JSON-объекты на соответствие сгенерированной JSON-схеме с помощью одного из валидаторов JSON-схем , например, онлайн- валидатора JSON-схем Newtonsoft .

Передайте JSON-схему в API запроса
Чтобы убедиться, что модель соблюдает запрошенную JSON-схему, необходимо передать JSON-схему в качестве аргумента объекту параметров методов prompt() или promptStreaming() в качестве значения поля responseConstraint .
Вот очень простой пример JSON Schema, который гарантирует, что модель ответит либо true , либо false при классификации того, относится ли данное сообщение, например, этот пост на Mastodon, к керамике.
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
Поддержка предсказуемых результатов
Поддержка структурированного вывода для API Prompt делает ответы LLM гораздо более предсказуемыми. Вместо извлечения объекта из ответа в формате Markdown или другой постобработки, разработчики теперь могут предполагать, что ответ модели представляет собой допустимый JSON.
Это приближает встроенный ИИ на один шаг к облачным API, сохраняя при этом все преимущества запуска локального ИИ на стороне клиента.