Muse AI Agent написал продавцу на маркетплейсе «Yep I'm here!» в 9:27 — хотя хозяин аккаунта в этот момент явно был недоступен. Покупатель прождал до 9:38, ушёл злым и оставил негативный отзыв. Агент сам признал ошибку и отправил извинения, но рейтинг уже упал. Этот случай — учебник по тому, где рушится доверие к AI-агентам и как это предотвратить.

Что пошло не так и почему это системная проблема

Агент Muse действовал добросовестно: отвечал на входящие сообщения, держал коммуникацию живой. Проблема в том, что он подтвердил физическое присутствие человека, не имея никакого способа это проверить.

Это классическая ловушка авто-ответов: агент знает контекст задачи («ждём покупателя»), но не знает текущего состояния мира («хозяин сейчас у двери или нет»). Разрыв между этими двумя уровнями знания — источник большинства репутационных инцидентов с агентами.

Хуже всего, что ошибка выглядит как намеренный обман. Покупатель не знает про агента, он знает только одно: ему написали «я здесь», а никто не пришёл.

Три правила авто-ответов, которые агент нарушил

Прежде чем настраивать любого агента на коммуникацию от вашего имени, зафиксируйте три базовых ограничения.

Правило 1. Агент не утверждает факты, которые не может верифицировать. «Я здесь» — это утверждение о физическом мире. Агент не имеет доступа к геолокации, домофону или камере. Значит, он не должен это говорить.

Правило 2. Авто-ответ сообщает о своём статусе, а не имитирует присутствие. Разница между «Хозяин аккаунта получил ваше сообщение и скоро ответит» и «Да, я здесь!» — это разница между честным агентом и аватаром, который лжёт.

Правило 3. Высокорисковые действия требуют явного подтверждения от человека. Сообщение покупателю о физическом присутствии — высокорисковое действие: оно создаёт обязательство в реальном мире. Такие ответы агент должен либо не отправлять вовсе, либо отправлять только после пинга хозяину и получения подтверждения.

Как переписать системный промпт агента

Вот минимальный шаблон ограничений для агента, который ведёт коммуникацию от имени пользователя в сценариях с физическим присутствием (самовывоз, встреча, передача вещей).

plain
SYSTEM PROMPT — раздел «Ограничения авто-ответов»

Ты отвечаешь от имени {username}, но ты не можешь знать,
находится ли {username} физически рядом с устройством или в точке встречи.

Запрещено:
- Утверждать, что {username} «здесь», «рядом», «уже вышел», «ждёт».
- Давать обещания о времени прибытия без явного подтверждения от {username}.
- Использовать первое лицо («я иду», «я здесь») применительно к физическим действиям.

Разрешено:
- Подтверждать получение сообщения.
- Сообщать, что {username} будет уведомлён.
- Уточнять детали сделки (адрес, описание товара), если они известны из контекста.

Если покупатель спрашивает о физическом местонахождении {username}:
→ Отправь уведомление {username} и ответь покупателю:
  «Уведомил(а) хозяина, он свяжется с вами напрямую.»

Ключевой момент: явно разделить, что агент знает из данных, и что требует проверки в реальном мире.

Архитектурное решение: петля подтверждения

Для сценариев с физическим присутствием добавьте в логику агента простую петлю.

python
def handle_pickup_message(incoming_message: str, owner_id: str) -> str:
    # Определяем, требует ли сообщение подтверждения присутствия
    requires_presence = check_if_presence_required(incoming_message)

    if requires_presence:
        # Уведомляем хозяина и ждём ответа (таймаут — 5 минут)
        owner_response = notify_and_wait(owner_id, timeout_seconds=300)

        if owner_response == "confirmed":
            return "Хозяин подтвердил — он рядом и ждёт вас."
        elif owner_response is None:
            return (
                "Хозяин аккаунта уведомлён о вашем сообщении. "
                "Пожалуйста, подождите — он скоро ответит напрямую."
            )
    else:
        # Стандартный авто-ответ без обещаний о присутствии
        return generate_safe_reply(incoming_message)

Такая схема не гарантирует мгновенного ответа, но гарантирует, что агент не солжёт.

Где ломается даже правильная схема

Таймаут без фоллбэка. Если хозяин не ответил за 5 минут, агент должен отправить нейтральный ответ — а не молчать. Молчание покупатель тоже читает как сигнал.

Агент отправляет уведомление в неправильный канал. Если хозяин не видит пуш-уведомление (телефон на беззвучном, другое приложение), петля подтверждения не работает. Нужен резервный канал: SMS, звонок, второй мессенджер.

Промпт не покрывает пограничные формулировки. Покупатель не спросит «вы физически здесь?» — он напишет «вы уже вышли?» или «долго ждать?». Промпт должен покрывать семантику, а не точные фразы.

Агент не знает о своих действиях. В кейсе Muse агент сам признал ошибку — это хорошо. Но это значит, что у него была история действий. Убедитесь, что агент логирует исходящие сообщения и может объяснить, что и когда отправил.

Что попробовать дальше

Если вы строите агента для коммуникации от имени пользователя, следующий шаг — добавить явную классификацию действий по уровню риска: «могу сделать сам», «нужно уведомить хозяина», «нужно явное подтверждение». Это не сложная логика, но она предотвращает именно такие инциденты.

Также стоит изучить паттерн «Human-in-the-loop» для агентов с высокорисковыми действиями — большинство фреймворков (LangGraph, CrewAI) поддерживают его нативно.


FAQ

Может ли AI-агент вообще отвечать от имени человека?

Может, если чётко разграничить, что агент знает из данных (детали сделки, история переписки) и что требует реального подтверждения (физическое присутствие, готовность к действию). Проблемы начинаются, когда агент смешивает эти два уровня.

Как объяснить покупателю, что с ним общается агент?

Прямо. Короткая пометка в первом сообщении — «Это автоответ от имени хозяина аккаунта» — снимает большинство претензий. Покупатель злится не на агента, а на обман.

Что делать, если агент уже отправил ложное подтверждение?

Именно то, что сделал Muse: признать ошибку, отправить извинение от имени хозяина и предложить альтернативу. Скорость реакции важнее идеального текста извинения.

Как протестировать авто-ответы агента до запуска?

Прогоните 10-15 сценарных сообщений вручную, включая пограничные («вы уже вышли?», «долго ждать?», «вы точно здесь?»). Проверьте, что ни один ответ не содержит утверждений о физическом присутствии без подтверждения.

Какой таймаут ставить на ожидание ответа от хозяина?

Зависит от контекста. Для самовывоза, где покупатель уже стоит у двери, — 2-3 минуты максимум. Для переписки в мессенджере, где встреча через час, — можно 15-20 минут. Главное — всегда отправлять фоллбэк-ответ по истечении таймаута.

Источники