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

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

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

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, убедитесь, что каждый инструмент в вашем скилле имеет уникальный и описательный докстринг.
  • Общие секреты: Используйте одни и те же ключи для связанных инструментов, чтобы минимизировать количество запросов на подтверждение.

Далее: Узнайте, как подключиться к пользовательским оркестраторам.