Тридцать пять вопросов на стенде, где данные сгенерированы, а эталонные запросы написаны отдельно. Каждый вопрос задан трижды. Верное число получилось в двадцати случаях из ста пяти.
Стенд устроен так, что правильный ответ известен заранее: данные сгенерированы, беспорядок в них заложен намеренно, эталонные запросы написаны отдельно от того, что видит агент. Сверять есть с чем.
У шести вопросов из тридцати пяти верного ответа нет вовсе — так они и помечены в файле задания. Это вопросы вроде «стоит ли расширять промо» или «когда клиент считается ушедшим»: на них нет числа, которое можно было бы назвать правильным.
Остальные восемьдесят пять ячеек — не поломки модели. Это шесть разных мест, где обрывается путь от вопроса к ответу, и только часть из них вообще про агента.
| Исход | Ячеек | Что это значит |
|---|---|---|
| Ответил и сошёлся | 20 | число совпало с эталоном |
| Ответил и не сошёлся | 9 | число или тип результата не тот |
| Ответил, проверить нельзя | 10 | сверка была, привязки к повтору нет |
| Ответил, эталона нет | 4 | верного ответа не существует |
| Переспросил | 50 | не стал считать, назвал что мешает |
| Отказался | 12 | в данных нет нужного объекта |
То, ради чего всё затевалось. Вопрос «Сколько активных клиентов сейчас», ответ в одну строку.
WITH cur AS (SELECT ts FROM world_cursor) SELECT COUNT(DISTINCT foi.customer_id) AS active_customers FROM fct_order_items foi, cur WHERE foi.status = 'completed' AND foi.is_guest_order = false AND foi.received_at_utc <= cur.ts AND foi.ordered_at_utc > cur.ts - INTERVAL '90 days' AND foi.ordered_at_utc <= cur.ts
Результат 21580, эталон 21580.
Двадцать ячеек — это восемь вопросов. У пяти сошлись все три повтора, у двух — два из трёх, у одного — один.
Рассуждение агента в этой ячейке короткое, и это тоже показатель:
Вопрос «Выросла ли выручка год к году». Три попытки, в каждой по два варианта — шесть запросов, ноль попаданий.
Рассуждение аккуратное. Промах в другом.
2024-01-01 00:00:00 — метка периодаСпрашивали процент, ответил суммами по годам с метками. Процента среди шести вариантов нет вообще. Это промах не в числе, а в форме результата — и заметить его можно только зная, чего ждали.
Вопрос «Сколько заказов в среднем на клиента». Эталон 5.77, агент дал три варианта, первый — 5.16.
В записях сверки сказано, что у этого вопроса верным оказался один повтор из трёх. Какой именно — не записано. Вердикт привязан к вопросу, а не к ячейке.
Это единственный из шести исходов, который целиком про измеритель, а не про агента. Десять ячеек лежат отдельным классом, а не угаданы.
Вопрос «Есть ли смысл в гостевых заказах или они разовые». Эталона у него нет по построению — это исследовательский вопрос, а не метрика.
Агент это заметил и всё равно посчитал:
Четыре ячейки на двух вопросах. Отсутствие верного ответа не мешает выдать число — мешает только проверить его.
Самый частый исход. Почти половина всех ячеек: агент останавливается и говорит, чего не хватает.
Вопрос «Какой средний чек». Метрики с таким именем в слое нет, поэтому открыты все решения сразу.
Пятьдесят ячеек делятся дальше: в восемнадцати агент назвал ровно ту развилку, которая заложена в вопрос; в шести не назвал ожидаемую; в двадцати шести у вопроса не было размеченных развилок, поэтому сравнивать оказалось не с чем. Последнее — свойство разметки, а не поведения агента.
Двенадцать ячеек на шести вопросах. Ни один отказ не про то, что чего-то не донесли в контекст.
| Вопрос | Ячеек | Почему |
|---|---|---|
| Просела ли конверсия после ноябрьского промо? | 3 | в данных нет трафика — у конверсии нет знаменателя |
| Что выгоднее — удерживать старых или привлекать новых? | 3 | нет затрат на привлечение и удержание |
| Сколько у нас будет активных клиентов к концу года? | 3 | это прогноз, а в базе только факт до курсора |
| Мобильные покупают иначе, чем с десктопа? | 1 | признака устройства нет, есть канал регистрации |
| Стоит ли расширять промо на все категории? | 1 | это решение, а не метрика |
| Когда клиент считается ушедшим? | 1 | определения оттока нет в слое |
Четыре причины: нет объекта в данных, нет определения в слое, вопрос требует решения, а не числа, и вопрос про будущее. Разбивка моя, по чтению двенадцати текстов.
Отказывается агент не молча — в каждом тексте сказано, что посчитать всё-таки можно и почему это не будет ответом. А один отказ устроен иначе: там он нашёл поле, которое напрашивается, и объяснил, почему брать его нельзя.
Это уже не отказ от нехватки данных, а разбор подмены: поле похоже на нужное и называется почти как нужное, поэтому его легко взять по ошибке.
Семнадцать вопросов из тридцати пяти не дали ни одного запроса. Ни в одном из трёх повторов. Это не «иногда не справляется» — это половина сетки, на которой агент до SQL не доходит вовсе.
Ошибка — свойство вопроса, а не случайность. Девять ячеек с неверным числом приходятся ровно на три вопроса, по три ячейки каждый. Не «ошибается в девяти процентах случаев», а «есть три вопроса, на которых ошибается всегда».
Двадцать четыре вопроса однородны: три повтора дают один и тот же исход. У одиннадцати повторы разошлись — это вопросы на границе, где поведение неустойчиво. Доля таких вопросов — готовая мера, её можно считать на любом стенде и сравнивать между прогонами.
Промах отбора контекста агент замечает и называет вслух. В тринадцати ячейках он пишет, что нужной таблицы нет в схеме. На стенде она есть — её не подали в контекст. Это нижняя оценка: столько раз он захотел таблицу, которой ему не дали, и сказал об этом. Сколько раз не захотел или не сказал — неизвестно.
Правило разнесения по классам записано и закоммичено до счёта, классы не пересекаются, сумма сходится к ста пяти. Каждая ячейка имеет адрес записи, все выдержки скопированы программой, а не набраны руками.
Два долга, о которых стоит знать. Вердикт «сошлось с эталоном» привязан к предмету, а не к ячейке: для десяти ячеек восстановить, какой повтор сошёлся, нельзя. И имя файла лога строилось из времени с точностью до секунды, поэтому пять ячеек, запущенных в одну секунду, затёрли друг друга — эти записи потеряны.
Один стенд, одна предметная область, двадцать одна таблица. Числа отсюда не переносятся, переносится устройство.
Классификация исходов моя. В рабочих записях классов восемь: три подвида уточнения разведены отдельно. Здесь они сведены в один исход, поэтому счёт однородных вопросов отличается на единицу.
Группировка причин отказа — тоже моё чтение двенадцати текстов, автоматической разметки причин нет.