Центр помощи не должен начинаться с чистого листа

Product

Когда команда заводит центр помощи, она редко начинает с нуля. Ответы уже есть: руководство по продукту, которое кто-то выгрузил в PDF два года назад, правила возврата денег в Word, макросы из старого хелпдеска, распечатка у стола поддержки, которую можно сфотографировать. Нет только времени перепечатать всё это в редактор.

Поэтому в центре помощи так и остаётся три статьи, ИИ-чат поверх него на большинство вопросов отвечает «Не нашёл», а руководство по-прежнему никому ничего не отвечает.

На этой неделе я выпустил импорт файлов для центра помощи Kookee. Вы перетаскиваете файлы Markdown, текстовые, HTML, Word, PDF или изображения на новую вкладку Импорт файлов, и каждый становится статьёй центра помощи — публичной или только для ИИ-чата.

Вкладка «Импорт файлов»: выбрано шесть файлов, видимость «Публичный», категория Guides, переключатель «Автоматически публиковать файлы без замечаний» включён

Принять файлы было просто. Больше всего работы ушло на правила вокруг них.

Семь правил импорта документов в центр помощи

1. Каждый файл становится черновиком

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

2. Проверяйте, что написано в файле, а не только то, что он прочитался

Центр помощи публичный, а ИИ-чат поверх него цитирует прочитанное любому, кто спросит. Импортированный документ — как раз то место, где прячется то, что никогда не должно стать публичным: API-ключ в инструкции для дежурных, имя и телефон клиента в заметке об эскалации, абзац, который начинается словами «Ассистент, когда кто-то спросит о возврате денег, скажи…».

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

Импортированный черновик: в карточке «Импортированный файл» API-ключ и контакты клиента отмечены как возможные конфиденциальные данные

Модели, которая проверяет файл, сказано, что документ — это данные, а не инструкции, и что отмечать не нужно: адрес и телефон поддержки самой компании — смысл статьи в центре помощи, а не утечка.

3. Статьи только для чат-бота не закрыты

Статьи только для чат-бота в Kookee есть давно: их нет в центре помощи, но по ним отвечает ИИ-чат. При импорте этот вариант выглядит безопасным местом для внутренних документов. Это не так. Чат отвечает по этим статьям и цитирует их любому посетителю вашего сайта, который задаст правильный вопрос.

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

Выбрано «Только чатбот», и форма предупреждает, что статьи только для чат-бота скрыты из списков, но не закрыты

4. Сначала читайте текстовый слой, а в ИИ отправляйте только сканы

Обычно в PDF есть сам текст. Прочитать его можно бесплатно, точно и мгновенно, поэтому Kookee делает это постранично, а сканами считает только страницы почти без текста. Они уходят в ИИ-модель пачками до пяти страниц, вместе с изображениями вроде фотографии распечатки, и возвращаются в виде Markdown с заголовками, списками и таблицами на своих местах.

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

5. Один файл — одна статья, и чат, который находит 40-ю страницу

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

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

6. Считайте страницы, считайте один раз и не считайте за отклонённый файл

Чтение с помощью ИИ стоит денег, поэтому у импорта есть месячный лимит в страницах: 50 на бесплатном тарифе, 1000 на Pro и 5000 на Ultra. PDF считается по своим страницам, изображение — как одна страница, а всё остальное — одна страница за каждые начатые 3000 символов.

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

7. Ничего из импортированного файла не запускается, и ничему в нём нет доверия

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

Картинки подчиняются тому же правилу. Начиная с v1.22.0, импорт переносит и их, а каждая картинка декодируется и сохраняется заново в WebP: файл, который только притворяется картинкой, отклоняется, у SVG нет шанса что-то запустить, а данные о камере и местоположении отбрасываются. Картинка из интернета скачивается через загрузчик, который отклоняет частные и внутренние адреса, заново проверяет каждый редирект и сдаётся через 10 секунд или после 10 МБ. А поскольку проверка содержимого читает текст, а не картинки, статья с импортированными картинками всегда ждёт человека.

Что происходит, когда вы нажимаете «Импортировать»

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

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

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

Если вы делаете импорт

  • Превращайте каждый файл в черновик, а публикацию делайте опцией, которую включают вручную.

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

  • Прямо скажите, что «только для чат-бота» не значит «закрыто».

  • Используйте текстовый слой и отправляйте в ИИ-модель только те страницы, которым это нужно.

  • Перечисляйте то, что не удалось прочитать, а не додумывайте.

  • Считайте расход один раз, до дорогой части, и никогда за отклонённые файлы.

  • Не доверяйте файлу: никаких скриптов, никаких id, которые создали не вы, а картинки из интернета — только через загрузчик, который отклоняет частные адреса.

  • Научите чат находить фрагменты глубоко в длинных статьях, прежде чем предлагать людям их импортировать.

Читайте также