Надеюсь, все уже перевернули календарь 🗓️, и теперь снова можно поговорить про 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`