Tool Use
Tool use - это способность, позволяющая LLM вызывать внешние функции, API, базы данных или сервисы прямо во время ответа: получать свежие данные, выполнять расчёты или совершать действия в мире. Вместо того чтобы быть запертой в своих обучающих данных, модель с использованием инструментов может выходить за свои пределы, когда этого требует задача.
Tool use - это способность, позволяющая LLM вызывать внешние функции, API, базы данных или сервисы прямо во время ответа: получать свежие данные, выполнять расчёты или совершать действия в мире. Вместо того чтобы быть запертой в своих обучающих данных, модель с использованием инструментов может выходить за свои пределы, когда этого требует задача.
Почему это важно
У "голой" LLM три жёстких ограничения: замороженный порог знаний, отсутствие доступа к приватным данным и неспособность действовать. Tool use снимает все три. С инструментами одна и та же модель может ответить на "каков текущий MRR?", отправить письмо, забронировать рейс, сделать запрос к базе данных или выполнить код. Tool use - фундамент каждого современного ИИ-агента, каждого "копилота" и почти любого продакшен-приложения на LLM выше уровня чат-бота.
Как это работает
1. Определения инструментов: Вызывающая сторона предоставляет модели список доступных инструментов, у каждого из которых есть имя, описание и схема параметров.
2. Модель решает вызвать: Когда запрос пользователя требует инструмента, модель вместо обычного текста выдаёт структурированный вызов инструмента (JSON, соответствующий схеме).
3. Среда выполнения выполняет инструмент: Ваш код получает вызов инструмента, запускает фактическую функцию и возвращает результат.
4. Результат возвращается модели: Модель видит результат как часть своего контекста и продолжает ответ - либо отвечая пользователю, либо вызывая другой инструмент.
5. Цикл до завершения: Многоинструментальные задачи сцепляют вызовы инструментов, пока модель не выдаст финальный текстовый ответ.
Tool Use против Function Calling
Эти два термина почти взаимозаменяемы, с тонким сдвигом:
- Function calling: Исходная формулировка - модель выдаёт JSON-аргументы для одной именованной функции.
- Tool use: Более широкая формулировка - инструментами могут быть функции, API, действия на компьютере или серверы MCP, и модель оркеструет множество из них последовательно.
Anthropic использует "tool use", OpenAI исторически использовала "function calling", а теперь говорит "tools". Оба описывают одну и ту же базовую способность.
Виды инструментов
Извлечение: Получить документы, поискать в вебе, сделать запрос к базе данных, найти запись.
Вычисление: Запустить Python, выполнить математику, перевести единицы, разобрать файл.
Действие: Отправить письмо, создать событие в календаре, опубликовать в Slack, обновить CRM.
Выполнение кода: Изолированный интерпретатор, в котором модель может писать и запускать код.
Использование компьютера: Кликать, печатать и читать экран - самый общий инструмент.
Модель-модели: Делегировать другой специализированной модели (например, генерации изображений).
Проектирование хороших схем инструментов
Ясные, короткие описания: По описанию модель решает, когда вызывать. Делайте его однозначным.
Узкие типы параметров: Предпочитайте перечисления и ограниченные строки свободному тексту - это сокращает галлюцинированные аргументы.
Идемпотентность, где возможно: Если модель может повторить попытку, второй вызов не должен повторно отправить письмо.
Возвращайте структурированные результаты: Отдавайте модели JSON, а не свободный текст - она лучше рассуждает о структуре.
Ответы об ошибках подсказывают модели, что делать: "Ошибка: город не найден, попробуйте другое написание" полезнее, чем "500".
Частые ошибки
Слишком много инструментов: После примерно 20-30 инструментов модели начинают выбирать не тот. Группируйте связанные инструменты или маршрутизируйте через меньшую выборку.
Расплывчатые описания: "Утилита" не говорит модели, когда её вызывать. Будьте конкретны.
Отсутствие обработки ошибок: Сбои инструментов ломают цикл. Всегда возвращайте структурированную ошибку, на которую модель может отреагировать.
Игнорирование задержки: Каждый вызов инструмента добавляет круговой обход. Распараллеливайте независимые вызовы; объединяйте в пакеты, где возможно.
Пропуск защитных ограждений: Инструменты, совершающие действия (отправить письмо, перевести деньги), требуют участия человека или строгого ограничения области.
Источники: