РУКОВОДСТВО · ОБНОВЛЕНО 2026-11-15
Как задать необязательное значение в Structured Outputs
В строгой схеме OpenAI объявите ключ обязательным и разрешите null в его типе. Так пустое значение сохранит форму ответа, а приложение сможет отличить его от заполненного поля.
В строгой схеме OpenAI объявите ключ обязательным и разрешите null в его типе. Так пустое значение сохранит форму ответа, а приложение сможет отличить его от заполненного поля.
1. Определите смысл null
Например, в извлечённом контакте null может означать, что в исходном тексте нет телефона. Если нужно отличить неизвестное поле от скрытого, добавьте отдельное перечисление причин. Проверьте, что приложению действительно нужны оба состояния.
2. Запишите обязательный ключ
Для поля phone укажите type со значениями string и null. Включите phone в required и установите additionalProperties: false для объекта. Примените те же правила к вложенным объектам.
3. Сверьте схему после генерации SDK
Посмотрите JSON Schema, которую отправляет SDK. Optional в типах языка может убрать имя из required. Используйте поддерживаемый способ описания nullable и сверяйте получившийся контракт перед запросом.
4. Проверьте приёмку ответа
Возьмите записи с телефоном и без телефона, затем проверьте результат валидатором и бизнес-правилами. Отдельно обрабатывайте отказ или незавершённый ответ. Валидная строка всё ещё может содержать неверный телефон.
Частые вопросы
Обязательный ключ может быть null?
Да, если схема допускает null в типе.
Может ли поле отсутствовать?
В описанном строгом контракте ключ должен присутствовать.
Почему не подходит пустая строка?
Она имеет тип string и может обозначать иное состояние в приложении.
Нужен ли валидатор?
Он помогает проверять полученный объект и отдельные бизнес-ограничения.