Вызов функций (function calling)
Без вызова функций LLM ограничена своим собственным «знанием» и текущим контекстом. С вызовом функций она получает доступ к актуальным данным, реальным действиям в системах и точным алгоритмам.
Типичный сценарий
- Разработчик описывает функции и их параметры в формате схемы (например, JSON Schema).
- LLM получает запрос пользователя и описания доступных функций.
- Модель решает, нужно ли вызвать функцию, и возвращает её имя и аргументы.
- Программа выполняет функцию и подаёт результат модели в виде нового сообщения.
- Модель формирует окончательный ответ пользователю.
Где особенно полезно
- Получение свежих данных (курсы, погода, остатки на складе, статусы заказов).
- Точные вычисления и работа с базами данных.
- Создание и обновление записей в CRM, тикетов в поддержке, событий в календаре.
- Подключение к корпоративному поиску и базе знаний.
Когда применять и когда нет
Применять
- Нужно подключить LLM к актуальным данным или внешним системам
- Хочется обойти ограничения модели в точных вычислениях
- Строите агента, который должен выполнять действия, а не только отвечать
Не применять
- Простой ассистент, которому достаточно текстовых ответов
- Когда вызов внешних систем требует сложной авторизации, к которой ещё не готова инфраструктура
Примеры применения
В ассистент по работе с CRM прокидывают несколько функций: «найти клиента», «получить сделки клиента», «создать задачу для менеджера». Пользователь спрашивает: «открой задачу позвонить Иванову завтра в 11». Модель сама вызывает «найти клиента (Иванов)», получает его карточку, затем «создать задачу (клиент=…, время=…, текст=…)» — и подтверждает в чате, что задача создана.
Часто задаваемые вопросы
В обычном парсинге разработчик пытается распарсить произвольный текст, который вернула модель. С function calling модель сразу возвращает структурированный JSON с именем функции и аргументами по описанной схеме. Это резко снижает количество ошибок и упрощает интеграции.
Технически — десятки, но на практике лучше держать список коротким и хорошо описанным. Чем больше функций, тем больше путаницы у модели в выборе. Если список разрастается, его обычно делят на «инструменты разных подсистем» и подключают только нужный набор в зависимости от роли агента.