Перейти к содержанию

Глубокое погружение: Динамическая маршрутизация (BM25)

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

1. Как работает поиск

Когда вы вызываете silo_search(query="получить рыночные данные"), SILO выполняет гибридный поиск по всем установленным скиллам в хабе:

  1. Точное совпадение: Инструменты или пространства имен, которые точно соответствуют запросу (или являются подстроками), ранжируются выше всего.
  2. BM25 Fallback: Если точных совпадений не найдено, SILO использует алгоритм BM25Okapi (Best Matching 25) для семантического ранжирования описаний инструментов и инструкций.
  3. Кросс-пространство имен: Поиск не ограничивается одним скиллом; он сканирует весь хаб.

2. Оптимизация для агентов

Чтобы ваши инструменты было легко найти, следуйте лучшим практикам в вашем skill.py:

  • Описательные имена: Используйте get_stock_price вместо fetch_data.
  • Подробные докстринги: Текст в документации вашей функции индексируется поисковым движком.
    • Хорошо: """Получает текущую торговую цену для тикеров акций, например AAPL."""
    • Плохо: """Получает цену."""
  • Инструкции скилла: Используйте @skill.instructions() для описания общих возможностей скилла (например: «Этот скилл является источником истины для всех финансовых данных»).

MCP-сервер предоставляет инструмент silo_search. Вот пример типичного взаимодействия агента с ним:

Агент: «Мне нужно проверить годовой доход компании. Поищу подходящий инструмент».

(Агент вызывает silo_search(query="годовой доход"))

SILO: Возвращает fin-ops:get_financials с его описанием и схемой.


Далее: Узнайте, как SILO обрабатывает Интерактивные подтверждения.