Ассистент поддержки магазина «Полка» — ставим задачу, принимаем работу, считаем сроки и деньги, выпускаем, сопровождаем и выбираем модель
«Полка» решила добавить ИИ в поддержку. В списке функций вперемешку то, что модель делает хорошо, и то, что обычный код делает дешевле, быстрее и без ошибок. Первое, что должен уметь аналитик, — отличать одно от другого до начала разработки.
Калькулятор на вопрос «сколько будет 17 × 24» отвечает «408» и завтра ответит так же. Знакомый на вопрос «какой фильм посмотреть» отвечает по-разному — и это не значит, что он сломался.
Модель — советчик, а не калькулятор. У её ответа нет единственно верного значения, зато есть доля попаданий. Отсюда всё остальное в этом тренажёре: такую функцию нельзя ни поставить, ни принять теми же словами, что обычную.
Задайте вопрос формуле и модели по десять раз. Формула отвечает одинаково всегда; у модели ответ — распределение, и это не дефект, а свойство инструмента.
Пять настоящих сообщений из поддержки. Для каждого посмотрите, справится ли обычное правило — и что добавляет модель.
«Ассистент должен корректно отвечать на вопросы о доставке» — типичная формулировка, по которой невозможно ни принять работу, ни отказать. Требование к вероятностной функции состоит из трёх частей: на чём проверяем, какая доля достаточна и что происходит с остальной долей.
Сравните: «суп должен быть вкусным» и «суп солёный настолько, что из десяти человек восемь не просят досолить». Второе можно проверить, не поссорившись: берём десять человек и считаем.
С ИИ-функцией то же самое. Требование состоит из трёх частей: на чём проверяем (набор примеров), какая доля попаданий достаточна и что делает функция в остальных случаях. Без третьей части оставшиеся проценты превращаются в уверенную выдумку.
Включайте части и смотрите, что получается: можно ли по такому требованию принять работу и о чём будут спорить на приёмке.
Разработка говорит «готово», заказчик говорит «плохо отвечает». Нажимайте «Дальше» — пройдём приёмку по шагам и увидим, на каком из них спор заканчивается.
Покупатель спрашивает про возврат товара, купленного по акции три месяца назад. В базе знаний такого правила нет. Выберите поведение и посмотрите, чем кончится разговор.
Ассистент помечает обращения как претензии и поднимает их наверх очереди. Он ошибается двумя способами, и настройка порога — это выбор между ними, а не улучшение обеих сразу. Выбор делается по цене последствий.
Она может промолчать при пожаре — это пропуск. И может заорать от подгоревших тостов — это ложное срабатывание. Сделать её чувствительнее значит уменьшить первое и увеличить второе; сделать спокойнее — наоборот. Одновременно убрать оба нельзя.
Поэтому настройка порога — это не «улучшить качество», а выбор, какая ошибка вам дороже. В квартире пропуск пожара дороже воплей от тостов. В автоматическом возврате денег наоборот.
Двигайте порог уверенности. Слева — что происходит с пропусками и ложными срабатываниями, справа — во что это обходится за неделю.
Демонстрация прошла отлично, через неделю после запуска поддержка прислала тридцать неверных ответов. Дело не в количестве примеров, а в отборе: придуманные командой вопросы систематически проще реальных.
Если студент сам выбрал двенадцать вопросов и ответил на них — вы узнали, что он выучил эти двенадцать. О том, знает ли он предмет, вы не узнали ничего.
Демонстрация ИИ-функции устроена так же: вопросы придумывает команда, и придумывает она типичные. Проверка — это набор реальных обращений с заранее известными правильными ответами, зафиксированный и одинаковый от прогона к прогону. Иначе сравнивать «стало лучше или хуже» не с чем.
Вот восемь сообщений из вчерашней поддержки. Отметьте те, что положили бы в набор для проверки, — и посмотрите, что получилось.
Соберите набор из типов примеров, а потом выкатите одну из трёх «поломок» новой версии. Симулятор покажет, заметит ли её ваш набор до релиза.
Факты о магазине — сроки, тарифы, правила возврата — модель не знает и знать не может. Если она на них отвечает без документа, она их придумывает, и звучит это убедительно. Ниже видно, как один и тот же вопрос ведёт себя при разном составе источников.
Спросите у нового сотрудника в первый день, сколько дней у вас на возврат. Честный ответ — «не знаю, посмотрю в правилах». Модель ведёт себя иначе: она отвечает уверенно и складно, потому что видела тысячи похожих правил у других магазинов.
Поэтому фактические ответы берут не из модели, а из документов: находят нужный кусок и дают его модели вместе с вопросом. Нет куска — нет ответа: лучше «не нашёл», чем правдоподобная выдумка, на которую потом сошлются в претензии.
Включите источники, выберите вопрос — и посмотрите, что найдётся и что окажется в ответе.
«Мы отправляем только вопрос покупателя» — так отвечают почти всегда, и почти всегда это неправда. Наружу уходит весь запрос целиком: инструкция, найденные фрагменты, история и подставленный контекст.
Обращение к модели — это письмо в чужую компанию. Она не «подключается к вашей базе» и ничего не знает о вашем магазине: она видит ровно тот текст, который вы положили в конверт.
Отсюда два вопроса, которые задают до запуска, а не после. Первый: что именно мы кладём в конверт — инструкцию, вопрос, найденные документы, историю, карточку заказа с адресом? Второй: что получатель делает с письмами — хранит, как долго, учится ли на них. Ответ на второй лежит в договоре.
Включайте куски запроса и маскирование. Справа — то, что реально уйдёт в чужой сервис, и оценка риска.
Тот же запрос, но глазами чужой компании: это строка в их журнале. Переключите условия договора и посмотрите, что это меняет.
Руководитель «Полки» спрашивает: «Сколько делать ассистента?» Честный ответ — не одно число, а диапазон и то, от чего он зависит. У ИИ-функции часть работ — исследование: заранее неизвестно, со скольких попыток подсказка и поиск дадут нужную долю верных ответов.
Спросите соседа, сколько ехать до дачи. Он не скажет «58 минут». Он скажет: «Обычно час. Если дорога пустая — минут сорок пять. Если авария на шоссе — все два с половиной. Выезжай с запасом». Это и есть оценка тремя числами: лучший случай, обычный и худший.
Теперь ремонт. Сколько клеить обои — понятно: метры стен известны. Сколько менять проводку в старом доме — непонятно, пока не вскроешь стену. Обычная разработка «Полки» — экран оператора, связь с системой заказов — это обои. Добиться, чтобы ассистент отвечал верно в 85% случаев, — это стена: худший случай отстоит от обычного в разы.
По каждой работе три числа в днях: если всё пойдёт гладко (О), как обычно (В) и если не повезёт (П). Калькулятор считает ожидаемое и разброс — по работе и по проекту. Меняйте числа и смотрите, какие работы раздувают диапазон.
Прогноз на месяц вперёд звучит как «скорее тепло». На неделю — «от +15 до +22». На завтра — «+18, к вечеру дождь». Синоптик не поумнел за месяц, он узнал больше. С оценкой проекта так же: на этапе идеи честный разброс — в разы, к пилоту — проценты.
У ИИ-функции на этом пути есть развилка, которой у обычной нет: опыт может не сработать. Прототип прогоняют на эталонных вопросах, и если он не дотянул до заранее названной планки, проект не «чуть задерживается», а останавливается или меняет объём. Эту точку вписывают в план с самого начала.
Проходите вехи и смотрите, как сужается диапазон. Середина воронки — ожидаемое из калькулятора выше. На вехе «прототип» выберите, чем закончился опыт.
Коробки, грузчиков и машину вспоминают все. Переоформить интернет, забрать ключи от почтового ящика, вымыть старую квартиру и сдать её хозяину — вспоминают в последний вечер. Эти дела не сложные, они просто не видны, пока о них не подумаешь, — и именно они срывают переезд.
Структура работ — такой же список, разложенный по коробкам: какие пакеты работ нужны, чтобы функцию можно было не только написать, но и принять и содержать. У ИИ-функции невидимые дела — разметка эталонных ответов, экзамен на эталонах, наблюдение за качеством после выкатки и обновление базы знаний.
Так выглядит план, который принесла команда. Включайте и выключайте пакеты работ, затем нажмите «Прожить полгода» — и посмотрите, что случится с тем, чего в плане нет.
Искать протечку можно бесконечно: каждый вечер кажется, что ещё чуть-чуть — и найдём. Опытный хозяин договаривается иначе: «Два выходных ищем сами. Не нашли — зовём кровельщика и меняем кусок кровли целиком». Срок поиска и решение «что делаем, если не нашли» назначены до начала, а не тогда, когда жалко потраченного.
Исследовательская задача в ИИ-проекте устроена так же: ограничение по времени и критерий «продолжаем / останавливаемся», записанный заранее. Без них исследование не заканчивается никогда — или заканчивается словами «в целом неплохо».
Команда подбирает подсказку и поиск, чтобы на 150 эталонных вопросах ассистент отвечал верно не меньше чем в 85% случаев. Выберите, как поведёт себя задача, задайте ограничение — и посмотрите, чем кончится.
Риск — то, что ещё не случилось, но может, и обойдётся дорого, если случится. У ИИ-функции есть риски, которых у обычной нет: модель выдумывает, поставщик меняет модель без спроса, покупатель пишет в чат инструкции вместо вопроса. Их не держат в голове — их записывают, оценивают и каждому назначают реакцию и хозяина.
Перед поездкой любой человек ведёт реестр рисков, просто не называет его так. Дождь — вероятно, но не страшно: берём зонт (снизить). Украдут паспорт — маловероятно, но очень больно: копия в телефоне и страховка (снизить и передать — деньги вернёт страховая). Сезон ураганов — меняем даты (избежать). Очередь на границе — закладываем лишний час и не переживаем (принять).
Проектный реестр — тот же список, только у каждого риска есть хозяин (кто следит) и признак срабатывания (по чему поймём, что началось). Без признака риск замечают, когда он уже стал проблемой.
Девять рисков ассистента «Полки» стоят на сетке «вероятность × влияние». Выберите риск — кружком на сетке или в списке, — назначьте реакцию и посмотрите, куда он сдвинется.
В бассейне за безопасность отвечают четыре вещи. Правила и дежурный спасатель — кто за что отвечает (управлять). Где глубоко и кто сегодня плавает — дети или спортсмены (понять контекст). Сколько раз за смену свистели и в каком углу чаще захлёбываются (измерить). Натянуть дорожки, поставить второго спасателя к глубокой части (действовать).
Национальный институт стандартов и технологий США (NIST) описал для ИИ ровно эти четыре функции — открытая рамка AI Risk Management Framework: Govern, Map, Measure, Manage. Управление стоит в центре и касается всего, остальные три идут по кругу.
Нажмите на функцию — увидите, что она значит для ассистента. Переключатель под текстом «выключает» её: посмотрите, что тогда случится.
Ремонт кухни в разгаре, плитка куплена. Хозяйка говорит: «А давайте ещё тёплый пол». Плохой прораб отвечает «конечно» — и через месяц ремонт идёт втрое дольше, а смета непонятно куда делась. Хороший говорит: «Можно. Это плюс неделя и плюс 60 тысяч, плитку класть позже. Или делаем пол вторым этапом. Решайте — запишу».
Запрос на изменение — то же самое на бумаге: что просят, что это меняет и какое решение принято. Он защищает от расползания объёма, когда каждое «а давайте ещё» по отдельности мелочь, а вместе — второй проект.
Середина проекта. Заказчик просит добавить голос или ещё два языка. Выберите просьбу и решение — увидите, что меняется и чем всё кончится.
Рыбка стоит сто рублей. Аквариум, фильтр, обогреватель, лампа, корм, смена воды по субботам, анализы воды и лекарства, когда что-то пошло не так, — вот куда уходят деньги и время. Рыбка — то, что видно; содержание — то, что стоит.
Инженеры Google описали это для систем машинного обучения в статье «Hidden Technical Debt in Machine Learning Systems» (Sculley и соавторы, 2015): код модели — маленький квадратик в середине, а вокруг — сбор и проверка данных, настройки, клей между частями и наблюдение. Всё это надо сопровождать, и чем сильнее части завязаны друг на друга, тем дороже каждое изменение.
Размер блока — часы сопровождения в месяц. Включайте «долговые» привычки команды и смотрите, как растут часы через год.
Вопрос «сколько стоит ИИ» распадается на три: сколько стоит один ответ, сколько стоит сделать и сколько стоит содержать. Первое считают из токенов, второе — из часов, третье обычно забывают. Все цены на этой вкладке условные — это пример; в поля можно вписать цены из своего договора.
Обращение к модели оплачивается как такси со счётчиком: за то, что вы ей отправили (вход), и за то, что она написала (выход), — причём выход дороже. Единица счёта — токен, кусочек слова: русское слово — в среднем два-три токена.
С агентом, который делает несколько шагов, есть подвох. Представьте справочную, где перед каждым следующим вопросом вы заново зачитываете весь предыдущий разговор — и платите за каждое слово. Так и работает агент: каждый ход отправляет модели всю переписку целиком, поэтому вход растёт с каждым ходом.
Два живых примера: ассистент «Полки» отвечает одним обращением к модели, а учебный агент «Навигатор» школы делает 3–5 ходов (ищет в материалах, читает, отвечает) и тратит 5–7 тысяч токенов на вопрос. Выберите пример или впишите свои числа.
Ездите редко — дешевле такси: платите за каждую поездку. Ездите каждый день — выгоднее машина в аренду: плата за месяц одна и та же, сколько ни катайся, но бензин и ремонт ваши. Есть ещё бесплатный автобус — по расписанию, с лимитом мест и только для тех, кому положен пропуск.
С моделью то же самое. API поставщика — такси: плата за токены. Своя модель на сервере с видеокартой — аренда машины: постоянная плата в месяц плюс люди, которые её содержат. Бесплатный тариф — автобус: лимит запросов и условия, например «только некоммерческое использование». Точка безубыточности — число поездок, при котором такси и аренда стоят одинаково.
Двигайте число вопросов в день. Цены — пример; подставьте свои.
Своя модель должна поместиться в память видеокарты, как коробка книг — в шкаф. Сколько места займёт коробка: число книг × толщина одной книги. Число книг — параметры модели (миллиарды), толщина — сколько байт уходит на каждый параметр. Сжатие — как перепечатать книги в мягкой обложке: тоньше, но часть картинок теряется — ответы становятся хуже.
Правило на глаз: миллиарды параметров × байт на параметр × 1,2 на запас + память на разговор. 16 бит — 2 байта, 8 бит — 1 байт, 4 бита — около половины байта. Память на разговор (контекст) растёт с его длиной.
Выберите модель, сжатие, длину разговора и сервер. Начните с примера: модель на 8 миллиардов параметров в 5-битном сжатии и сервер с 4 ГБ видеопамяти.
Кофемашина стоит сорок тысяч. Потом зёрна каждую неделю, чистка от накипи раз в месяц, ремонт раз в два года. Через три года машина — меньше половины того, во что обошёлся кофе.
Стоимость владения — всё вместе за срок жизни: разовые затраты (сделать) и ежемесячные (содержать). У ИИ-функции ежемесячные — это не только счёт за токены, но и люди: наблюдение за качеством, сопровождение, обновление эталонов и базы знаний.
Разовые затраты — один раз, ежемесячные — каждый месяц, пока функция живёт. Поменяйте числа и срок и посмотрите, какую долю занимает сама модель.
Посудомойка экономит полчаса в день, а каждый цикл стоит воды, электричества и таблетку. Окупается она, если ваши полчаса дороже цикла — и если высвободившееся время вам есть куда деть.
Юнит-экономика ИИ-функции — та же арифметика на один ответ: сколько он стоит (модель плюс доля сопровождения) и сколько приносит (сэкономленные минуты оператора «Полки»). Подвох — в бесполезных черновиках: оператор их читает, выбрасывает и пишет ответ сам, то есть теряет время.
Двигайте долю бесполезных черновиков — это главная ручка. Остальные числа можно поменять.
Плохой прораб говорит «миллион» — и через два месяца просит ещё. Хороший говорит: «От 900 тысяч до 1,3 миллиона. Мебель сюда не входит. Десять процентов — на сюрпризы за стенами. Если за стеной гниль — остановимся и покажем, прежде чем тратить дальше».
Защита сметы перед бизнесом строится так же: диапазон, а не точка; что входит и что нет; резерв, привязанный к рискам; заранее названная точка остановки; и что бизнес получит в часах и деньгах.
Выберите вопрос и ответ — увидите, как он прозвучит для того, кто подписывает бюджет.
Ассистент «Полки» начался не с выкатки, а с фразы «а может, сюда ИИ?». Между идеей и работающей функцией — несколько стадий, и каждая отвечает на свой вопрос. Главное правило: стадия заканчивается решением «идём дальше, не идём или меняем объём», и принимают его по числу, названному заранее.
Хозяйка хочет купить хлебопечку. Прежде чем тратиться, она спрашивает себя: хлеб у нас едят каждый день? Есть ли место на кухне? Что будет, если хлеб не получится, — останемся без завтрака или купим батон у дома? И не проще ли сразу тот батон?
Идею для ИИ проверяют теми же вопросами, только называют их иначе: есть ли у задачи единственно верный ответ (если есть — нужна формула, а не модель), сколько она сэкономит, есть ли данные, по которым отвечать, во что обойдётся ошибка и что будет, если поставщик модели уйдёт.
Пять идей, которые принесли в «Полку». Выберите идею и сами ответьте на пять вопросов — вердикт посчитается из ваших ответов. Потом откройте разбор и сравните.
Прежде чем открыть кафе, вы печёте пирог для друзей: нравится ли вообще (демо). Потом неделю торгуете с лотка на ярмарке рядом с ларьком магазинных пирожков: покупают ли ваши — и лучше ли они магазинных (проба). Потом снимаете маленький угол в торговом центре: настоящие покупатели, настоящие деньги, санитарная книжка (минимальная рабочая версия, MVP). И только потом — кафе с поставщиками, сменами и бухгалтером (эксплуатация).
Никто не арендует зал после первого удачного пирога. И лоток с ярмарки потом не превращают в кафе — его разбирают. Так же поступают с кодом пробы: он написан, чтобы узнать, а не чтобы жить.
Проходите стадии. На пробе выберите, как ассистент выступил против простого решения — поиска по частым вопросам (FAQ), на MVP — откуда берётся код. Посмотрите, где путь заканчивается и сколько к этому моменту потрачено.
Бабушка говорит: «На кефире оладьи пышнее». Мама не верит. Можно спорить до вечера, а можно проверить честно: две миски, одна мука, одна сковорода; пробуют пятеро, которые не знают, где какие; и до того как пробовать, договорились: если кефирные выберут хотя бы четверо — переходим на кефир.
План проверки ИИ-функции — та же договорённость на бумаге: что хотим доказать, на чём, каким числом, за какой срок и какое решение примем при каждом исходе. И обязательно вторая миска — простое решение без ИИ, например поиск по частым вопросам. Если ассистент не лучше поиска, платить за него незачем.
Соберите план из кусков, потом прогоните его с разными исходами — и посмотрите, получается ли решение без спора.
Хороший мастер в старой квартире говорит: «Вскрою стену — пятнадцать тысяч. Покажу, что там, и тогда назову цену остального». Плохой сразу называет двести тысяч — и либо заложил в них страх неизвестности, либо через месяц попросит ещё.
Договор на ИИ-функцию строят так же: платят по стадиям, а у исследования есть потолок бюджета — сумма, которую заказчик согласен потерять, чтобы узнать ответ. Цену следующей стадии называют по итогам предыдущей.
Выберите, как устроен договор и чем кончилась проба. Суммы условные.
Новая подсказка готова, на эталонах — 89% против 87% у текущей. Включаем всем? Ещё нет. Между «сдала экзамен» и «отвечает всем покупателям» стоят несколько ворот, и у каждых заранее написано, что значит «прошли» и что делаем, если нет.
Повар придумал соус. Сначала пробует его сам, строго по рецепту (экзамен). Потом проверяет неудобные случаи: что если гость аллергик, что если попросит «поострее» (атаки и недопустимое). Потом неделю готовит новый соус рядом со старым и даёт пробовать официантам, а гостям несёт старый (теневой прогон). Потом подаёт его за двумя столиками из двадцати и смотрит на тарелки (доля гостей). И только потом вписывает в меню.
На каждом шаге повар заранее знает, при каком исходе вернётся назад. Чем дальше шаг, тем больше людей увидит ошибку, — поэтому дешёвые проверки идут первыми.
Выберите, что на самом деле сломано в новой версии, и пропустите её через ворота. Уберите какие-то ворота — и посмотрите, куда уедет поломка. Нажмите на ворота, чтобы увидеть критерий прохода.
После перевозки пианино настройщик не играет весь репертуар — он берёт несколько одних и тех же аккордов: в каждом регистре, тихо и громко. По ним за минуту слышно, что сдвинулось. Аккорды всегда одни и те же — иначе не с чем сравнить.
Сигнальные вопросы — то же для ассистента: два-три десятка неизменных вопросов, которые прогоняют после любой смены — модели, подсказки, базы знаний, поставщика. Это не экзамен на 1 500 вопросов, а быстрый датчик: каждая тема, правильный отказ, попытка обмана и факт, который недавно менялся.
Отметьте вопросы, которые возьмёте в набор. Потом выберите, что поменяли, и посмотрите, заметит ли набор поломку.
Сеть магазинов меняет поставщика молока, только если новое молоко не хуже старого сразу по трём пунктам: вкус, доставка вовремя, цена. И проверяют не «в среднем по сети», а в каждом районе: если на окраину молоко приезжает кислым, средняя по сети это спрячет.
Новая версия ассистента — претендент, текущая — чемпион. Претендент занимает место, только если он не хуже по качеству, по надёжности и по пользе для бизнеса — и не в среднем, а в каждой теме и каждом канале.
Выберите претендента. Сначала посмотрите только на среднее, потом раскройте темы и каналы. В столбцах — доля верных, ошибки и таймауты, время до первого слова и доля решённых без оператора. «Не хуже» здесь — с допуском на шум: доля верных и решённых не ниже чем на пункт, ошибки — не выше чем на 0,1 пункта, задержка — не дольше чем на 0,2 с.
Поменяли дворники — проверили, что не скрипят. Поменяли колёса — проверили давление и проехали круг. Поменяли двигатель — заново техосмотр целиком. Глубина проверки зависит от того, что меняли, а не от того, сколько времени прошло.
Ворота проходят не один раз в жизни, а после каждого изменения, которое может поменять ответы. Выберите, что поменялось.
Охранник клуба ошибается двумя способами: пропускает того, кто потом устроит драку, и разворачивает обычного гостя, потому что тот «странно выглядит». Строже охранник — меньше драк и больше обиженных гостей. Это та же ручка, что на вкладке «Порог».
Защитный фильтр перед ассистентом ловит недопустимое: попытки внедрить инструкции, просьбы о чужих заказах. Его принимают по обеим ошибкам сразу, на зафиксированном наборе и с ценой каждой ошибки для «Полки». Если ни одно положение ручки не проходит оба критерия, меняют фильтр, а не ищут удачную точку.
Проверочный набор: 50 недопустимых сообщений и 950 обычных. Критерий: пропущено не больше 4% недопустимых, заблокировано не больше 3% обычных. Цена пропуска — 5 000 ₽ (обещание денег, чужой адрес), ложной блокировки — 60 ₽ (покупатель уходит к оператору). Двигайте строгость.
На кухне все приборы в порядке: плита греет, холодильник морозит, заказы выходят вовремя. А суп пересолен. Ни одна лампочка этого не покажет — только тот, кто попробует.
У ИИ-функции так же: ошибки, задержка и нагрузка — лампочки техники. Они могут гореть зелёным, пока доля верных ответов падает. Поэтому при выкатке на долю обращений смотрят ещё и на выборочную разметку ответов людьми и на жалобы — и откатывают, когда падает именно она.
Три новые подсказки, и про каждую неизвестно, хороша ли она. Выберите одну, задайте долю обращений и проживайте дни. Что-то не так — откатывайте; всё хорошо — доводите до 100%. Старший оператор размечает до 40 ответов новой версии в день.
Ассистент отвечает всем покупателям. Работа не закончилась — она сменила вид. Модель не падает, как сервер: она тихо начинает отвечать хуже, а журнал ошибок при этом пуст. Ниже — что мерить на живых обращениях, как замечать дрейф и что делать, когда он случился.
Навигатор в машине не ломается — он устаревает. Построили развязку, закрыли мост на ремонт, а он уверенно ведёт старой дорогой. Ошибку он не покажет: с его точки зрения всё в порядке. Заметить это можно, только сверяясь с дорогой, а лечится это обновлением карт.
Ассистент «Полки» устаревает так же. Началась акция — у покупателей новые вопросы. Магазин поменял правила возврата — в базе знаний старые. Поставщик тихо обновил модель — она по-другому понимает подсказку. Это и есть дрейф: качество плывёт, а ни одной ошибки в журнале нет.
Семь чисел на панели ассистента. Нажмите на число — увидите, как его считают, какая норма у «Полки», что оно показывает и, главное, чего оно не видит.
Хозяйка раз в неделю ставит на весы пачку сахара — ровно килограмм. Покажут 940 граммов — весы врут, и никакой рецепт не спасёт. Это датчик: одна и та же вещь с известным ответом.
Ночной прогон эталонов — та же пачка сахара. Каждую ночь ассистент отвечает на одни и те же вопросы с известными ответами. Доля верных упала, а вы ничего не меняли — поменялось что-то вокруг: модель у поставщика или данные. Но у датчика есть слепое пятно: если поменялись правила магазина, а эталоны старые, он продолжит показывать норму.
Проживайте неделю за неделей. Когда что-то случается, выберите реакцию — и посмотрите, что будет с числами дальше. Следите не только за журналом ошибок.
Новый пирог не удался, и пекарь решает вернуться к вчерашнему рецепту. Но мука уже другая, масло другое, и печь он вчера подкрутил. Получится не вчерашний пирог, а третий — тот, который никто ни разу не пробовал.
У ассистента «рецепт» состоит из четырёх частей: модель, подсказка, индекс базы знаний и набор эталонов, на котором их проверяли вместе. Это одна версия. Откатили подсказку, а индекс оставили новый — получили сочетание, которого не проверял ни один прогон.
Версия 13 провалила выборочную разметку, нужно вернуться к версии 12. Попробуйте откатывать по одной части — и целиком.
Шесть сигналов за неделю: оценки покупателей, жалобы, сообщение оператора. Нажмите на каждый — увидите, куда он уходит после разбора. Эталоны растут из жизни, а не из головы команды.
В смете сада саженцы — самое заметное и самое дешёвое. Дальше каждый месяц: полив, подрезка, подкормка, борьба с вредителями. Если в плане только саженцы, через год там бурьян.
Ежемесячное сопровождение ассистента — это обновление базы знаний, выборочная разметка, проверка после каждого обновления у поставщика и контроль расходов. На вкладке «Смета» это ежемесячная корзина стоимости владения; здесь видно, из чего она состоит.
Числа — пример; впишите свои. Ниже — сравнение с тем, что заложено на людей в стоимости владения на вкладке «Смета».
Эта вкладка — про самое начало, до первой строчки кода. Как переписать «должна корректно отвечать», разобрано на вкладке «Требование». Здесь — остальное, что аналитик пишет до старта: нефункциональные требования, у которых у ИИ-функции есть свои пункты; вопросы заказчику, без ответов на которые оценка — гадание; и таблица намерений диалогового ассистента: что он делает, что проверяет и какой след оставляет.
Нанимая человека в справочное бюро, вы хотите не только «чтобы быстро отвечал». Чтобы не придумывал расписание, когда не знает. Честно говорил «не знаю, спросите у дежурного». Показывал, где это написано. Узнавал о новом расписании в тот же день, а не через месяц. Мог объяснить, почему ответил так. Одинаково хорошо отвечал студенту, бабушке с тележкой и человеку, который говорит по-казахски. Стоил не как директор вокзала. И вовремя звал старшего.
Требования «не про то, что делает, а про то, как» называют нефункциональными (НФТ). Для обычной программы есть готовый шаблон — стандарт качества ISO/IEC 25010: производительность, надёжность, защищённость и так далее. У ИИ-функции к нему добавляются пункты, которых в шаблоне нет, — те самые «не придумывал», «честно говорил „не знаю“», «показывал, где написано». И у каждого пункта должны быть три вещи: что на что делим, как меряем и какое число достаточно.
Десять пунктов: три из обычного шаблона и семь ИИ-качеств. Выберите пункт, затем метрику, способ замера и порог. Расплывчатые формулировки — «быстро», «без ошибок», «всегда актуальна» — подсвечиваются красным: по ним нельзя ни принять работу, ни отказать.
Хороший прораб, прежде чем назвать цену ремонта, ходит по квартире и спрашивает. Что хотите получить в итоге? Что за стенами — проводку меняли? Можно ли шуметь по выходным? Кто будет жить здесь во время ремонта? К какой дате и сколько готовы потратить — и что важнее, если не уложимся? Кто потом будет следить за вытяжкой? Без ответов он честно скажет «от ста тысяч до миллиона» — и будет прав.
Перед оценкой ИИ-функции вопросы те же, только про другое: какую задачу решаем и как поймём, что решили; где лежат знания; чем грозит ошибка и кто за неё отвечает; можно ли отдавать данные наружу; с какими системами связываться; какая нагрузка; сроки и бюджет; кто будет сопровождать базу знаний. И важно не только что спросить, но и как: на вопрос «вы же хотите без ошибок?» все отвечают «да», и вы ничего не узнали.
Двенадцать вопросов, которые можно задать заказчику. Нажимайте на вопрос — увидите ответ «Полки» и что он меняет в решении. Следите за вилкой оценки: она сужается только от вопросов, ответ на которые меняет объём, архитектуру или состав работ.
Хороший официант понимает, чего хочет гость (намерение), и записывает заказ в чек (след): не будет чека — кухня не узнает, а гость не докажет, что заказывал. Если новый гость говорит «мне как обычно», официант не угадывает, а переспрашивает. Скидку по карте он не придумывает «на глаз», а пробивает на кассе: правило проверяет система. А если гость просит администратора, официант зовёт его и в двух словах пересказывает, в чём дело, — чтобы гостю не повторять всё сначала.
Требования к диалоговому ассистенту — это таблица таких правил: намерение → действие → след в системе, плюс что делать, когда намерение неясно, и когда звать человека.
Для каждого намерения покупателя выберите действие ассистента и след, который оно оставляет. Включите или выключите два общих правила. Ниже — восемь настоящих реплик: таблица прогоняется по ним сразу, и видно, где ассистент сломается.
Модель — не первое решение проекта, а одно из последних: её выбирают, когда уже есть требования, пороги и эталонный набор. Здесь — как выбрать модель на своих вопросах, а не по рейтингу; как описать готовую функцию в карточке, чтобы с ней можно было жить; и почему хорошее среднее ещё не значит, что функция работает для всех.
Выбирая няню, вы не берёте первую строчку из рейтинга «лучшие няни города». Вы зовёте трёх на пробный день — к своим детям, в свою квартиру, с вашим режимом — и смотрите, как каждая справится. Одна прекрасно учит английскому, но не умеет уложить младшего спать. А если детей нельзя уводить из дома, няня, которая работает только у себя, отпадает сразу, какой бы рейтинг у неё ни был.
С моделью так же. Рейтинг из интернета меряет её на чужих вопросах — чаще всего на английском и без ваших документов. Для «Полки» важно другое: как модель отвечает на 200 эталонных вопросов магазина, с его подсказкой и базой знаний; сколько выдумывает; умеет ли вызвать учёт заказов; как быстро и почём. А ограничение «данные наружу нельзя» — не вес в формуле, а фильтр: кто его не прошёл, выбывает до подсчёта.
Три условные модели: большая облачная, средняя облачная и своя открытая, которая работает на серверах магазина. Двигайте веса — побеждает разная модель. Переключите условие о данных и режим работы. Пороги НФТ — отсечка: кто их не прошёл, в выборе не участвует.
В коробке с лекарством лежит листок: от чего помогает, кому нельзя, как испытывали, какие бывают побочные эффекты, что делать, если стало хуже, кто производитель и до какого числа годно. Никто не читает его целиком — но когда что-то пошло не так, ответ ищут именно там.
У ИИ-функции такой листок называют карточкой — по образцу карточек моделей и системных карточек, которые публикуют разработчики моделей. В ней: назначение и границы («не даёт юридических советов»), кто пользуется, на каких данных работает, на чём проверяли и что вышло, известные слабости, риски и меры, кто владелец, как обжаловать решение, какие версии модели, подсказки и индекса и когда пересмотр. Карточку пишут для тех, кто будет жить с функцией: руководителя поддержки, оператора, покупателя, проверяющего через полгода.
Десять разделов. Выберите раздел и один из двух вариантов текста — конкретный или расплывчатый. Или загрузите карточку, которую прислал подрядчик, и найдите, что в ней не так: пустые и расплывчатые разделы подсветятся, а внизу — чем это грозит.
У кафе рейтинг 4,8 из 5 — прекрасное среднее. Но если прочитать отзывы вегетарианцев, у них сплошные двойки: в меню для них ничего нет. Их мало, и в среднем они тонут. Сто довольных мясоедов не делают кафе хорошим для того, кто не ест мясо.
С ИИ-функцией так же. 89% верных в среднем может скрывать, что на вопросах на казахском, о доставке на Дальний Восток или о доставке с подъёмом для маломобильных покупателей ассистент ошибается втрое чаще. Поэтому порог пишут на каждую группу, а не на среднее, и в каждой группе нужно достаточно вопросов: на восьми вопросах разброс такой, что вывод сделать нельзя.
Выберите разрез и посмотрите на доли верных в группах. Точка — что намерили, полоса — где на самом деле может быть доля при таком числе вопросов, вертикальная черта — порог. Переключите эталоны: «как в потоке» — 200 вопросов в той же пропорции, что приходят; «добрали» — в каждой группе не меньше 40.