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