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

Глубокое погружение: Интерактивные подтверждения

SILO сокращает разрыв между автоматизированными агентами и человеческим контролем через свой Интерактивный слой. Это гарантирует, что критические действия (такие как удаление данных или финансовые транзакции) всегда проходят под контролем человека («Human in the Loop»).

1. Определение требований к подтверждению

В определении вашего Skill вы можете пометить конкретные инструменты как требующие подтверждения:

@skill.tool(require_approval=True, time_to_live=300)
def delete_user(user_id: str):
    # ...
  • require_approval: Заставляет SILO приостановить выполнение до тех пор, пока человек не подтвердит действие.
  • time_to_live: «Льготный период» (в секундах). Если тот же агент вызывает тот же инструмент с теми же аргументами в течение этого окна, повторного запроса не будет.

2. Запрос в браузере

Если SILO запущен на машине с дисплеем (и не в режиме headless), он запустит временный микро-сервер и откроет браузер по умолчанию.

  • URL: http://localhost:<random_port>/
  • Контент: Премиальная страница с именем инструмента, точными аргументами, которые пытается передать агент, и кнопками «Одобрить» / «Отклонить».
  • Безопасность: Запрос привязан к конкретной сессии выполнения.

3. Резервный вариант в TTY

Работаете на удаленном сервере через SSH? SILO обнаружит отсутствие дисплея и переключится на информативный запрос в терминале:

⚠️  Требуется подтверждение
Действие: delete_user
Аргументы: {"user_id": "12345"}
Продолжить? [y/N]:

4. Почему это важно

Интерактивные подтверждения предотвращают:

  • Prompt Injection: Ситуацию, когда агента обманом заставляют вызвать деструктивную команду.
  • Рекурсивные циклы: Случайные тысячи вызовов дорогостоящего API.
  • Отклонение от цели: Принятие агентом решений, которые расходятся с намерениями пользователя.

Далее: Ознакомьтесь со Справочником CLI.