Внедрение структурированных данных в OpenAI API для разработчиков

OpenAI API теперь поддерживает структурированные выходные данные, соответствующие JSON схемам разработчиков. Новая функциональность обеспечивает безопасность и удобство использования, позволяя создавать мощные модели и обрабатывать данные более эффективно. Обновлены также Python и Node SDK для удобной работы с новыми возможностями API
Новости 2024 08 12

Внедрение структурированных данных в OpenAI API для разработчиков

Внедрение структурированных данных в OpenAI API для разработчиков значительно улучшит надежность результатов моделей и соответствие предоставленным JSON-схемам. Новая функция Structured Outputs позволит точно соответствовать требованиям разработчиков при генерации структурированных данных из неструктурированных данных. Развитие AI-систем включает создание мощных ассистентов, способных извлекать и выполнять структурированные данные, а также строить многоэтапные агентные рабочие процессы. Структурированные выходные данные решают существующие проблемы, согласовывая выходные данные модели со схемами, определенными разработчиком, что в конечном итоге повышает эффективность и результативность приложений ИИ.

Генерация структурированных данных

Генерация структурированных данных из неструктурированных входных данных с помощью OpenAI API представляет собой ключевую задачу для разработчиков, работающих над созданием современных приложений. Этот процесс позволяет строить мощных ассистентов, способных не только получать и обрабатывать данные, но и предоставлять точные и структурированные ответы на запросы пользователей. Использование структурированных выводов в API обеспечивает надежное соответствие ответов модели JSON-схемам, предоставленным разработчиками. Это значительно упрощает процесс разработки приложений, так как модели теперь будут точно соответствовать ожидаемым форматам данных, что помогает избежать длительного процесса настройки и повторных запросов для корректной обработки выходных данных.

Преимущества структурированных выходов включают:

  • Надежная безопасность типов: нет необходимости проверять или повторять неправильно отформатированные ответы
  • Явные отказы: отказы модели, основанные на безопасности, теперь можно обнаружить программно
  • Более простые подсказки: нет необходимости в строго сформулированных подсказках для достижения согласованного форматирования

Помимо поддержки JSON Schema в REST API, OpenAI SDK для Python и JavaScript также упрощают определение схем объектов с использованием Pydantic и Zod соответственно. Ниже вы можете увидеть, как извлекать информацию из неструктурированного текста, которая соответствует схеме, определенной в коде.

Как использовать структурированные выводы

Мы вводим структурированные выводы в двух формах в API: через вызов функций и новую опцию для параметра response_format. Чтобы воспользоваться структурированными выводами через вызов функций, необходимо установить strict: true в определении вашей функции. Эта функциональность работает со всеми моделями, поддерживающими инструменты, включая все модели начиная с gpt-4-0613 и gpt-3.5-turbo-0613 и более поздние. Когда структурированные выводы включены, выводы модели будут соответствовать объявленному определению инструмента.

Также предлагается опция для параметра response_format: разработчики могут предоставить JSON Schema через параметр json_schema. Это полезно, когда модель не вызывает инструмент, а вместо этого отвечает пользователю структурированным образом. Эта функция работает с нашими новейшими моделями GPT-4o: gpt-4o-2024-08-06, выпущенной сегодня, и gpt-4o-mini-2024-07-18. Когдав response_format предоставляется с параметром strict: true, выводы модели будут соответствовать предоставленной схеме.

Когда использовать Structured Outputs через вызов функции, а когда через response_format

Структурированные выходные данные (Structured Outputs) доступны в двух формах в API OpenAI:

  • При использовании вызова функции (function calling)
  • При использовании формата ответа json_schema

Function calling

Вызов функции полезен, когда вы создаете приложение, которое объединяет модели и функциональность вашего приложения.Например, вы можете предоставить модели доступ к функциям, которые запрашивают базу данных, чтобы создать помощника на основе ИИ, который может помочь пользователям с заказами, или к функциям, которые могут взаимодействовать с пользовательским интерфейсом.

