Что такое function calling (вызов инструментов)?
Function calling (он же tool calling) — это механизм, который позволяет языковой модели вызывать внешние функции. Разработчик описывает доступные функции и их параметры, а модель, когда это нужно, возвращает не текст, а структурированный запрос: какую функцию вызвать и с какими аргументами.
Ключевой момент: модель ничего не выполняет сама. Она лишь сообщает намерение в формате JSON — например, «вызови get_order_status с номером 12345». Ваш код проверяет запрос, выполняет функцию и передаёт результат обратно модели, чтобы та сформулировала ответ пользователю.
Именно function calling превращает языковую модель в AI-агента: без него модель может только говорить, с ним — узнавать текущие данные и совершать действия в реальных системах.
Где применяется
Это базовый механизм, на котором держатся все агенты. Через него модель узнаёт погоду, ищет заказ в базе, создаёт задачу в трекере, отправляет письмо. Без него она способна только рассуждать текстом и не может ни получить свежие данные, ни изменить что-либо во внешней системе.
Разработчик описывает каждую функцию схемой: название, назначение, параметры и их типы. Модель по описанию выбирает подходящую и возвращает аргументы, а вызов выполняет ваш код — это важно для безопасности: модель не запускает ничего сама, она лишь формулирует намерение.
Пример
Пользователь спрашивает: «какая погода в Киеве завтра?». Модель не выдумывает прогноз, а возвращает вызов функции get_weather с аргументами city=Kyiv и date=завтра. Код выполняет запрос к сервису погоды и отдаёт результат обратно модели для формулировки ответа.
{
"name": "get_order_status",
"description": "Возвращает статус заказа по его номеру",
"input_schema": {
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Номер заказа, например A-10427"
}
},
"required": ["order_id"]
}
} Function calling и MCP — как связаны
Function calling — это способность модели вызывать инструменты; она есть у моделей сама по себе, а описание функций вы пишете под свой код. MCP — стандарт того, как инструменты объявляются и подключаются, чтобы один и тот же набор работал в разных приложениях. MCP не заменяет function calling, а стандартизирует то, откуда берутся описания функций.
Частые вопросы
Выполняет ли модель функцию сама?
Нет, и это принципиально. Она возвращает структурированный запрос: какую функцию вызвать и с какими аргументами. Выполняет вызов ваш код, и он же решает, разрешено ли это действие. Так контроль над реальными операциями остаётся на стороне приложения.
Как модель понимает, какую функцию выбрать?
По текстовому описанию функции и её параметров, которое вы передаёте вместе с запросом. Поэтому качество описаний важнее любых ухищрений: расплывчатое «работа с данными» приводит к неверному выбору, а точная формулировка назначения — к правильному.
Чем function calling отличается от MCP?
Function calling — механизм на уровне модели: как она формулирует вызов. MCP — протокол на уровне приложения: как инструменты объявляются и подключаются. MCP-сервер в итоге превращается в набор функций, которые модель вызывает этим самым механизмом.
Что делать, если модель передаёт неверные аргументы?
Проверять их в коде перед выполнением, как данные от любого недоверенного источника. При несоответствии возвращать модели понятное сообщение об ошибке — обычно она исправляет вызов со второй попытки. Помогают и строгие схемы с перечислением допустимых значений.