Добавление инструментов

На предыдущей странице показано, как обертывание LLM в агента дает постоянное удостоверение, инструкции и управление сеансами. Но даже с этим агент может создавать только содержимое (текст, изображения и т. д.) — он не может искать текущую цену акций, отправлять сообщение электронной почты или запрашивать базу данных. Она отвечает, исходя из знаний, заложенных в процессе обучения, и из контекста, который вы задаёте в запросе.

Средства преодолеют этот разрыв. Они дают агенту возможность действовать, выходить за пределы своих обучающих данных и взаимодействовать с реальным миром. Добавление инструментов является одним из наиболее важных шагов, которые можно предпринять, чтобы сделать агент действительно полезным.

Когда это следует использовать

Добавьте инструменты к агенту, когда:

  • Агенту нужен доступ к данным в режиме реального времени или внешним данным — динамические цены, погода, записи базы данных, результаты поиска, которые не доступны в обучающих данных модели.
  • Агенту необходимо предпринять действия — отправка сообщений электронной почты, создание билетов, вызов API, написание файлов, а не просто создание содержимого.

Рекомендации

Consideration Сведения
Задержка Каждый вызов инструмента добавляет круговую поездку — модель создает запрос на инструмент, код выполняет его, а результат отправляется обратно до продолжения модели. Мультитул превращает это в сложную систему.
Накладные расходы токена Определения инструментов (имена, описания, схемы параметров) включаются в каждый запрос. Больше инструментов означает меньше токенов, доступных для истории разговоров и ответа модели.
Сложность отладки Если что-то пошло не так, причина может заключаться в выборе инструмента моделью, аргументах, которые она выбрала, или выполнении инструмента. Вы отлаживаете логику и код вместе.
Надёжность Модель может неправильно вызывать средства, передавать плохие аргументы или вызывать инструмент, если он не должен. Хорошие описания и одобрение инструмента смягчают это, но не устраняют его.

Почему агенты нуждаются в средствах

Как описано в основах LLM, LLM обучен создавать маркеры, включая специальный структурированный формат, представляющий вызов инструмента. Но сама модель никогда не выполняет ничего. Это приложение (или Agent Framework), которое анализирует выходные данные модели, запускает фактическую функцию и передает результат обратно.

Это означает, что средства не изменяют модель — они изменяют то, что может сделать агент. Без инструментов агент является собеседником. С помощью инструментов он становится оператором.

Рассмотрим агента по бронированию путешествий. Без инструментов он может обсудить рейсы и предложить маршруты на основе общих знаний. С помощью инструментов он может:

  • Запрос API рейсов на доступность и ценообразование в режиме реального времени
  • Забронировать рейс от имени пользователя

Для каждого из этих действий требуется инструмент — часть кода, которую агент может вызвать для взаимодействия с внешним миром.

Как работает цикл вызова инструментов

Когда вы предоставляете средства агента, Agent Framework автоматически управляет циклом вызова инструментов:

┌──────────────────────────────────────────────────────┐
│  User: "What's the weather in Seattle?"              │
└──────────────┬───────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────┐
│  Agent sends messages + tool definitions to LLM      │
└──────────────┬───────────────────────────────────────┘
               ▼
       ┌───────────────┐
       │ LLM responds  │
       └───┬───────┬───┘
           │       │
     Tool call?    No ──────────────────────────┐
           │                                    │
           ▼                                    ▼
┌─────────────────────────────┐   ┌─────────────────────────────┐
│  Agent Framework executes   │   │  Final response:            │
│  the tool (e.g.,            │   │  "It's cloudy in Seattle    │
│  get_weather("Seattle"))    │   │   with a high of 15°C."     │
└──────────────┬──────────────┘   └─────────────────────────────┘
               │
               ▼
┌─────────────────────────────┐
│  Agent sends tool result    │
│  back to the LLM            │
└──────────────┬──────────────┘
               │
               └──────► (back to "LLM responds")

Схема, показывающая цикл вызова инструментов: LLM взаимодействует с внешними инструментами и памятью в цикле, прежде чем возвращать окончательный ответ.

