Надеюсь, все уже перевернули календарь 🗓️, и теперь снова можно поговорить про AI.
Все вокруг только и говорят о том, как они используют AI для разработки, но как интегрировать AI в продукт?
Ещё недавно для этого использовался JSON Mode. Для этого было достаточно указать:
- { "type": "json_object" }
- И в системном промпте указать, что модель должна вернуть JSON.
Но JSON Mode гарантирует лишь то, что модель вернёт валидный JSON, при этом далеко не факт, что он будет соответствовать JSON-схеме, которая нужна вам.
Эту проблему решает более современный подход — Structured Output.
Structured Output позволяет задать схему данных, и модель обязана вернуть результат, который ей соответствует. То есть мы получаем не "похоже на JSON", а чётко определённую структуру.
`import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const response = await client.chat.completions.create({ model: "gpt-4.1", messages: [ { role: "system", content: "Ты ассистент, который советует фильмы." }, { role: "user", content: "Подскажи хороший фильм для пятничного вечера." } ], response_format: { type: "json_schema", json_schema: { name: "movie_suggestion", schema: { type: "object", properties: { title: { type: "string" }, genre: { type: "string" }, year: { type: "integer" } }, required: ["title", "genre", "year"] } } } });
console.log(response.choices[0].message.parsed);
Что здесь происходит:
- Системный промпт задаёт роль модели: она должна советовать фильмы.
- json_schema описывает структуру ответа: объект с тремя обязательными полями — title (строка), genre (строка), year (число).
В итоге при любом запросе на тему фильмов модель вернёт именно такой объект, и его можно использовать в коде — например, выводить в UI или сохранять в базу. Но обработку пограничных случаев в любом случае добавить стоит.
Ещё по теме:
А вы интегрируете AI в свои продукты?
- 😎 конечно
- 👀 пока нет, присматриваемся
- 😈 выпиливаем
@cherkashindev #ai`