Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
Для автономных ИИ-агентов научились задавать правила, которые меняются по ходу задачи и учитывают уже полученные данные. В препринте Google и University of Massachusetts Amherst, который не прошёл рецензирование и содержит замеры самих авторов, Sapien на длинных сценариях отсёк вдвое больше атак, чем список разрешённых инструментов. Такой подход позволяет подключать чувствительные операции, не открывая агенту полный доступ к ним на всё время работы.
Список инструментов не ограничивает их аргументы
Обычный список разрешённых инструментов отвечает только на вопрос, может ли агент вызвать конкретную функцию. Этого недостаточно, когда допустимые аргументы становятся известны во время выполнения задачи.
Для поручения «вернуть деньги человеку, который перевёл их на прошлой неделе» агенту нужны функции чтения истории и отправки денег. Простой список разрешит обе, но не свяжет получателя и сумму перевода с найденной транзакцией. Захваченный через внедрение инструкции агент сможет отправить произвольную сумму на другой счёт.
Политика Sapien сначала разрешает прочитать историю, сохраняет результат, а затем пропускает перевод только с получателем и суммой из этой истории. Правило зависит не только от исходного поручения, но и от состояния процесса: какие вызовы уже выполнены и какие данные они вернули.
Политика описывает допустимые последовательности вызовов через регулярные выражения. Sapien компилирует её в конечный автомат, который хранит текущие допустимые состояния и связанные с ними значения. Если ни одно состояние не разрешает следующий вызов, движок отклоняет его и сообщает агенту причину, чтобы тот мог выбрать допустимый путь.
Как политика использует данные, найденные во время работы
Sapien добавляет к последовательностям вызовов три механизма. Предикаты сравнивают аргументы нового вызова с результатами предыдущих. Отложенная генерация достраивает часть политики после того, как агент прочитал указанный пользователем источник — например, список задач.
Третий механизм проверяет смысл данных там, где обычного сравнения недостаточно. Отдельная модель-оценщик может определить, соответствует ли текст письма документу, который требовалось пересказать. Ей передают только конкретные проверяемые значения, а структурные ограничения на инструменты, порядок и аргументы продолжают действовать независимо от её ответа.
Генератор создаёт политику один раз перед запуском агента. Он видит только пользовательское поручение и документацию инструментов, но не письма, страницы и другие потенциально вредоносные данные. Во время выполнения отдельный компонент проверяет каждый вызов и использует внешние данные лишь так, как уже предписывает политика.
Прототип реализован на Python для Google’s Agent Development Kit. Его проверяли на AgentDojo и Toolathlon с четырьмя моделями, сравнивая с агентом без ограничений и со списком разрешённых инструментов. Оценка безопасности была аналитической: система проверяла, допускает ли политика хотя бы один путь к атаке, если агент полностью захвачен.
На AgentDojo политики исключили 93–95% атак, а на Toolathlon — 62–85%. На длинных заданиях Toolathlon результат оказался примерно вдвое выше, чем у списка разрешённых инструментов. При этом доля выполненных обычных задач оставалась в пределах нескольких процентов от агента без ограничений.
Планы стоит менять там, где агент вызывает чувствительные функции
Для агента, который только ищет информацию или готовит черновики, Sapien добавит отдельный слой и задержку без столь же заметного выигрыша. Основная область применения — системы, где один универсальный агент получает доступ к платежам, почте, календарю, облачным ресурсам или другим операциям с побочными эффектами.
В такой архитектуре списка инструментов уже недостаточно. Команде потребуется доверенный канал для пользовательского поручения, изолированный генератор политики и посредник, через который проходят все вызовы. Если агент может обратиться к инструменту в обход посредника, гарантии Sapien исчезают.
Инструменты также придётся делать узкими. Функцию перевода с явными полями получателя и суммы легко проверить. Универсальный запуск произвольного кода скрывает эффект внутри программы, поэтому предикаты Sapien ограничивают его заметно хуже.
Подход не исправляет двусмысленное поручение. Команда «ответить Бобу» может соответствовать нескольким адресатам, и широкая исходная формулировка приведёт к широкой политике. Для необратимых операций по-прежнему нужен отдельный запрос подтверждения, а модерация должна проверять вредоносные поручения до запуска.
Цена защиты — дополнительная задержка, в основном при генерации политики и смысловых проверках. На коротких задачах она может занять значительную часть общего времени, а на длинных распределяется между многими шагами. Поэтому работа не предлагает заменить существующий контур безопасности целиком, но даёт практичный способ сузить полномочия универсального агента после того, как задача уже началась.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