Основные моменты:

  1. Вам не нужно писать цикл. Agent Framework обрабатывает обнаружение вызовов инструментов в ответе модели, выполнение инструментов и обратную передачу результатов. Вы определяете средства; платформа управляет остальными.
  2. Несколько вызовов инструментов на один цикл. Модель может вызывать несколько инструментов (потенциально параллельно), прежде чем создавать окончательный ответ, или вызывать цепочку инструментов, где выходные данные одного используются для следующего.
  3. Модель решает, когда следует вызывать инструменты. Основываясь на запросе пользователя и предоставленных описаниях инструментов, модель определяет, требуется ли инструмент. Хорошие описания инструментов приводят к улучшению выбора инструментов.

Tip

Пошаговое руководство по добавлению первого средства и просмотру этого цикла в действии см. в разделе "Шаг 2. Добавление инструментов в учебнике по началу работы".

Типы инструментов

Agent Framework поддерживает несколько категорий инструментов. Выбор правильного варианта зависит от того, что вы ожидаете от агента и где находится соответствующая функция.

Инструменты для функций

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

Используйте средства функции, когда:

  • У вас есть пользовательская бизнес-логика, которую агент должен вызывать (запрашивать базу данных, вызывать внутренний API, выполнять вычисление)
  • Вам потребуется средство для запуска в среде с доступом к ресурсам.
  • Вы хотите обеспечить безопасность и тестирование типов во время компиляции

Функциональные инструменты являются самыми распространенными и гибкими инструментами. Большинство агентов начинают работу здесь.

Средства MCP (протокол контекста модели)

MCP — это открытый стандарт, определяющий, как приложения предоставляют средства для LLM. Вместо написания логики инструментов вы подключаетесь к серверу MCP , который предоставляет набор средств по стандартному протоколу, аналогично тому, как REST API предоставляет конечные точки.

Agent Framework поддерживает два варианта:

Вкус Что это такое Когда его использовать
Размещенные средства MCP Серверы MCP, размещенные и управляемые Microsoft Foundry или другими поставщиками Требуется доступ к общим возможностям (например, поиск файлов, выполнение кода) без управления инфраструктурой
Локальные средства MCP Серверы MCP, которыми вы управляете самостоятельно или подключаетесь к любому поставщику У вас есть пользовательский или сторонний сервер MCP, или вам нужны инструменты, которые выполняются в собственной среде.

Используйте средства MCP, когда:

  • Предварительно созданный сервер MCP уже предоставляет необходимую возможность.
  • Вы хотите повторно использовать средства для нескольких агентов или приложений через общий сервер
  • Вы интегрируетесь со сторонней службой, которая предоставляет конечную точку MCP

Средства, размещенные у поставщика

Некоторые поставщики предлагают встроенные средства, которые выполняются в инфраструктуре поставщика — локальный код не требуется. К ним относятся:

инструмент Что делает
Интерпретатор кода Выполняет код в изолированной среде в инфраструктуре поставщика
Поиск файлов Выполняет поиск по файлам, передаваемым поставщику
Поиск в Интернете Поиск сведений в Интернете в режиме реального времени

Используйте средства, размещенные у поставщика, когда:

  • Вам нужны такие возможности, как выполнение кода или поиск в Интернете, без создания или размещения средства самостоятельно
  • Поставщик уже предлагает управляемую версию, которая соответствует вашим требованиям

Замечание

Доступность средства, размещенного у поставщика, варьируется в зависимости от поставщика. Ознакомьтесь с обзором инструментов для полной матрицы поддержки поставщика.

Замечание

Некоторые поставщики LLM могут выполнять размещенные средства в своей инфраструктуре во время инференса, например API ответов OpenAI. Рассматривайте эти службы инференции как полуагентные сервисы, которые объединяют выполнение инференции с использованием инструментов. Он не изменяет способ работы базовой модели, но при этом использование инструмента может произойти в рамках создания ответов службы. Эти службы не могут выполнять локальные средства, которые должны запускаться на вашей инфраструктуре.

Выбор подходящего типа инструмента

Question Recommendation
У меня есть индивидуальная бизнес-логика? Средства функций — запись и регистрация собственных функций
Существует ли сервер MCP, который выполняет то, что мне нужно? MCP tools — подключитесь к нему вместо создания с нуля, например GitHub сервера MCP
Требуется ли выполнение кода, поиск файлов или поиск в Интернете? Средства, размещенные у поставщика , проверьте, поддерживает ли ваш поставщик их.
Нужны ли инструменты из нескольких категорий? Смешайте их . Агенты могут одновременно использовать средства функций, инструменты MCP и средства, размещенные у поставщика.

