OpenAI представила Structured Outputs в API, что гарантирует соответствие JSON-схемам и повышает надежность ответов моделей.
Кратко:
●OpenAI внедрила Structured Outputs в API
●Модели гарантированно следуют JSON-схемам
●Поддержка в SDK на Python и Node.js
●Важны архитектурные ограничения и задержки
OpenAI запускает Structured Outputs для API
6 августа 2024 года OpenAI анонсировала новое обновление — Structured Outputs в API. Эта функция позволяет моделям строго следовать JSON-схемам, заданным разработчиками, что ранее было сложно обеспечить даже с использованием JSON mode.
Как работают Structured Outputs
Structured Outputs доступны через два основных метода:
Function calling
: модели, поддерживающие вызов функций, такие как gpt‑4‑0613 и gpt‑3.5‑turbo‑0613, теперь могут работать в режиме, который гарантирует соответствие заданной JSON-схеме.
Response format: использование response_format: { type: "json_schema" } позволяет моделям, таким как gpt‑4o‑2024‑08‑06, выдавать ответы, строго соответствующие заданной структуре. Это обновление также снижает стоимость на 50% на ввод и на 33% на вывод по сравнению с предыдущими моделями.
Технические подробности
Для достижения точности в 100% в генерации ответов используется метод constrained decoding. JSON-схема преобразуется в контекстно-свободную грамматику, которая блокирует токены, нарушающие её структуру. Это значительно повышает точность, по сравнению с предыдущими версиями моделей.
При первом использовании новой схемы её обработка занимает время, но последующие запросы проходят быстрее благодаря кешированию.
Безопасность и отказоустойчивость
Structured Outputs строго соблюдают политики безопасности OpenAI. В случаях нарушения политики модель может возвращать специальное поле "refusal". Однако при достижении max_tokens или других условиях модель может не завершить корректное формирование JSON.
Поддержка в SDK
Для разработчиков уже доступна поддержка Structured Outputs в SDK на Python и Node.js. Инструменты Pydantic и Zod позволяют автоматизировать конвертацию и десериализацию схем.
Ограничения и рекомендации
●Поддерживается только частичный поднабор JSON Schema.
●Не работает с параллельными вызовами функций.
●JSON-схемы не соответствуют Zero Data Retention (ZDR).
●Возможны ошибки в значениях, рекомендуется использовать примеры в инструкциях.
Влияние на разработчиков
Structured Outputs — значительный шаг в повышении надежности взаимодействия с языковыми моделями. Однако важно учитывать архитектурные ограничения и возможные задержки. Разработчикам рекомендуется использовать этот инструмент как часть комплексной системы проверки.
Частые вопросы
Что такое Structured Outputs в API?
Structured Outputs — это функция, обеспечивающая строгое соответствие ответов моделей заданным JSON-схемам.
Какие модели поддерживают Structured Outputs?
Поддержка есть у моделей, таких как gpt‑4‑0613 и gpt‑3.5‑turbo‑0613, и новее.
Какие ограничения есть у Structured Outputs?
Ограничения включают частичную поддержку JSON Schema и невозможность работы с параллельными вызовами функций.
Где можно использовать Structured Outputs?
Поддержка реализована в SDK на Python и Node.js, с использованием Pydantic и Zod.