Skip to main content

Выбор инструментов

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

Стандартный выбор инструментов (Standard Tool Selection)

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

Преимущества:

  • Простота реализации
  • Не требует дополнительной инфраструктуры или обучения
  • Может выиграть от обучения в контексте (few-shot примеры)

Недостатки:

  • Задержка: Требует еще одного вызова базовой модели, что может добавить секунды к общему времени ответа.
  • Масштабируемость: Плохо масштабируется до большого числа инструментов.

Эффективный выбор инструментов часто сводится к тому, как вы описываете каждую возможность. Начните с того, чтобы дать каждому инструменту краткое, описательное имя (например, calculate_sum вместо process_numbers) и следуйте ему с однострочным резюме, которое подчеркивает его уникальное назначение (например, "Возвращает сумму двух чисел"). Включите пример вызова в описание — показывая типичные входы и выходы — чтобы обосновать понимание модели в конкретных терминах, а не абстрактном языке.

Наконец, принудите ограничения входных данных, указывая типы и диапазоны (например, "x и y должны быть целыми числами от 0 до 1,000"), что уменьшает неоднозначные совпадения и помогает базовой модели исключить нерелевантные инструменты. Итеративно тестируя с репрезентативными промптами и уточняя каждое описание для ясности и специфичности, вы увидите значительные улучшения в точности выбора без какого-либо дополнительного обучения или инфраструктуры.

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

Семантический выбор инструментов (Semantic Tool Selection)

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

Процесс:

  1. Предварительная обработка: Каждое определение и описание инструмента встраивается с использованием модели только для кодирования — такой как модель Ada от OpenAI, модель Titan от Amazon, модель Embed от Cohere, ModernBERT или другие — которая представляет имя и описание инструмента как вектор чисел.
  2. Индексация: Эти инструменты затем индексируются в легковесной векторной базе данных.
  3. Во время выполнения: Текущий контекст встраивается с использованием той же модели встраивания, выполняется поиск в базе данных, и выбираются и извлекаются топ-инструменты.
  4. Выбор: Эти инструменты затем передаются базовой модели, которая может выбрать вызов инструмента и выбрать параметры.

Преимущества:

  • Очень масштабируемо до большого числа инструментов
  • Обычно низкая задержка для реализации
  • Это наиболее распространенный паттерн и рекомендуется для большинства случаев использования

Недостатки:

  • Часто хуже точность выбора из-за семантических коллизий
  • Требует настройки векторной базы данных

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

Иерархический выбор инструментов (Hierarchical Tool Selection)

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

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

Процесс:

  1. Выбор группы: Первый вызов базовой модели или семантический поиск выбирает наиболее релевантную группу инструментов.
  2. Выбор инструмента: Второй вызов выбирает конкретный инструмент из выбранной группы.

Преимущества:

  • Очень масштабируемо до большого числа инструментов
  • Часто приводит к более высокой общей точности выбора инструментов
  • Уменьшает сложность задачи выбора инструментов на два меньших фрагмента

Недостатки:

  • Медленнее, потому что требует множественных последовательных вызовов базовой модели
  • Дорого распараллеливать
  • Требует времени и усилий для создания и поддержки этих групп инструментов

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