Перейти к содержимому
Инвойсбокс
Инвойсбокс
Login iconВойти

Двухфазное подтверждение — почему ИИ-ассистент не платит в один вызов

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

3 минИнвойсбокс
Двухфазное подтверждение — почему ИИ-ассистент не платит в один вызов
Двухфазное подтверждение — правило, по которому ни одна операция с деньгами не выполняется в один вызов. Первый вызов ничего не отправляет в платёжную систему: он собирает операцию, показывает сводку — кому, за что, на какую сумму — и выдаёт одноразовый токен подтверждения. Второй вызов с этим токеном исполняет операцию. Между ними стоит человек.

Как это работает

Токен подтверждения привязан к параметрам операции и живёт ограниченное время — у MCP-сервера Инвойсбокс это 15 минут. Если ассистент между фазами поменял сумму или покупателя, токен не подойдёт: подтверждали одно, отправляют другое. Если человек передумал, токен просто истекает, и операция не происходит.

Когда клиент умеет задавать вопросы человеку (элиситация), обе фазы сворачиваются в один шаг: сервер показал сводку, человек ответил «да», сервер исполнил. Когда не умеет — остаются два вызова, и тихого исполнения не случается в любом случае.

Крупные суммы

Выше порога — по умолчанию 100 000 рублей — сервер требует отдельно назвать сумму, и это значение должен ввести человек. Подставить его автоматически или взять из предыдущего ответа модели нельзя: значение от той же стороны, которая собрала операцию, подтверждением не считается. Это и есть главный предохранитель против ошибки модели: она может ошибиться в сумме, но не может сама себе её подтвердить.

Интересные факты

  • Между решением модели и реальным списанием у сервера Инвойсбокс четыре предохранителя: подтверждение человеком, привязка подтверждения к конкретной сумме, идемпотентность и арифметика в целых копейках, где копейка не теряется на числе с плавающей точкой.
  • Суммы сервер принимает целыми копейками в виде строки: «12200» — это 122,00 ₽. Так модель не теряет копейку при округлении.
  • Крупные платёжные игроки пришли к той же схеме с другой стороны: у Stripe есть состояние токена requires_action, при котором агент обязан показать интерфейс банка, а в AP2 человек заранее подписывает рамку с ограничениями, к которой агент позже привязывает сумму.
  • Правило из опыта разработки: подтверждение проектируют как разговор с человеком — чем крупнее сумма, тем больше человека должно быть в этом разговоре.

Коротко

  • Первый вызов — сводка и одноразовый токен, второй — исполнение.
  • Токен привязан к параметрам и действует ограниченное время.
  • Выше порога сумму вводит человек, а не модель.
  • С элиситацией обе фазы сворачиваются в один вопрос «да/нет».

Полезно

AI-инвойсинг: счета через ассистента — подробнее →

#ИИ-агенты#MCP#безопасность