Function calling позволяет модели предложить вызов вашей функции. Модель не выполняет внешний код сама: приложение проверяет аргументы, выполняет действие и возвращает результат.
Наиболее переносимый tool#
Используйте function tool с:
коротким стабильным
name;ясным
description;JSON Schema для аргументов;
обязательными полями в
required;additionalProperties: false, если лишние поля недопустимы.
Разные структуры#
В Chat Completions функция вложена в объект function.
В Responses function tool имеет другую форму, а вызов и результат являются отдельными Items, связанными через call_id.
В Messages используются tool_use и tool_result content blocks.
tool_choice#
Поддержка auto, none, required и выбора конкретной функции зависит от модели и диалекта. Параллельные вызовы тоже поддерживаются не везде.
Не требуйте конкретный режим без проверки страницы модели.
Правила безопасности#
Валидируйте JSON аргументов по своей схеме.
Проверяйте права пользователя вне модели.
Требуйте подтверждение для платных и необратимых действий.
Используйте idempotency key для повторяемых внешних операций.
Ограничивайте число шагов и время агентного цикла.
Не выполняйте частично полученные streaming-аргументы.
Логируйте вызов, результат и отказ без секретов.
Встроенные инструменты#
Web search, file search, code interpreter, computer use, MCP и image generation не являются обычными function tools. Они требуют нативной поддержки Responses, модели и тарификации.
Если приложение должно переноситься между семействами, держите собственные функции отдельно от provider-hosted tools.