Обзор
Структурированные выходные данные позволяют: — принудительно выполнять специальную проверку схемы JSON для ответов модели.- Получайте последовательные, типобезопасные выходные данные.
- Избегайте ошибок синтаксического анализа и галлюцинаторных полей. — Упростите обработку ответов в вашем приложении.
Использование структурированных выходных данных
Чтобы использовать структурированные выходные данные, включите Параметрresponse_format в вашем запросе, с type установлен на json_schema и Объект json_schema , содержащий вашу схему:
Поддержка моделей
Структурированные выходные данные поддерживаются некоторыми моделями. Список моделей, поддерживающих структурированный вывод, можно найти на странице модели. Поддержка определяется для каждой эндпоинта, а не только для каждой модели: одна и та же модель может обслуживаться несколькими поставщиками, и только некоторые из этих поставщиков могут поддерживать структурированные выходные данные. Поддержка эндпоинтов также может меняться со временем. Чтобы узнать, какие поставщики поддерживают структурированные выходные данные для конкретной модели, установите флажок Параметрstructured_outputs в разделе «Поставщики» на странице модели.
Подробную информацию о реализации каждого провайдера смотрите в его документации, например:
Чтобы ваш запрос направлялся только на эндпоинты, поддерживающие структурированный вывод:
- Проверьте поддерживаемые параметры модели на странице модели
- Установить
require_parameters: trueв настройках вашего провайдера (см. Маршрутизация провайдера) - Включить
response_formatи установилtype: json_schemaв необходимых параметрах
Лучшие практики
- Включайте описания: добавьте четкие описания к свойствам схемы, чтобы направлять модель.
-
Использовать строгий режим: Установите
strict: true, чтобы поставщики с собственным строгим режимом точно применяли вашу схему. Принудительное соблюдение зависит от поставщика: некоторые гарантируют вывод, соответствующий схеме, в то время как другие переводят вашу схему в свой собственный формат структурированного вывода или рассматривают это как сильный намек, поэтому точное соответствие не гарантируется на каждой эндпоинту. Строгие режимы также могут ограничивать возможности использования JSON-схемы — подробности см. в документации поставщика.
Пример реализации
Вот полный пример использования Fetch API:Потоковая передача со структурированным выводом
Структурированные выходные данные также поддерживаются потоковыми ответами. Модель будет передавать действительный частичный JSON, который по завершении формирует действительный ответ, соответствующий вашей схеме. Чтобы включить потоковую передачу со структурированным выводом, просто добавьтеstream: true на ваш запрос:
Обработка ошибок
При использовании структурированных выходных данных вы можете столкнуться со следующими сценариями:- Модель не поддерживает структурированные выходные данные: запрос завершится с ошибкой, указывающей на отсутствие поддержки.
- Неверная схема: модель вернет ошибку, если ваша схема JSON недействительна.
Починка ответов
Для непотоковых запросов сresponse_format и type: "json_schema" вы можете включить плагин Response Healing, чтобы снизить риск невалидного JSON, когда модель возвращает неточное форматирование. Подробности — в документации по Response Healing.