Лента новостей искусственного интеллекта · ru / en / zh · обновление каждый час
МоделиОткрытый код 🇷🇺 19.07.2026 06:02

Пять проблем strict-режима OpenAI: когда структура есть, а гарантий нет

OpenAIOpenAI
OpenAI strict-режим гарантирует соответствие JSON-схеме, но не все ограничения схемы учитываются. В статье разобраны пять ситуаций, когда код корректен, а гарантии не работают, и даны рекомендации по их устранению.
Strict-режим OpenAI, появившийся в августе 2024 года, гарантирует, что модель вернет JSON, строго соответствующий заданной схеме. Однако на практике возникают ситуации, когда это не срабатывает. Первая проблема: Pydantic-валидаторы (pattern, minimum и т.д.) молча игнорируются, так как strict-режим понимает не все JSON Schema. Решение — разделять структурные и семантические ограничения: структуру оставлять в схеме, а бизнес-правила проверять отдельными валидаторами. Вторая проблема: опциональные поля (Optional с default=None) ломают схему, так как strict требует, чтобы все поля были в required. Выход — убирать default, чтобы поле было обязательным, но допускало null. Третья проблема: parsed может быть равен None из-за отказа модели (refusal) или обрыва по лимиту токенов (finish_reason='length'). Нужно проверять оба поля до обращения к parsed. Четвертая проблема: алиас модели без даты может перенаправить запрос на версию, не поддерживающую strict, и он выполнится как обычный JSON Mode. Решение — закреплять конкретный снапшот модели. Пятая проблема: параллельные вызовы инструментов (parallel_tool_calls=True) несовместимы со strict. Приходится выбирать: отключить параллельность, валидировать аргументы на своей стороне или использовать Instructor, который эмулирует strict через retry.
Сокращения
JSON = JavaScript Object Notation — нотация объектов JavaScript
API = Application Programming Interface — интерфейс программирования приложений
SDK = Software Development Kit — набор инструментов для разработки программного обеспечения
Источник: Habr — хаб ИИ — оригинал

Наши прошлые публикации по теме