Что такое Flint и зачем он нужен

Microsoft Research выпустила открытый проект Flint — промежуточный язык визуализации (visualization intermediate language, VIL), специально разработанный для ИИ-агентов. Flint позволяет ИИ-агентам создавать выразительные, профессионально выглядящие визуализации из простых, удобных для редактирования человеком спецификаций. Проект уже опубликован на GitHub и сопровождается живым редактором и галереей примеров.

ℹ Ключевая идея
Flint — это не библиотека для конечного пользователя. Это «мост» между ИИ-агентом и системами рендеринга графиков.

Почему текущие инструменты не справляются

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

Проблема не в интеллекте модели, а в инструменте. Заставить большую языковую модель генерировать сырой Vega-Lite JSON с правильным синтаксисом — задача ненадёжная для современных ИИ-систем. Flint решает именно эту проблему.

«Flint — это промежуточный язык визуализации, позволяющий решить проблему взаимодействия человека и агента на последней миле». — команда Microsoft Research

Как работает Flint

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

В результате получается компактная спецификация графика, которую агенты могут надёжно генерировать, люди — редактировать напрямую, а несколько бэкендов — рендерить как нативные спецификации Vega-Lite, ECharts или Chart.js.


graph LR
    A[ИИ-агент генерирует\nFlint-спецификацию] --> B[Компилятор Flint]
    B --> C[Vega-Lite]
    B --> D[ECharts]
    B --> E[Chart.js]
    C --> F[Готовый интерактивный график]
    D --> F
    E --> F

Семантические типы

Flint описывает смысл каждого поля данных с помощью более чем 70 семантических типов: Rank (ранг), Temperature (температура), Price (цена), Country (страна) и других. Это позволяет компилятору автоматически принимать правильные визуальные решения без дополнительных инструкций от агента.

💡 Практическое применение
Flint уже используется в открытом проекте Microsoft Data Formulator для автоматической генерации визуализаций по запросу пользователя.

Что входит в поставку

КомпонентОписаниеЯзык
flint-chartJS/TS-библиотека, компилирует Flint в Vega-Lite, ECharts, Chart.jsTypeScript
flint-chart-mcpMCP-сервер для работы с агентами прямо из чата или IDETypeScript
flint-pyPython-порт (в разработке, пакет скоро выйдет)Python
Живой редакторVite + React демо-сайт с галереей и документацией

MCP-сервер flint-chart-mcp позволяет агентам создавать, валидировать и рендерить графики прямо из среды чата или написания кода.

Пример минимальной Flint-спецификации

{
  "chart": "bar",
  "x": { "field": "product", "type": "Category" },
  "y": { "field": "revenue", "type": "Price" }
}
📝 Что делает компилятор
Из этих нескольких строк Flint-компилятор автоматически выведет правильные оси, форматирование денежных значений, отступы, цветовую схему и создаст готовую Vega-Lite спецификацию.

Контекст и значение для отрасли

Flint создан Microsoft Research совместно с лабораторией IDEAS Lab Китайского народного университета. Исследовательская статья, описывающая Flint, выйдет в ближайшее время.

Проект способен в будущем повлиять на создание диаграмм в Excel, Power BI и других инструментах Microsoft. Принцип семантической абстракции над низкоуровневыми деталями рендеринга может стать стандартным подходом для следующего поколения аналитических ИИ-агентов.

Выбор Vega-Lite как целевого формата компиляции обеспечивает широкую совместимость и не привязывает вывод к проприетарному рендереру, что делает Flint привлекательным для open-source сообщества и организаций с разнородными средами.

Проект открыт для сообщества: авторы особенно приветствуют вклады, добавляющие новые шаблоны графиков или новые бэкенды рендеринга. Исходный код доступен на GitHub.