Что такое function calling: как нейросеть перестаёт болтать и начинает действовать
Спрашиваете у обычной нейросети «какая погода в Москве?» — и получаете честное «я не знаю, у меня нет доступа к реальному времени». Спрашиваете то же самое у Claude или ChatGPT с включёнными инструментами — и получаете актуальную погоду. Разница называется function calling (вызов функций), и это она превращает болтающего чат-бота в агента, который действует.
В чём проблема, которую это решает
Языковая модель по своей природе умеет только одно — генерировать текст. Она не может посмотреть погоду, отправить письмо, сходить в базу данных или посчитать что-то точно. Всё, что она «знает», — это данные на момент обучения, устаревшие на месяцы.
Function calling даёт модели способ попросить внешний код сделать работу за неё. Модель не выполняет функцию сама — она говорит программе: «вызови вот эту функцию с вот такими параметрами», получает результат и вставляет его в ответ.
Как это работает по шагам
Представим бота, у которого есть функция «узнать погоду». Диалог устроен так:
- Вы даёте модели список доступных функций. Не код, а описание: «есть функция
get_weather, принимает город, возвращает температуру». Это делается один раз при настройке. - Пользователь спрашивает «какая погода в Москве?».
- Модель не отвечает текстом. Вместо этого она возвращает специальный ответ: «вызови
get_weatherс параметромcity: "Москва"». - Ваша программа выполняет функцию — реально ходит в погодный сервис — и отдаёт результат модели.
- Модель формулирует человеческий ответ: «В Москве сейчас +18 и облачно».
Ключевой момент: модель сама решает, когда функция нужна. На «привет» она ответит текстом, на «погоду» — попросит вызвать функцию. Это не жёсткое правило, а понимание из контекста.
Чем это отличается от обычного ответа
| Обычный ответ | Function calling | |
|---|---|---|
| Что возвращает | Текст для человека | Структурированный вызов: имя функции + параметры |
| Кто выполняет действие | Никто, это просто слова | Ваш код |
| Актуальность | На момент обучения | Реальное время |
| Точность расчётов | Может ошибиться | Считает настоящий код |
Последняя строка важна: нейросети плохо считают в уме. Дайте модели функцию-калькулятор — и «сколько будет 4471 × 928» перестанет быть лотереей.
Structured output — близкий родственник
Рядом живёт похожая механика — структурированный вывод (structured output, JSON mode). Разница тонкая:
- Function calling — модель просит вызвать функцию.
- Structured output — модель обязана вернуть ответ в строгом формате JSON, который ваша программа гарантированно разберёт.
Оба нужны для одного: чтобы вывод модели можно было скормить коду, а не парсить свободный текст регулярками. Свежие открытые модели вроде Gemma 4 ставят это в список главных фич не просто так — без надёжного JSON агент не построишь.
Зачем это знать, если вы не программист
Даже если вы не пишете код, function calling объясняет половину того, что умеют современные ИИ:
- ИИ-агенты, которые бронируют, заказывают, заполняют формы, — это цепочки вызовов функций. Подробнее — в гайде про computer use.
- MCP (протокол, через который Claude подключается к вашим приложениям) под капотом — это стандартизированный function calling. Разбор — здесь.
- Плагины и «действия» в ChatGPT — то же самое.
- Поиск в вебе внутри чата — модель вызывает функцию поиска, читает результат, отвечает.
Когда вы видите, что нейросеть «сходила в интернет» или «выполнила задачу», — почти всегда под этим function calling.
Ограничения, о которых честно
Три вещи, которые стоит держать в голове:
- Модель может вызвать функцию не вовремя или с кривыми параметрами. Она угадывает намерение, а не исполняет алгоритм. Поэтому критичные действия (отправка денег, удаление) стоит подтверждать вручную.
- Она может выдумать функцию, которой нет. Если описания составлены неаккуратно, модель придумает вызов несуществующего инструмента. Лечится чёткими описаниями.
- Больше функций — больше путаницы. Дайте модели пятьдесят инструментов — и она начнёт выбирать не те. Хороший агент имеет узкий, понятный набор.
Что запомнить
- Function calling = способ модели попросить код сделать работу, которую сама она не может.
- Модель не выполняет функцию, а лишь формирует вызов; выполняет ваша программа.
- Модель сама решает, когда функция нужна, по контексту.
- Это фундамент агентов, MCP, плагинов и поиска в вебе.
- Структурированный вывод (JSON) — родственник: гарантирует формат, пригодный для кода.
- Критичные действия подтверждайте вручную — модель угадывает, а не исполняет строго.
Как из этого собираются полноценные агенты — в гайде про ИИ-агентов на практике. Что такое MCP, через который всё это подключается, — здесь.