Проверка реализаций gpt-oss
Модели OpenAI gpt-oss вводят множество новых концепций в экосистему открытых моделей, и их корректная работа может занять некоторое время. Это руководство предназначено для помощи разработчикам, создающим решения для инференса, в проверке своих реализаций, а также для тех, кто хочет самостоятельно протестировать реализацию любого провайдера для уверенности.
Почему реализация моделей gpt-oss отличается?
Новые модели ведут себя больше похоже на некоторые из наших других моделей OpenAI, чем на существующие открытые модели. Несколько примеров:
- Формат ответа harmony. Эти модели обучались на нашем формате OpenAI harmony для структурирования диалога. Хотя обычным разработчикам API обычно не нужно работать с harmony, поставщики инференса, которые предоставляют совместимые с Chat Completions, Responses или другие совместимые API, должны правильно преобразовывать входные данные в формат OpenAI harmony. Если модель не получает подсказки в правильном формате, это может привести к каскадным ошибкам генерации и, как минимум, ухудшению производительности вызова функций.
- Обработка цепочки рассуждений (Chain of Thought, CoT) между вызовами инструментов. Эти модели могут выполнять вызовы инструментов как часть CoT. Следствие этого — модель должна получать CoT при последующих семплингах, пока не будет достигнут окончательный ответ. Это означает, что хотя raw CoT не должен отображаться конечным пользователям, он должен возвращаться API, чтобы разработчики могли передавать его обратно вместе с вызовом инструмента и результатом инструмента. Подробнее об этом можно узнать в отдельном руководстве.
- Отличия в коде инференса. Мы опубликовали наши веса с mixture-of-experts (MoE) исключительно в формате MXFP4. Это относительно новый формат, и, наряду с другими архитектурными решениями, существующий код инференса, написанный для других открытых моделей, потребуется адаптировать для моделей gpt-oss. По этой причине мы опубликовали как базовую (неоптимизированную) реализацию на PyTorch, так и более оптимизированную реализацию на Triton. Кроме того, мы проверили корректность реализации vLLM. Мы надеемся, что это послужит обучающим материалом для других реализаций.
Проектирование API
Responses API
Для лучшей производительности мы рекомендуем провайдерам инференса реализовывать формат API Responses, так как форма API была специально разработана для таких функций, как вывод raw CoT вместе с суммированными CoT (для отображения пользователям) и вызовами инструментов, не добавляя дополнительные свойства в формат. Самое важное для точной работы — возвращать raw CoT как часть output
.
Для этого мы добавили новый массив content
к элементам reasoning
в Responses API. Raw CoT должен быть упакован в элемент типа reasoning_text
, так что общий элемент вывода выглядит следующим образом:
<<<FENCE_0>>>
Эти элементы должны приниматься в последующих шагах и затем вставляться обратно в подсказку с форматом harmony, как описано в руководстве по обработке raw CoT.
Ознакомьтесь с документацией Responses API для полной спецификации.
Chat Completions
Многие провайдеры предлагают API, совместимый с Chat Completions. Хотя мы не дополнили опубликованную документацию API способом получения raw CoT, провайдерам, предлагающим модели gpt-oss через API, совместимый с Chat Completions, всё равно важно возвращать CoT как часть сообщений и предоставить разработчикам возможность передавать его обратно.
На данный момент в сообществе нет общепринятой спецификации, где свойства сообщения будут либо reasoning
, либо reasoning_content
. Для совместимости с клиентами, такими как OpenAI Agents SDK, мы рекомендуем использовать поле reasoning
в качестве основного свойства для raw CoT в Chat Completions.
Быстрая проверка вызова инструментов и форм API
Чтобы проверить работу провайдера, вы можете использовать скрипт на Node.js, опубликованный в нашем репозитории gpt-oss на GitHub, который также можно использовать для запуска других тестов. Для запуска тестов потребуется установленный Node.js или аналогичная среда выполнения.
Эти тесты выполнят серию запросов с вызовами инструментов/функций к API Responses или Chat Completions, которые вы пытаетесь проверить. После этого они определят, был ли вызван правильный инструмент, и соответствуют ли формы API корректности.
Это в основном служит тестированием на работоспособность, но должно дать хорошее представление о том, совместим ли API с нашими SDK и способен ли обрабатывать базовые вызовы функций. Это не гарантирует полной точности реализации инференса (о деталях см. в разделе оценки), а также не гарантирует полной совместимости с OpenAI API. Тем не менее, это полезный индикатор основных проблем реализации.
Для запуска набора тестов выполните следующие команды:
<<<FENCE_1>>>
После этого вы получите результаты по реализации API и информацию о производительности вызовов функций.
Если тесты прошли успешно, вывод должен показать 0 недопустимых запросов и более 90% по pass@k и pass^k. Это означает, что реализация, скорее всего, корректна. Для полной уверенности рекомендуем также просмотреть оценки, как описано ниже.
Если хотите получить подробный обзор отдельных ответов, используйте файл jsonl
, который будет создан в вашей директории.
Также можно включить режим отладки, чтобы увидеть фактические полезные данные запросов через <<<INLINE_8>>, однако это может создавать много шума. Для запуска только одного теста используйте флаг -n 1
, чтобы упростить отладку. Для тестирования событий потоковой передачи можно использовать --streaming
.
Проверка корректности через оценки
Команда Artificial Analysis проводит оценки AIME и GPQA для разных провайдеров. Если вы не уверены в своем провайдере, ознакомьтесь с Artificial Analysis для последних метрик.
На всякий случай стоит запускать оценки самостоятельно. В том же репозитории, что и вышеописанные тесты, есть папка gpt_oss/evals
с тестовыми рамками, которые мы использовали для проверки оценок AIME (16 попыток на задачу), GPQA (8 попыток на задачу) и Healthbench (1 попытка на задачу) для реализации vLLM и некоторых наших эталонных реализаций. Вы можете воспользоваться тем же скриптом для тестирования своих реализаций.
Для тестирования API, совместимого с Responses API, запустите:
<<<FENCE_2>>>
Для тестирования API, совместимого с Chat Completions API, запустите:
<<<FENCE_3>>>
Если у вас получаются похожие на опубликованные нами результаты и ваши тесты вызова функций прошли успешно, скорее всего у вас корректная реализация gpt-oss.