Skip to main content
Каждая функция AI отправляет третьей стороне текст, написанный кем-то другим, — обращение в поддержку, сообщение клиента, заметку оператора. Эта страница — отчёт о том, что Omniflow с этим делает.
AI выключен, пока владелец его не настроит. Шлюз без настроенного провайдера отвечает «недоступно» на каждый запрос. По умолчанию никуда ничего не отправляется, и чтобы это выяснить, ни один провайдер не опрашивается.
В этой сборке провайдер не вызывается вообще. Шлюз, редактор и пакеты функций реализованы и покрыты модульными тестами, а экраны настройки настоящие, — но ни один процесс их не подключает, поэтому нет ни одной точки входа AI и ни одного экрана, который бы её вызывал. Всё описанное ниже — это то, через что проходит запрос, когда функции подключены; сегодня честная сводка такова: запрос не выполняется. См. Провайдеры AI и локальные модели.

Никто не обращается к модели напрямую

internal/aigateway — единственный путь к провайдеру. Отсюда следуют три свойства, и каждое объясняет, зачем нужна эта прослойка. Функция не может забыть про редактирование. Редактирование происходит внутри шлюза, а не в вызывающем коде. Единственный путь к провайдеру — через функцию, которая уже отредактировала текст, поэтому функция, добавленная в следующем году, наследует защиту без того, чтобы её автор знал о существовании этой защиты. Задача не может быть направлена к неодобренному провайдеру. Если задача настроена на провайдера, которого владелец не одобрил, запрос отклоняется — он не откатывается к другому. Резервный переход, расширяющий круг адресатов данных, — единственное, чего этот шлюз не должен делать никогда. Бюджет — это лимит, а не счёт. Потолки проверяются до вызова. Нечитаемый счётчик приводит к отказу, потому что траты в счёт бюджета, который никто не может измерить, — это то, как установка узнаёт о своём лимите из счёта. Провайдер, не сообщающий о расходе токенов, тарифицируется по оценке, а не считается бесплатным.

Что удаляется до того, как что-либо будет отправлено

internal/airedact — единственное место, где это решается. Redact не принимает опций: редактирование, которое можно частично отключить, — это то, что кто-нибудь частично отключит, и первый раз, когда это будет иметь значение, окажется тем разом, когда ссылка на подписку уйдёт провайдеру. Две детали стоит знать, потому что они определили реализацию. Порядок несёт нагрузку. Ссылка на подписку содержит UUID, а UUID содержит последовательности цифр и дефисов, попадающие под шаблон карты. Если сначала заменить внутреннюю форму, внешняя перестаёт соответствовать собственному шаблону и выживает в виде наполовину отредактированного URL — что хуже любого из двух исходов по отдельности. Правила применяются от самой широкой формы к самой узкой. Отредактированный фрагмент становится помеченным плейсхолдером, а не дырой. Модель, читающая «клиент прислал [SUBSCRIPTION_LINK]», всё ещё способна рассуждать о разговоре. Модель, читающая предложение с пробелом посередине, — нет, а оператор, сравнивающий оригинал с отправленным, видит ровно то, что было удалено. Обычная проза поддержки остаётся нетронутой. Это закреплено тестом, потому что редактор, съедающий нормальные предложения, делает функцию бесполезной.

Как увидеть, что уйдёт, ещё до включения

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

Настройка на уровне задачи

Каждая задача несёт собственного провайдера, модель, температуру, лимит токенов, тайм-аут и бюджет. Составить сводку обращения и оценить, совершает ли кто-то мошенничество, — это разные риски, и они не должны делить одну конфигурацию.

Что AI не позволено делать никогда

Это ограничения продукта, а не настройки.
  • Сгенерированный ответ — черновик. Отправляет его уполномоченный оператор.
  • AI может порекомендовать неблагоприятное действие в отношении клиента. Он не может его совершить: ни блокировка, ни отказ в возврате, ни корректировка кошелька, ни изменение права на услугу не происходят без человека.
  • AI может подготовить рассылку. Он не может выбрать получателей, запланировать или отправить её.
  • Промпты, выводы, содержимое обращений, данные клиентов и аргументы инструментов никогда не попадают в анонимную телеметрию.