Например, вы можете предоставить модели доступ к функциям, которые запрашивают базу данных, чтобы создать помощника ИИ, который может помочь пользователям с их заказами, или функции, которые могут взаимодействовать с пользовательским интерфейсом.

Параметр response_format

Структурированные выходные данные через response_format больше подходят, когда вы хотите указать структурированную схему для использования, когда модель отвечает пользователю, а не когда модель вызывает инструмент.

Например, если вы создаете приложение для обучения математике, вы можете захотеть, чтобы помощник отвечал вашему пользователю, используя определенную схему JSON, чтобы вы могли сгенерировать пользовательский интерфейс, который отображает различные части выходных данных модели различными способами.

Проще говоря

  • Если вы подключаете модель к инструментам, функциям, данным и т. д. в своей системе, то вам следует использовать вызов функций
  • Если вы хотите структурировать выходные данные модели, когда она отвечает пользователю, то вам следует использовать структурированный response_format

Более подробная докуемнтация доступна по ссылке.

Совершенствование новой модели

Новая модель gpt-4o-2024-08-06 с функцией структурированных выводов открывает новые двери для разработчиков, обеспечивая им идеальное соответствие JSON-схемам при работе с данными. Этот переход позволяет значительно повысить надежность и качество результатов, сравнимых с предыдущими моделями, такими как gpt-4-0613. Благодаря структурированным выводам, разработчики теперь могут создавать более надежные приложения, опираясь на точное соответствие выходных данных определенным схемам, что упрощает взаимодействие модели с их системами. Структурированные выводы открывают новые перспективы для использования искусственного интеллекта при обработке структурированных данных, делая процесс разработки и интеграции еще более эффективным и удобным.

Безопасность структурированных выводов

Безопасность является ключевым аспектом при разработке новой функциональности структурированных выводов в OpenAI. Эта новая функциональность строго соблюдает существующие правила безопасности и позволяет модели отказываться от запросов, которые могут быть опасными. Для упрощения процесса разработки было введено новое строковое значение, которое позволяет разработчикам определить, когда модель генерирует отказ вместо вывода, соответствующего заданной схеме JSON. При этом, если ответ от модели не содержит отказа и процесс генерации не был преждевременно прерван, то ответ модели будет точно соответствовать JSON схеме, предоставленной разработчиком.

Поддержка в SDK

С помощью обновленных Python и Node SDK от OpenAI разработчики теперь могут легко использовать возможности структурированных выводов в своих приложениях. Предоставление схемы для инструментов или в качестве формата ответа стало простым и интуитивно понятным процессом благодаря встроенной поддержке SDK. Отличительной чертой обновленных SDK является автоматическое преобразование данных в формат JSON-схемы, их десериализация в типизированные структуры данных, а также анализ возможных отказов, если таковые возникают. Это значительно упрощает процесс работы с моделями и обеспечивает более надежное взаимодействие с ними, открывая новые возможности для разработки надежных и высокопроизводительных приложений на базе искусственного интеллекта.

Дополнительные примеры использования

Developers often leverage OpenAI models to generate structured data for various use cases. Some additional examples include dynamically generating user interfaces based on the user's intent, separating a final answer from supporting reasoning or additional commentary, and extracting structured data from unstructured sources like meeting notes. These applications of Structured Outputs aim to enhance the functionality and efficiency of AI-powered systems, empowering developers to create more diverse and sophisticated applications that meet specific user needs.

Под капотом

Мы использовали двухфазный подход для улучшения надежности выводов моделей, соответствующих JSON-схемам. Сначала мы обучили нашу новейшую модель gpt-4o-2024-08-06 понимать сложные схемы и создавать соответствующие им выводы. Далее, мы применили детерминированный, инженерный подход к ограничению выводов моделей для достижения 100% надежности. Этот метод, известный как constrained sampling или constrained decoding, обеспечивает контроль над выбором токенов моделью и гарантирует, что сгенерированные выводы соответствуют предоставленным JSON-схемам. Данный подход позволяет минимизировать ошибки и создать более надежное взаимодействие между моделью и разработчиками, обеспечивая точное соответствие форматам данных, необходимым для успешной интеграции моделей в приложения.

Поиск