Как это устроено

Графики в ответе

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

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

Каждая диаграмма на этой странице отрисовывается тем же компонентом, который видят ваши посетители, на основе той же спецификации, которую выдает модель. Здесь нет скриншотов.

Что именно пишет модель

Блок кода рядом со словами:

```chart
{"type": "bar", "source": "passage:kb", "title": "Registration fee by market", "unit": "USD",
 "labels": ["Brazil", "Mexico", "Colombia", "Chile", "Peru", "Argentina"],
 "series": [{"name": "standard", "values": [4200, 2800, 1900, 2100, 2450, null]},
            {"name": "expedited", "values": [6300, 4100, 2600, 3050, 3400, null]}]}
```

which renders as:

Registration fee by marketИз базы знаний

В этом примере три элемента являются критически важными.

null, а не 0. Комиссия Аргентины не опубликована в материалах, поэтому числа нет — и нулевой столбец стал бы утверждением, которое материалы никогда не делали. Ноль — это значимое значение; «неизвестно» не равно нулю, и пустая ячейка говорит об этом там, где 0 соврал бы.

Текст остается. Диаграмма дополняет ответ, никогда не заменяя его. Telegram, WhatsApp и программы экранных дикторов получают тот же контент, что и компактная таблица, поэтому агент, который ответил бы только картинкой, ничего бы не ответил на половине своих каналов.

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

Числа должны быть в ваших материалах

Это та часть, которая важнее самой отрисовки.

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

Арифметика — нет. Те же модели, те же цитаты, просят рассчитать счет на основе базовой комиссии и ставки за превышение: 12 из 12 неверно. Каждое умножение было правильным, но каждая формула — неверной.

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

Проверка сравнивает числа во всех возможных формах записи — 4,200 и 4200, 25M и 25000000, 2500万 и 25 million. Она не проверяет единицы измерения и не всегда может определить, к какой из двух меток в одном предложении относится число. Это нижняя граница защиты от выдумывания, а не доказательство правильности.

Производные значения вычисляются, а не пишутся

Доли, темпы роста и накопительные итоги — это именно то, что модель неправильно вычисляет, и именно то, что делает диаграмму стоящей внимания. Поэтому модель не занимается расчетами.

Она передает верbatim-значения инструменту, называет желаемое преобразование — доля от общего, процентное изменение, накопительный итог — и платформа вычисляет серию в коде. Результат остается на сервере; модель пишет ссылку, и числа подставляются до отправки блока. У нее нет шанса ошибиться в том, что код только что вычислил верно.

Диаграмма говорит об этом явно: серия, вычисленная таким образом, помечена на самой диаграмме, потому что «скопировано из ваших материалов» и «рассчитано для вас» — это разные гарантии, и читатель заслуживает знать, на что он смотрит.

Диаграммы, с которыми можно говорить

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

Каждая диаграмма также экспортируется в CSV, а bar / sideways / line / area — это одно и то же предложение, рассказанное четырьмя способами, поэтому читатель может переключаться между ними. Pie, funnel, radar и scatter — это другие предложения — состав, отток, форма, корреляция — поэтому они не предлагают переключения.

Девять типов, и когда каждый из них уместен

Тип, между которым модель не может выбрать, — это то же самое, что и один тип. Каждый из них отвечает на разный вопрос, и выбор неправильного хуже, чем отсутствие рисунка: диаграмма все еще там, тихо говоря о чем-то другом.

bar — как сравниваются эти категории?

По умолчанию. Выбирайте его, когда не подходит ничего более специфичное.

Cases closed by teamИз результата инструмента

hbar — тот же вопрос с длинными метками

Названия категорий, являющиеся названиями стран или продуктов, перестают помещаться под вертикальными столбцами, и ось начинает поворачивать их на 45°. В горизонтальном положении они просто помещаются. Платформа автоматически переключается на этот тип после двенадцати категорий — не на линию, потому что у этих категорий нет порядка, а линия выдумала бы тренд.

Leads by marketИз результата инструмента

line — куда это движется?

Для категорий, которые действительно имеют порядок: месяцы, этапы, версии. Пропуски соединяются, а не разбиваются, потому что разрыв читается как две отдельные серии, а не как одно отсутствующее число.

Monthly recurring revenueИз результата инструмента

area — тот же тренд, когда важен объем

Используйте его, когда накопленное количество важнее темпа изменения.

Tickets receivedИз результата инструмента

stacked — сравнение, у которого также есть части

Не отдельный тип, а модификатор для bar, hbar и area: все еще сравнение, но каждый столбец раскрывается, чтобы показать, из чего он состоит.

Revenue by quarterИз результата инструмента

pie — из чего состоит это целое?

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

Where the questions come fromИз результата инструмента

funnel — где люди отсеиваются?

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

From visit to paidИз результата инструмента

radar — какую форму имеет каждый вариант?

Несколько объектов, сравниваемых по одним и тем же нескольким измерениям. Требуется, чтобы измерения были на сопоставимых шкалах: если поставить рейтинг 0–10 рядом со счетом 0–1,000,000, одна ось упрется в край, а другая ляжет на дно, поэтому платформа возвращается к столбцам.

Vendor comparisonИз результата инструмента

scatter — связаны ли эти две вещи?

Ровно две серии: первая — это x, вторая — y, а метки называют точки.

Answer length against satisfactionИз результата инструмента

table — когда ни один из вышеперечисленных не честен

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

Registration by marketИз базы знаний
daysfee (USD)
Brazil904,200
Mexico602,800
Colombia451,900
Chile552,100
Peru702,450
Argentina

Когда она молчит

Три числа — это нижний предел. «Выросло с 120k до 150k» — это предложение, а не столбчатая диаграмма, и рисовать его — шум. Вопросы да/нет и поиск единичных значений получают ответ, а не картинку. Не более двух диаграмм в одном ответе, и вторая только тогда, когда две меры выражены в разных единицах — платформа считает, поэтому модель не может убедить себя в третьей.

И если в этом раунде ничего не было извлечено, рисовать нечего. Агент говорит то, что знает, и то, чего не знает, — то же самое, что он делает со словами.

Включение

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