Руководство: Создание скиллов с несколькими инструментами
Сложные скиллы часто требуют нескольких связанных инструментов. Это руководство показывает, как группировать инструменты и безопасно разделять состояние внутри одного скилла.
1. Группировка инструментов в пространстве имен
Скилл SILO идентифицируется по его namespace. Каждый инструмент, зарегистрированный в этом экземпляре, становится частью данного пространства имен.
from silo import Skill
skill = Skill(namespace="system-ops")
@skill.tool()
def get_uptime():
"""Возвращает время аптайма системы."""
# ...
@skill.tool()
def cleanup_temp_files(force: bool = False):
"""Очищает папку /tmp/."""
# ...
2. Общая логика
Поскольку скилл запускается как выполнение одного скрипта, вы можете определять общие вспомогательные функции или классы в том же файле.
def _get_api_client():
from my_client import Client
return Client(api_key=require_secret("MY_KEY"))
@skill.tool()
def list_resources():
client = _get_api_client()
return client.list()
3. Лучшие практики для сложных скиллов
- Атомарность: Каждый инструмент должен выполнять одну задачу и делать это хорошо.
- Четкие описания: Поскольку агенты используют поиск BM25, убедитесь, что каждый инструмент в вашем скилле имеет уникальный и описательный докстринг.
- Общие секреты: Используйте одни и те же ключи для связанных инструментов, чтобы минимизировать количество запросов на подтверждение.
Далее: Узнайте, как подключиться к пользовательским оркестраторам.