OpenAI
Эта страница была переведена машинным переводом. Открыть оригинальную статью на английском.

Вызов функций в API OpenAI

Что такое вызов функций и как он работает в API OpenAI?

Обновлено: 27 days ago

По состоянию на 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 (см. ниже).

Была ли эта статья полезной?