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