Заявка
AI и LLM

Function Calling

Tool Use · Вызов функций языковой моделью

Function Calling (вызов функций) — это способность языковой модели по запросу пользователя формировать вызов внешней функции или API с нужными параметрами. Модель не выполняет код сама, а возвращает структурированный запрос, который запускает приложение.

Function Calling — это механизм, при котором языковая модель по формулировке пользователя собирает структурированный вызов внешней функции с заполненными аргументами. Что это значит на практике: модель не запускает код, а отдаёт приложению имя функции и набор параметров в формате JSON, а выполнение остаётся на стороне сервиса.

Работает вызов функций там, где нужен доступ к данным вне обучающей выборки: погода, курс валют, запись в CRM, поиск по базе. Разработчик заранее описывает доступные инструменты через схему с полями name, description и parameters, а модель выбирает подходящий и подставляет значения из запроса.

§ 01Зачем нужен

Языковая модель обучена на срезе данных и не знает текущих значений: остатка на складе, статуса заказа, времени в другом городе. Function Calling закрывает этот разрыв. Модель распознаёт, что для ответа нужен внешний источник, и формирует запрос к нему вместо того, чтобы выдумывать факт. Так строятся агенты и ассистенты, которые бронируют встречи, дергают API оплаты, читают документы. Без этого подхода LLM ограничена генерацией текста и склонна к галлюцинациям в задачах, требующих актуальных или приватных данных.

§ 02Как устроен

Цикл состоит из четырёх шагов. Сначала разработчик передаёт модели список инструментов в виде JSON Schema с типами аргументов. Затем модель по запросу возвращает объект с именем функции и значениями параметров. Приложение исполняет функцию на своей стороне и получает результат. Финальный шаг — результат возвращается модели, и она формулирует ответ на естественном языке. Ключевое: обращение модели к инструментам ограничено выбором и заполнением параметров, сам код запускает бэкенд.

Реальный кейс

обработка заявок −65% — B2B SaaS для логистики с MRR $180k подключил Function Calling к GPT-4o: модель извлекала параметры и вызывала API создания заявки в CRM. Время обработки упало с 4 мин до 1.4 мин за 8 недель. Замер через логи бэкенда и Amplitude.

До и после

конверсия чата +31% — Онлайн-школа английского на edtech-платформе внедрила вызов функций для проверки слотов и записи на пробный урок прямо в диалоге. Конверсия из чата в запись выросла с 18% до 23.6% за 3 месяца. Динамика по GA4 и внутренней аналитике.

§ 03Как настраивается

Инструмент описывается схемой, где обязательны name, текстовое description и блок parameters с перечнем полей и их типами. Качество description напрямую влияет на то, выберет ли модель нужный тул. В API OpenAI список передаётся через параметр tools, у Anthropic — через тот же ключ с полем input_schema. Режим выбора регулируется настройкой tool_choice: авто, принудительный вызов конкретной функции или запрет. Параметры стоит помечать как обязательные через required, иначе модель может опустить критичное поле.

§ 04Подводные камни

Модель иногда придумывает несуществующую функцию или подставляет аргумент неверного типа — проверяйте вывод валидатором до исполнения. Расплывчатое description ведёт к тому, что при похожих тулах выбирается не тот. Чем длиннее список инструментов, тем выше шанс ошибки выбора, поэтому набор держат компактным. Отдельная зона риска — безопасность: структурированный запрос к функции способен запустить действие с побочным эффектом, например списание средств, так что критичные операции закрывают подтверждением на стороне приложения.

Частые ошибки
01
Ожидание, что модель сама исполнит функцию. Разработчик думает, что LLM запускает код, и не строит слой исполнения на бэкенде. Модель лишь возвращает JSON-запрос — без обработчика функция не вызывается, фича молча не работает и падает доверие к продукту. Как правильно: Стройте отдельный executor на стороне приложения. Модель формирует вызов — код парсит его, запускает функцию и возвращает результат обратно в диалог.
02
Передача схемы функций без строгой валидации аргументов. Аргументы от модели прокидывают в API как есть, доверяя структуре. Модель периодически галлюцинирует лишние поля или неверные типы — запрос ломает бэкенд или тратит бюджет на ошибочные вызовы внешних платных API. Как правильно: Валидируйте аргументы по JSON Schema до исполнения. Отклоняйте вызов при несоответствии типов и возвращайте модели описание ошибки для повторной попытки.
03
Оценка качества только по успешным ответам. Метрику считают как долю красивых финальных реплик, игнорируя точность выбора функции. В проектах OpenAI сообщала о разбросе function-selection accuracy на 20–30% между моделями — без замера этой доли регрессии остаются невидимыми. Как правильно: Замеряйте отдельно accuracy выбора функции и корректность аргументов на фиксированном наборе кейсов. Сравнивайте показатели при каждой смене модели или промпта.
Часто спрашивают

Function Calling — частые вопросы про вызов функций

Function Calling простыми словами — что это и зачем?

+

Function Calling — это способность языковой модели по запросу пользователя сформировать вызов внешней функции с нужными параметрами. Модель сама код не запускает, а возвращает структурированный запрос в формате JSON, который выполняет уже ваше приложение. Так LLM получает погоду, цены или данные из базы, а не выдумывает их.

Схема из трёх шагов: вы описываете доступные тулы (имя, параметры, типы), модель по тексту решает, какой инструмент нужен, и отдаёт аргументы структурой. Приложение запускает реальный код и передаёт результат обратно — модель формулирует финальный ответ. У OpenAI это появилось в июне 2023 года для gpt-3.5 и gpt-4.

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

Начните с описания схемы функции: задайте имя, список параметров и их типы в JSON Schema. Затем передайте этот массив в поле tools запроса к API (OpenAI, Anthropic, Gemini поддерживают формат). По опыту GUSAROV, начинают с 1–3 простых тулов вроде поиска или калькулятора, а потом расширяют набор.

Нет, любой структурированный запрос к функции нужно валидировать перед запуском. Модель может передать неверный тип, лишний параметр или запросить действие, которого делать нельзя. Три обязательных шага: проверка схемы, ограничение прав тула и логирование. Особенно это критично для операций записи, платежей и удаления данных.

Не нашли ответ?

Спросите Андрея Гусарова — отвечаю в течение 1-2 рабочих дней.

Нажимая, вы соглашаетесь с обработкой данных.