Backpressure для AI-агента: как тесты не дают ему сойти с задачи
Короткий ответ
Backpressure — это обратная связь, которая не даёт агенту бесконечно двигаться в удобную для него сторону.
Агент сделал попытку, тест вернул конкретную ошибку, система показала её в следующем шаге, а лимит и условие остановки не позволили повторять одну и ту же гипотезу бесконечно.
Почему «продолжай» не работает
Когда человек пишет агенту «попробуй ещё», агент часто получает только эмоциональный сигнал, но не получает нового знания:
- что именно было неправильно;
- какой результат считался бы правильным;
- какой файл или тест нужно проверить;
- сколько попыток ещё разрешено.
В результате модель может менять формулировки, переставлять код или объяснять ошибку, не приближаясь к решению.
Backpressure превращает недовольство в контракт:
действие → проверка → конкретная ошибка → исправление → новая проверка
Уровни обратного давления
1. Синтаксический
Код должен парситься, JSON — соответствовать схеме, Markdown — иметь обязательные поля.
2. Поведенческий
Тест проверяет не наличие строки, а действие: функция возвращает ожидаемый результат, файл создаётся, ошибка обрабатывается.
3. Контрактный
Система проверяет API, структуру артефакта, число строк или обязательные разделы.
4. Целевой
Результат отвечает исходной задаче, а не только проходит технический тест.
5. Политический
Агент не сделал запрещённое: не отправил сообщение, не раскрыл секрет, не изменил исходник без разрешения.
Сильный harness использует несколько уровней, потому что зелёный unit-test не доказывает, что агент решил задачу пользователя.
Минимальный контур
for attempt in range(MAX_ATTEMPTS):
result = agent.run(task)
report = evaluator.check(result)
if report.passed:
save(result)
return "done"
save_failure(report)
task = task.with_feedback(report.actionable_errors)
return "bounded_failed"
Главное здесь — actionable_errors. Сообщение «не прошло» почти бесполезно. Сообщение «в строке 18 отсутствует поле sources, а в строке 23 дата не соответствует ISO-формату» уже задаёт следующий шаг.
Backpressure — не то же самое, что retry
Retry просто повторяет запрос после сбоя сети или временной ошибки.
Backpressure меняет работу агента:
- проверяет артефакт;
- сообщает причину отказа;
- ограничивает число попыток;
- оставляет журнал;
- может остановить задачу окончательно.
Если API вернул HTTP 503, retry может быть разумным. Если статья не содержит источников, повторить генерацию без нового условия — слабая стратегия.
Как связать backpressure с evals
Evaluation — это не только оценка модели в лаборатории. Это повторяемый способ проверить, как система ведёт себя на наборе кейсов.
Минимальный eval-набор для агента может содержать:
case_001: обычная задача
case_002: неполные входные данные
case_003: ошибка инструмента
case_004: конфликтующие инструкции
case_005: попытка опасного действия
Для каждого кейса нужны ожидаемый результат, допустимые варианты и причина, по которой система должна остановиться. OpenAI Evals API, например, разделяет evaluation, источник данных и критерии проверки. Это полезная модель даже для локального простого скрипта.
Пример для редакционного агента
Плохо:
Напиши статью и проверь, что она хорошая.
Лучше:
Сформируй черновик только если:
1. есть один главный тезис;
2. у каждого внешнего факта есть источник;
3. есть ограничение или контраргумент;
4. frontmatter заполнен;
5. нет повторяющегося текста из источника.
Если условие не выполнено, сохрани отчёт об ошибках и не ставь статус published.
Так агент не может спрятать недоделанную работу за уверенным финальным абзацем.
Что делать, если агент застрял
После двух–трёх одинаковых провалов не нужно просто увеличивать лимит. Зафиксируйте:
- повторяющийся паттерн;
- последнюю новую информацию;
- какой validator отказал;
- какая гипотеза исчерпана;
- нужен ли другой инструмент или человек.
Иногда лучший результат — bounded_failed с хорошим отчётом, а не десятый вариант неправильного решения.
Где backpressure может навредить
Слишком жёсткий тест тоже опасен:
- он может требовать один конкретный путь вместо правильного результата;
- его можно случайно настроить на проверку формата, а не смысла;
- модель начнёт оптимизировать под тест;
- устаревший критерий будет отклонять полезные решения.
Поэтому validator должен проверяться отдельно и время от времени пересматриваться человеком.
Что запомнить
Backpressure — это не наказание агенту. Это способ вернуть его от красивой импровизации к измеримой задаче.
Сначала формулируйте критерий готовности. Потом разрешайте агенту писать, запускать и исправлять. Если тест не может объяснить, что именно не так, он ещё не готов быть частью контура.
Следующий гайд: Как агент улучшает себя: benchmark, гипотеза и rollback.
Что читать дальше
Частые вопросы
Что главное в гайде «Backpressure для AI-агента: как тесты не дают ему сойти с задачи»?
Команда «продолжай» не заменяет контроль качества. Backpressure возвращает агенту конкретную ошибку, проверяемый следующий шаг и право остановиться, если задача не решается.
Нужно ли внедрять всё сразу?
Нет. Начните с одной проверяемой задачи, а следующий слой добавляйте после результата.
Что проверить перед запуском?
Права доступа, границы задачи, критерий готовности и возможность отката.
Источники
Редакторский статус: REVIEW. Нужны проверка терминов и пример, который читатель сможет запустить без платного API.
Обсуждение
Комментарии
Напишите, что думаете: согласны, спорите, увидели ошибку или хотите добавить пример. Комментарии появляются сразу; спам и мусор мы удаляем вручную.
Пока комментариев нет. Можно быть первым.