Описание инструмента имеет значение

Модель выбирает инструменты на основе их имен и описаний. Расплывчатое описание приводит к плохому выбору инструментов— модель может вызвать неправильное средство, пропустить инструмент, который он должен использовать, или передать неверные аргументы.

Написание описаний инструментов так же, как вы напишете документ API: укажите, что делает средство, что означает каждый параметр и что он возвращает. Чем более четкое описание, тем лучше оценка модели.

Tip

Определения инструментов (имена, описания, схемы параметров) включаются в запрос и используют токены в контекстном окне. Если вы регистрируете множество инструментов, то затраты могут быть значительными. Регистрируйте только средства, необходимые агенту.

Утверждение инструмента: участие человека в процессе

Некоторые действия чувствительны — передача денег, удаление записей, отправка сообщений электронной почты. Вы, возможно, не хотите, чтобы агент выполнял эти инструменты автономно. Утверждение инструмента позволяет требовать подтверждения человека перед выполнением средства.

Если средство отмечено как требующее утверждения, агент делает паузу перед выполнением и сообщает о необходимости утверждения. Ваше приложение отвечает за представление этого пользователю и передачу их решения обратно.

Этот шаблон часто называется " человеком в цикле " и является важным для создания надежных агентов, обрабатывающих последовательные действия.

Распространенные ловушки

Ловушка Рекомендации
Слишком много инструментов Каждое определение инструмента использует токены. Зарегистрируйте только средства, относящиеся к назначению агента.
Расплывчатые описания "Работает с данными" не поможет модели. Будьте конкретными: "Запрашивает базу данных инвентаризации для доступности продукта по номеру SKU".
Отсутствие обработки ошибок Инструменты могут завершиться сбоем (сетевые ошибки, недопустимые входные данные). Возвращайте четкие сообщения об ошибках, чтобы модель может понять, что пошло не так, и повторите попытку или сообщите пользователю.
Чрезмерно открытые средства Инструмент, который может "запустить любой SQL-запрос" является угрозой безопасности. Ограничьте область инструментов конкретными, четко определенными операциями.
Отсутствие утверждения о конфиденциальных действиях Если инструмент может вносить необратимые изменения, добавьте утверждение инструмента, чтобы человек контролировал процесс.

Специальное упоминание: средство интерпретатора кода

Как описано в принципах LLM, LLM может делать ошибки в точных вычислениях и формальной логике. Это связано с тем, что LLM генерируют ответы токен за токеном на основе сопоставления шаблонов — они фактически не вычисляют. Модель LLM, когда её просят умножить два больших числа, не решает арифметические задачи; она предсказывает, каким кажется ответ на основе данных обучения. Это работает удивительно часто, но непредсказуемо дает сбой в пограничных случаях.

Интерпретатор кода решает это, позволяя агенту писать и выполнять код в изолированной среде. Вместо того чтобы угадать ответ, модель записывает скрипт Python, вычисляющий его точно, запускает его и использует проверенный результат в ответе.

Замечание

Модель может создавать несколько разных скриптов каждый раз, когда предлагается решить одну и ту же проблему, но результаты должны быть в основном согласованными.

Предупреждение

Интерпретатор кода не является заменой для внимательного анализа с человеческой стороны. Всегда проверяйте работу агента и проверяйте результаты независимо при необходимости.

При необходимости предоставьте вашему агенту интерпретатор кода.

  • Выполнение точных вычислений — финансового моделирования, статистического анализа, преобразования единиц — где приблизительное "лучшее угадывание" недопустимо.
  • Преобразование или анализ данных — анализ CSV, агрегирование строк, создание диаграмм или изменение структурированных данных.
  • Файлы обработки — чтение отправленных документов, извлечение содержимого, преобразование форматов или создание новых файлов.
  • Проверяйте собственные рассуждения — необходимо написать тестовый код, чтобы проверить логический вывод перед представлением пользователю.

Tip

Интерпретатор кода может быть инструментом, размещенным у поставщика, — код выполняется в инфраструктуре поставщика в песочнице, а не в вашей среде. Это делает его безопасным для использования, не беспокоясь о произвольном выполнении кода на серверах. Дополнительные сведения о настройке см. в справочнике по интерпретатору кода .

Дальнейшие действия

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

Вернитесь глубже: