Перейти к содержанию
Innovialabs

Что такое function calling (вызов инструментов) в LLM

Основы3 мин

Коротко

Function calling — это когда модель не выполняет действие сама, а возвращает JSON с названием функции и аргументами; ваш код вызывает функцию и отдаёт результат модели для ответа.

Коротко: что это такое

Function calling (или tool use) — способ подключить языковую модель к вашим системам. Вы описываете модели набор функций: название, назначение и параметры. Когда пользователь просит что-то, для чего нужны реальные данные, модель отвечает не текстом, а структурированным вызовом: «вызови get_order_status с аргументом order_id = 1042».

Важно: модель ничего не выполняет сама. Она только решает, какую функцию вызвать и с какими аргументами. Выполняет ваш код — и он же контролирует доступы.

Как устроен цикл

  1. Вы отправляете модели сообщение пользователя и список инструментов с JSON Schema параметров.
  2. Модель возвращает либо обычный ответ, либо запрос на вызов инструмента.
  3. Ваш код проверяет аргументы, вызывает настоящую функцию (базу данных, API, CRM).
  4. Результат отправляется модели обратно как сообщение с ролью «результат инструмента».
  5. Модель формулирует понятный ответ пользователю — или просит следующий инструмент.

Описание инструмента обычно выглядит так:

{
  "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Возвращать только нужные поля

Частые вопросы

Нет. Function calling — механизм, а агент — система, которая в цикле сама решает, какие инструменты вызывать для достижения цели. Агенты строятся поверх function calling.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.