Что такое function calling (вызов инструментов) в LLM
Основы3 минРедакция Innovialabs
Коротко
Function calling — это когда модель не выполняет действие сама, а возвращает JSON с названием функции и аргументами; ваш код вызывает функцию и отдаёт результат модели для ответа.
Коротко: что это такое
Function calling (или tool use) — способ подключить языковую модель к вашим системам. Вы описываете модели набор функций: название, назначение и параметры. Когда пользователь просит что-то, для чего нужны реальные данные, модель отвечает не текстом, а структурированным вызовом: «вызови get_order_status с аргументом order_id = 1042».
Важно: модель ничего не выполняет сама. Она только решает, какую функцию вызвать и с какими аргументами. Выполняет ваш код — и он же контролирует доступы.
Как устроен цикл
- Вы отправляете модели сообщение пользователя и список инструментов с JSON Schema параметров.
- Модель возвращает либо обычный ответ, либо запрос на вызов инструмента.
- Ваш код проверяет аргументы, вызывает настоящую функцию (базу данных, API, CRM).
- Результат отправляется модели обратно как сообщение с ролью «результат инструмента».
- Модель формулирует понятный ответ пользователю — или просит следующий инструмент.
Описание инструмента обычно выглядит так:
{
"name": "get_order_status",
"description": "Возвращает статус заказа по его номеру",
"input_schema": {
"type": "object",
"properties": {
"order_id": { "type": "string", "description": "Номер заказа" }
},
"required": ["order_id"]
}
}
Точный формат полей отличается у разных провайдеров, но идея везде одна: имя, описание, схема параметров.
Примеры из практики
- Статус заказа. Клиент пишет в чат «где мой заказ 1042?». Модель вызывает
get_order_status, получает «передан курьеру» и отвечает по-человечески. - Запись на приём. Модель сначала вызывает
get_free_slots(date), предлагает варианты, а после выбора клиента —book_slot(slot_id, phone). - CRM. Менеджер пишет «создай сделку для ООО Ромашка на консультацию» — модель заполняет аргументы
create_dealиз свободного текста. - Поиск по базе знаний. Инструмент
search_docs(query)— основа многих RAG-ботов.
Что важно на практике
- Хорошие описания. Модель выбирает инструмент по
description. Пишите конкретно: когда вызывать, когда нет. - Валидация аргументов. Модель может ошибиться в формате даты или придумать ID. Проверяйте всё на стороне сервера.
- Права доступа. Пользователь не должен получить чужой заказ только потому, что назвал его номер. Проверяйте владельца по сессии, а не по словам модели.
- Подтверждение опасных действий. Оплата, удаление, отправка писем — только после явного «да» пользователя.
- Понятные ошибки. Если функция упала, верните модели короткий текст ошибки — она сможет переспросить пользователя.
- Мало инструментов. Десятки похожих функций путают модель. Лучше несколько чётких.
Частые ошибки
| Ошибка | Что делать |
|---|---|
| Доверять аргументам модели без проверки | Валидировать схемой и бизнес-правилами |
| Давать инструмент с широкими правами | Отдельные узкие функции с минимальными доступами |
| Не ограничивать число шагов | Ставить лимит итераций в цикле |
| Отдавать модели огромный ответ API | Возвращать только нужные поля |