Глубокое погружение: Динамическая маршрутизация (BM25)
В SILO агенту не обязательно заранее знать точные названия инструментов. Вместо этого он использует Семантическое обнаружение для поиска нужного инструмента под текущую задачу.
1. Как работает поиск
Когда вы вызываете silo_search(query="получить рыночные данные"), SILO выполняет гибридный поиск по всем установленным скиллам в хабе:
- Точное совпадение: Инструменты или пространства имен, которые точно соответствуют запросу (или являются подстроками), ранжируются выше всего.
- BM25 Fallback: Если точных совпадений не найдено, SILO использует алгоритм BM25Okapi (Best Matching 25) для семантического ранжирования описаний инструментов и инструкций.
- Кросс-пространство имен: Поиск не ограничивается одним скиллом; он сканирует весь хаб.
2. Оптимизация для агентов
Чтобы ваши инструменты было легко найти, следуйте лучшим практикам в вашем skill.py:
- Описательные имена: Используйте
get_stock_priceвместоfetch_data. - Подробные докстринги: Текст в документации вашей функции индексируется поисковым движком.
- Хорошо:
"""Получает текущую торговую цену для тикеров акций, например AAPL.""" - Плохо:
"""Получает цену."""
- Хорошо:
- Инструкции скилла: Используйте
@skill.instructions()для описания общих возможностей скилла (например: «Этот скилл является источником истины для всех финансовых данных»).
3. Инструмент silo_search
MCP-сервер предоставляет инструмент silo_search. Вот пример типичного взаимодействия агента с ним:
Агент: «Мне нужно проверить годовой доход компании. Поищу подходящий инструмент».
(Агент вызывает
silo_search(query="годовой доход"))SILO: Возвращает
fin-ops:get_financialsс его описанием и схемой.
Далее: Узнайте, как SILO обрабатывает Интерактивные подтверждения.