У мене є репозиторій, у якому немає продукту. Там лежать самі правила: як має працювати мій ШІ-помічник, чого йому не можна, і програмки, які за цим стежать.
Правил там під сотню, сторожів близько тридцяти. Більшість з'явилась після того, як помічник щось наплутав, а я помітив це через тиждень.
Раз на день я все це перечісую. Ось що там відбувається.
2/
Починаю з журналів сесій усіх проєктів. Шукаю, де помічник зіскочив: щось порахував і сам додав причину, пообіцяв зробити і не зробив, кинув номер задачі без жодного пояснення.
Читаю не вибірково: беру всі проєкти за останній місяць і йду підряд, бо вибіркове читання завжди знаходить те, що я і так підозрював.
Найважливіші — випадки, де його зловив я. Означає, що жоден сторож не спрацював.
3/
Одна помилка мене не цікавить. Цікаво стає, коли та сама форма вилазить у різних проєктах.
Свіжий приклад. Помічник питає базу «скільки», отримує число і додає від себе «чому». Причини в даних немає, її ніхто не питав. Наступного дня те саме в іншому проєкті.
Значить це не поганий день, а механіка. Механіку можна закрити один раз і назавжди, а окремий випадок доведеться ловити руками до кінця життя.
4/
Далі рахую. Скільки разів за місяць, у скількох проєктах, скільки спрацювань були хибними.
Тут щоразу сюрприз. Те, що бісить щодня, трапилось двічі. Те, на що ніхто не скаржився, — сорок разів.
Окремо дивлюсь на хибні. Сторож, який помиляється в 40% випадків, шкідливіший за відсутнього: його обходять на автоматі, вже не читаючи, що він там пише.
5/
Правило — це просто текст. Модель прочитає і забуде під дедлайн.
Тому до кожного правила йде датчик: маленька програма, яка сама перевіряє і показує число.
Датчик доводжу двічі. Він мусить спіймати справжню помилку з журналу і промовчати на нормальній роботі. Обидва прогони лишаю тестом, бо інакше через місяць його тихо зламають і я про це не дізнаюсь.
6/
Найдивніший крок: викидати.
Цього тижня зніс сторожа, який вимагав фразу «що далі» в кінці кожної відповіді. Порахував: 78% усіх зауважень були його, і більшість закривались дописаним рядком. Дописав — і пішов далі, не зробивши нічого.
Правило, яке спрацьовує на все підряд, з часом перетворюється на ритуал: його виконують формально, аби відчепилось.
Найбільший виграш за місяць дало саме викидання.
7/
Читаю чужі відкриті набори правил для ШІ. Тільки не README.
Дивлюсь в історію змін: що люди спробували і потім прибрали. Ось там і видно, де автор уже обпікся, і це найцінніше, що взагалі є в репозиторії.
Іноді трапляється ідея, до якої я б сам не додумався. Наприклад, тримати ознаки готовності окремим файлом, де рядок можна тільки відмітити, але не стерти.
Ідеї беру, код майже ніколи.
8/
Правило їде в усі проєкти одразу, у мене їх за тридцять.
Далі найнудніше: перевірити, що воно справді доїхало. Читаю зафіксовану версію в кожному репозиторії і рахую, у скількох вона є.
Раніше я думав, що досить покласти файл у папку. Потім виявилось, що в половині проєктів воно так і лежало незафіксованим, тижнями.
Минулого тижня двоє тихо відстали.
9/
Навіщо.
Помилку ШІ не видно на око. Він помиляється тим самим рівним тоном, яким каже правду, і його «я перевірив» саме по собі не означає нічого.
Лишається нудне: рахувати, ставити датчики, доводити на справжніх помилках і чесно записувати, чого датчик не ловить.
Останнє найважче. Сторож, який мовчить, і сторож, який дивиться не туди, виглядають абсолютно однаково.