GEO

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 инструментов модели начинают выбирать не тот. Группируйте связанные инструменты или маршрутизируйте через меньшую выборку.

Расплывчатые описания: "Утилита" не говорит модели, когда её вызывать. Будьте конкретны.

Отсутствие обработки ошибок: Сбои инструментов ломают цикл. Всегда возвращайте структурированную ошибку, на которую модель может отреагировать.

Игнорирование задержки: Каждый вызов инструмента добавляет круговой обход. Распараллеливайте независимые вызовы; объединяйте в пакеты, где возможно.

Пропуск защитных ограждений: Инструменты, совершающие действия (отправить письмо, перевести деньги), требуют участия человека или строгого ограничения области.

Источники: