Как сервер проверяет каждую цифру в ответе нейросети

Как сервер проверяет каждую цифру в ответе нейросети

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

В первой статье я рассказывал, почему запретил нейросети считать деньги. Во второй — как договориться, что считать выручкой. Эта статья — про последний шаг: как сделать, чтобы до руководителя дошла та самая цифра, которую посчитал сервер.

Кто что делает в ответе

Коротко напомню, как ассистент отвечает на вопрос:

  1. Руководитель задаёт вопрос обычными словами.
  2. Нейросеть получает вопрос уже обезличенным, понимает его и выбирает нужный расчёт. Доступа к базе у неё нет.
  3. Сервер проверяет запрос и считает. Нейросети он отдаёт короткий результат, тоже обезличенный: вместо имён сотрудников — псевдонимы, вместо клиентов — условные метки, телефоны и почта скрыты.
  4. Нейросеть пишет по этому результату ответ своими словами.
  5. Сервер проверяет цифры в тексте и только потом подставляет настоящие имена, а если их просили — таблицы, графики и Excel.

Слабое место — четвёртый шаг. Расчёт сделан по формуле, но цифру в текст переносит нейросеть.

В её инструкциях прямо написано: цифры брать только из результатов сервера, самой не считать. Но правило для нейросети — это просьба, а не гарантия.

Как работает проверка

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

  • Все цифры совпали — ответ уходит руководителю.
  • Есть расхождение — ответ возвращается нейросети на переделку. Один раз.
  • После переделки снова не сошлось — сервер собирает ответ сам, прямо из данных расчёта.

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

Сверка идёт по обезличенному тексту. Настоящие имена сервер подставляет только после неё, вместе с таблицами, графиками и Excel — их нейросеть вообще не пересказывает.

Саму проверку тоже проверяют автотесты при каждом обновлении ассистента. Они же перехватывают всё, что уходит в нейросеть, и следят, чтобы имён и контактов там не было.

Как сервер проверяет каждую цифру в ответе нейросети

Цифра из текста доходит до руководителя, только если совпала с расчётом: с первой попытки или после переделки. Иначе отвечает сам сервер.

Что проверка не ловит

Проверка ловит только цифры. Три вещи она не видит:

  • Период. Сервер передаёт период в каждом результате, и нейросеть по правилу пишет его в ответе. Но есть ли период в тексте и тот ли он, сервер не проверяет.
  • Пометки о полноте. Если данных за часть периода нет, нейросеть по правилу должна так и сказать. Это тоже правило, а не проверка.
  • Утверждения без цифр. Нейросеть иногда добавляет утверждения, которых нет в данных. Если в них нет цифр, проверка их пропустит.

В Excel период, фильтры и пометки о полноте есть всегда: сервер пишет их на отдельный лист. В тексте ответа это держится на правилах для нейросети. Это честная граница, и я её не прячу.

Что взять себе

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

  1. Не давайте нейросети считать. Пусть считает система, которой вы доверяете: база, отчёт, скрипт. Нейросеть — переводчик между вопросом и расчётом.
  2. Проверяйте ответ, а не надейтесь на нейросеть. Каждая цифра в тексте должна совпасть с расчётом. Правило в инструкции этого не гарантирует.
  3. Решите заранее, что делать при расхождении. У нас это одна переделка, потом ответ по данным. Без бесконечного «попробуй ещё раз».
  4. Таблицы и файлы отдавайте из расчёта напрямую. Чем меньше пересказа, тем меньше мест для ошибки.
  5. Запишите, что проверка не ловит. Тогда никто не будет думать, что проверено всё.

Итог

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