Microsoft Research представила Flint-interactive: язык для интерактивных графиков от ИИ-агентов

Microsoft Research в своём блоге представила Flint-interactive, язык для создания интерактивных визуализаций данных, построенный поверх Flint. Идея в том, чтобы ИИ-агенты (и люди) могли делать графики, которые читатель исследует сам: нажимает, фильтрует, масштабирует, подсвечивает элементы и связывает несколько графиков между собой. Вместо низкоуровневого кода визуализации поведение описывается через высокоуровневые семантические события и операторы обновления.
Исходная проблема, по описанию в блоге: ИИ-агенты хорошо анализируют данные и строят отчёты со статичными графиками, но для исследования данных нужна интерактивность, приблизить деталь, сравнить данные на разных графиках, выделить в документе текст, связанный с выбранным на графике элементом, и наоборот. Даже с сильными передовыми моделями остаются два препятствия. Первое, высокая стоимость генерации: агент редко выдаёт удовлетворительную интерактивную визуализацию с первого раза, а повторные циклы рассуждений, написания кода и отладки тратят токены и время. Второе, надёжность: выразительные интерактивные графики легко получаются с неудачной вёрсткой или сломанными взаимодействиями, а при исправлении можно внести новые проблемы. Встроенных возможностей интерактивности в некоторых библиотеках визуализации для нестандартных графиков не хватает. Причиной всего этого авторы блога называют отсутствие выразительного, но высокоуровневого языка для описания визуальных взаимодействий.
Как это устроено. Компилятор Flint переводит действия пользователя (клики, перетаскивания, нажатия клавиш) в семантические события, которые указывают, какие элементы графика и какие данные выбраны. В ответ на эти события высокоуровневые операторы обновляют визуализацию: например, set style подсвечивает данные, set annotation подписывает точку, set viewport двигает или масштабирует область просмотра. Компилятор берёт на себя определение попаданий по элементам и низкоуровневые изменения на холсте. Сам Flint Canvas, это state machine (машина состояний), которая отслеживает действия пользователя на холсте и управляет состоянием отрисовки. Таким образом визуальная логика (на стороне компилятора) отделена от логики взаимодействия (её задаёт пользователь или агент на смысловом уровне). Поскольку генерация событий и визуальные обновления компонуются между собой, та же модель связывает Flint с таблицами, текстом, другими графиками и виджетами, так строятся интерактивные истории и дашборды.
Три способа использования. Первый: в чате или на холсте через Flint-MCP и MCP Apps, в последнем релизе достаточно сказать агенту, что и с какими взаимодействиями нарисовать, и он создаёт interaction_spec вместе со спецификацией графика Flint и показывает интерактивный график прямо в разговоре. Второй: встроить в приложение через Flint Interactive Canvas, приложение обрабатывает семантические события обработчиками (например, чтобы отфильтровать таблицу, обновить другой график или изменить состояние приложения) и может отправлять операторы обновления на холст, чтобы виджеты управляли графиком. Третий: нестандартные взаимодействия сверх готовых шаблонов (preset) задаются через программный интерфейс, триггером и собственной функцией-обработчиком; например, обработчик может подсветить выбранную страну и подписать её названием, комбинируя set-style и set-annotation без работы с элементами, привязанными к конкретному средству отрисовки.
В конце блога приглашают попробовать: обычные пользователи могут подключить Flint в чате и попросить агента построить интерактивный график, разработчики приложений, собирать дашборды и истории на программном интерфейсе и передать своему кодирующему агенту навык interaction-author, а дизайнеры взаимодействий, разработать новое взаимодействие, оформить его как шаблон и предложить его на GitHub, расширяя словарь взаимодействий Flint.
Ключевые факты
- Flint-interactive, язык поверх Flint для описания интерактивности графиков: клики, фильтры, масштабирование, подсветка и взаимодействие между графиками.
- Пользователь или агент описывает поведение через семантические события и операторы обновления (set style, set annotation, set viewport), а не через низкоуровневый код визуализации.
- Компилятор Flint превращает клики, перетаскивания и нажатия клавиш в семантические события и берёт на себя сложные зависимости между логикой взаимодействия и отрисовкой.
- Использовать можно в чате или на холсте через Flint-MCP и MCP Apps, во встроенных приложениях через Flint Interactive Canvas или с собственными обработчиками через программный интерфейс.
- Та же модель связывает графики с таблицами, текстом и виджетами для интерактивных историй и дашбордов; дизайнеров приглашают предлагать новые готовые шаблоны взаимодействий на GitHub.
Почему это важно
ИИ-агенты уже умеют быстро строить отчёты со статичными графиками, но интерактивные графики остаются дорогими и хрупкими: по описанию в блоге, агент редко справляется с первой попытки, а повторные циклы рассуждений, кода и отладки тратят токены и время. Flint-interactive предлагает убрать причину, отсутствие высокоуровневого языка для описания взаимодействий, переложив сложную часть на компилятор. Если подход работает так, как описано, агенты смогут выдавать интерактивные графики ближе к уровню сложных историй из data-журналистики.
Кому это важно
Пользователям чат-ассистентов, которые хотят исследовать данные прямо в разговоре и задавать уточняющие вопросы по выделенному на графике. Разработчикам ИИ-агентов и приложений, которым нужны дашборды, истории на данных и связанные представления. Дизайнерам взаимодействий, которых приглашают оформлять собственные взаимодействия как готовые шаблоны и предлагать их на GitHub.
Как это применить
Три пути, названные в блоге. 1) В чате: подключить Flint через Flint-MCP и MCP Apps по руководству по настройке MCP, затем попросить агента построить график с нужными взаимодействиями, он создаст interaction_spec рядом со спецификацией графика Flint. 2) В приложении: использовать Flint Interactive Canvas, обрабатывать семантические события обработчиками (фильтрация таблицы, обновление другого графика, смена состояния приложения) и отправлять операторы обновления с виджетов. 3) Для нестандартных случаев: через программный интерфейс задать триггер и собственную функцию-обработчик. Разработчикам также предлагают передать кодирующему агенту навык interaction-author, чтобы добавлять шаблоны в приложение. Условия доступа, лицензия и цена в тексте блога не указаны.
Можно ли доверять
Это первичная публикация в блоге самой Microsoft Research, то есть рассказ разработчиков о собственной системе. Утверждения о снижении трудозатрат и повышении надёжности сформулированы в общем виде («помогает избежать многих» трудностей с вёрсткой, отрисовкой и отладкой), без бенчмарков, измерений, пользовательских исследований и численных результатов по стоимости или надёжности. В тексте также не названо, на каких моделях и агентах систему проверяли. Независимых оценок в источнике нет.
Риски и подводные камни
Заявленные выгоды пока не подкреплены цифрами, поэтому реальный выигрыш по токенам, времени и надёжности неизвестен. Выразительность ограничена словарём готовых шаблонов и операторов обновления: всё, что выходит за них, придётся описывать собственными обработчиками через программный интерфейс, отсюда и приглашение дизайнерам расширять словарь взаимодействий Flint. Сам Flint в блоге подробно не объясняется: Flint-interactive подаётся как язык «поверх Flint», так что для использования придётся разбираться и в нём. Нужно также учитывать зависимость от настройки Flint-MCP и MCP Apps в вашем чате или среде.
«Агенты редко создают полностью удовлетворительную интерактивную визуализацию за один ход.»
— Блог Microsoft Research