По состоянию на 11 марта 2025 года мы выпустили базовые компоненты нашей новой платформы Agents. Подробнее см. в документации API по Responses API, инструментам, включая Web Search, File Search и Computer Use, а также по Agents SDK с Tracing.
Вызов функций позволяет подключать модели OpenAI к внешним инструментам и системам. Это полезно для многих задач, например для расширения возможностей AI-ассистентов или создания глубоких интеграций между вашими приложениями и LLM.
Подробнее см. в нашем руководстве для разработчиков по вызову функций.
В июне 2024 года мы запустили структурированные ответы. Когда вы включаете их, задав strict: true в определении функции, структурированные ответы гарантируют, что аргументы, сгенерированные моделью для вызова функции, точно соответствуют JSON Schema, указанной вами в определении функции.
В октябре 2024 года мы запустили функцию «Generate Anything», которая позволяет разработчикам описать функцию, вставить ее напрямую или вставить ваш код и сгенерировать допустимую схему функции. Подробнее о «Generate Anything» см. в этой статье справочного центра
Как использовать вызов функций?
Вызов функций полезен для большого числа сценариев, таких как:
Предоставление ассистентам возможности получать данные:
Предоставление ассистентам возможности выполнять действия:
Предоставление ассистентам возможности выполнять вычисления:
Создание многофункциональных рабочих процессов:
конвейер извлечения данных, который получает необработанный текст, затем преобразует его в структурированные данные и сохраняет в базе данных.
Вызов функций поддерживается в Responses API, который объединяет возможности, ранее разделенные между API завершения чата и Assistants API.
Как использовать режим JSON?
Когда режим JSON включен, гарантируется, что вывод модели будет допустимым JSON, за исключением некоторых пограничных случаев, которые следует обнаруживать и обрабатывать соответствующим образом.
Чтобы запросить режим JSON с помощью API завершения чата, задайте для response_format значение { "type": "json_object" } в поддерживаемых моделях. В Responses API задайте для text.format значение { "type": "json_object" }, например text: { "format": { "type": "json_object" } }, где это применимо. В любом из API режим JSON работает только при соблюдении предварительных условий для модели, сообщения и инструмента (например, модель поддерживает json_object, беседа содержит инструкции по созданию JSON, а все ограничения инструментов совместимы). Как минимум одно сообщение запроса или входное сообщение в эффективном входном контексте должно содержать json в форме без учета регистра, например JSON, json или Json; иначе API вернет ошибку. В Responses одного только поля инструкций верхнего уровня недостаточно для прохождения этой проверки. Когда вызов функций используется в совместимых моделях или путях, ограничения JSON автоматически применяются к аргументам вызова функции; несовместимые модели или сочетания инструментов и формата ответа могут быть отклонены либо могут не использовать сэмплирование с ограничениями JSON.
Важные примечания:
При использовании режима JSON вы всегда должны инструктировать модель выводить JSON через какое-либо сообщение в беседе, например через системное сообщение. Если не включить явную инструкцию генерировать JSON, модель может создавать бесконечный поток пробелов, а запрос может выполняться непрерывно, пока не достигнет лимита токенов. Чтобы вы не забыли об этом, режим JSON отклоняет запросы, если соответствующие входные сообщения или инструкции не содержат слово
jsonв какой-либо форме, без учета регистра.Режим JSON не гарантирует, что вывод соответствует какой-либо конкретной схеме; он гарантирует только, что вывод является допустимым и разбирается без ошибок. Чтобы обеспечить соответствие вашей схеме, следует использовать структурированные ответы, а если это невозможно — библиотеку валидации и, при необходимости, повторные попытки.
Ваше приложение должно обнаруживать и обрабатывать пограничные случаи, из-за которых вывод модели может не быть полным объектом JSON (см. ниже).
