Prog Academy
RU UA
AI-агенты и автоматизация

Что такое 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-сервер в итоге превращается в набор функций, которые модель вызывает этим самым механизмом.

Что делать, если модель передаёт неверные аргументы?

Проверять их в коде перед выполнением, как данные от любого недоверенного источника. При несоответствии возвращать модели понятное сообщение об ошибке — обычно она исправляет вызов со второй попытки. Помогают и строгие схемы с перечислением допустимых значений.

Связанные термины