Перейти к основному содержанию

Documentation Index

Fetch the complete documentation index at: https://speshu.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

Структурный вывод позволяет получать ответы от AI моделей в строгом JSON формате, соответствующем заданной схеме.
Поддержка структурного вывода зависит от модели. Проверяйте возможности в каталоге моделей.

Зачем это нужно?

  • Парсинг данных: Извлечение структурированной информации из текста
  • API интеграции: Получение данных в формате, готовом для обработки
  • Валидация: Гарантия соответствия ответа заданной структуре
  • Автоматизация: Надёжная интеграция с бизнес-процессами

Способы получения структурного вывода

1. response_format (рекомендуется)

Самый надёжный способ — использовать параметр response_format с JSON Schema:
import OpenAI from 'openai';

const openai = new OpenAI({
  baseURL: 'https://speshu.ai/api/v1',
  apiKey: '<SPESHU_AI_API_KEY>'
});

const completion = await openai.chat.completions.create({
  model: 'openai/gpt-5.5',
  messages: [
    {
      role: 'user',
      content: 'Извлеки информацию о товаре: iPhone 15 Pro, 256GB, цена 89990 рублей, в наличии'
    }
  ],
  response_format: {
    type: 'json_schema',
    json_schema: {
      name: 'product',
      strict: true,
      schema: {
        type: 'object',
        properties: {
          name: { type: 'string', description: 'Название товара' },
          storage: { type: 'string', description: 'Объём памяти' },
          price: { type: 'number', description: 'Цена в рублях' },
          in_stock: { type: 'boolean', description: 'Наличие на складе' }
        },
        required: ['name', 'storage', 'price', 'in_stock'],
        additionalProperties: false
      }
    }
  }
});

const product = JSON.parse(completion.choices[0].message.content);

2. json_object (простой JSON)

Для простых случаев, когда схема не критична:
const completion = await openai.chat.completions.create({
  model: 'openai/gpt-5.5',
  messages: [
    {
      role: 'system',
      content: 'Всегда отвечай в формате JSON с полями: name, price, currency'
    },
    { role: 'user', content: 'Цена на MacBook Air?' }
  ],
  response_format: { type: 'json_object' }
});

Параметр strict

ЗначениеОписание
trueОтвет точно соответствует схеме. Рекомендуется.
falseМодель может отклоняться от схемы. Не рекомендуется.

Советы и лучшие практики

Всегда используйте strict: true Это гарантирует соответствие ответа схеме и предотвращает ошибки парсинга. Добавляйте описания полей Описания помогают модели лучше понять, что ожидается в каждом поле. Используйте enum для ограниченных значений Если поле должно содержать одно из нескольких значений, используйте enum. Ограничивайте additionalProperties Установите additionalProperties: false чтобы модель не добавляла лишние поля. Оборачивайте массивы в объект Вместо type: "array" на верхнем уровне, используйте объект с полем-массивом.