Обзор шаблона Tool Use

До этого мы рассмотрели агентные шаблоны, в которых основное внимание уделялось организации взаимодействия между языковыми моделями и управлению потоками информации во внутренних рабочих процессах агента (Chaining, Routing, Parallelization, Reflection). Однако для того чтобы агенты стали по-настоящему полезными и могли взаимодействовать с реальным миром или внешними системами, им необходима возможность использовать инструменты (Tools).

Шаблон Tool Use, часто реализуемый через механизм Function Calling, позволяет агенту взаимодействовать с внешними API, базами данных, сервисами или даже исполнять код. Это позволяет LLM, находящейся в ядре агента, решать когда и как использовать определённый внешний инструмент на основе запроса пользователя или текущего состояния задачи.

Процесс обычно включает:

  1. Определение инструмента: внешние функции или возможности описываются для LLM. Описание включает назначение функции, её имя, параметры (с типами и пояснениями).
  2. Решение LLM: модель получает запрос пользователя и список доступных инструментов. На основе понимания запроса и возможностей она решает, нужен ли вызов одного или нескольких инструментов.
  3. Генерация вызова функции: если инструмент нужен, модель формирует структурированный вывод (часто JSON-объект), указывающий имя инструмента и аргументы, извлечённые из запроса пользователя.
  4. Выполнение инструмента: оркестрационный слой агента перехватывает этот вывод, находит указанный инструмент и выполняет функцию с переданными аргументами.
  5. Результат: выход или результат выполнения инструмента возвращается агенту.
  6. Обработка LLM (часто): модель получает результат как контекст и либо формирует окончательный ответ пользователю, либо принимает решение о следующем шаге (вызвать другой инструмент, выполнить рефлексию или дать финальный ответ).

Этот шаблон фундаментален, потому что он снимает ограничение LLM, связанное с обучающими данными, и позволяет:

Хотя термин function calling точно описывает вызов конкретных функций, полезнее думать шире — как о tool calling. Инструментом может быть не только кодовая функция, но и:

Такой подход позволяет рассматривать агента как оркестратора цифровых ресурсов и интеллектуальных сущностей. Например, главный агент может поручить сложный анализ данных отдельному «аналитику-агенту» или обратиться к внешней базе знаний через API.