Flint:面向 AI 时代的可视化语言

- Flint 允许 AI 智能体根据简单、人类可编辑的规格,可靠地生成表现力强、外观精美的图表。
- Flint 利用语义数据类型来表达数据的含义。这些类型帮助编译器选择合适的坐标轴、基线、格式以及配色方案。
- Flint 自动管理尺寸、间距、标签和布局,使图表在数据量和密度变化时仍然保持可读,无需用户显式配置。
- 同一份 Flint 规格可以编译为 Vega-Lite、Apache ECharts 或 Chart.js,无需重写图表。
- 开源项目包含 和 ,智能体可以直接在聊天或编码环境中创建、验证和渲染图表。

制作一张好的图表需要诸多设计决策:日期如何解析、坐标轴是否应从零开始、数值如何格式化、标签需要预留多少空间、哪种颜色让数据更易读。Vega-Lite、Apache ECharts、Chart.js 等现代可视化库虽然提供了这些控制选项,但存在权衡:依赖系统默认值的简短规格往往只能生成平庸的图表,而精美的可视化则需要详尽、精心挑选参数的规格,这类规格通常冗长、脆弱且容易出错。
随着大语言模型(LLM)和 AI 智能体承担越来越多的可视化工作,这种权衡变得更加突出。智能体在处理复杂的底层规格细节时尤其容易出错,生成的脆弱代码也难以让人检查、修复或复用。理想情况下,我们需要一个折中方案:一种简洁的规格,智能体可以可靠地生成,人可以直接编辑,系统也能将其编译成设计良好的图表。
为了应对这一挑战,我们推出了 Flint(在新标签页中打开),一种面向 AI 驱动的图表创建的可视化中间语言。Flint 帮助 AI 智能体从简洁的、可由人工编辑的图表规格生成富有表现力、外观精美的图表。Flint 编译器无需为坐标轴、间距和布局提供冗长的底层参数,而是根据数据、语义类型、图表类型和编码方式自动推导优化的图表设置。同一个 Flint 规格可以通过多种后端渲染,包括 Vega-Lite、Apache ECharts 和 Chart.js。

Flint 的工作原理
图 2 展示了 Flint 编译器如何将简洁的图表规格转化为精细的热力图。
要生成一张高质量的热力图,传统做法需要我们用底层的图表属性明确告诉系统:如何处理 period 字段、如何正确标注 MonthYear 值、如何设置每个热力图格子的大小,以及如何选择合适的颜色刻度来呈现正负 newUsers 值。不做这些配置的话,可视化库只能从字段名和原始值去猜测,结果可能生成技术上没毛病、但容易误导人的图表。虽然这些细节很重要,但把它们硬编码进去既困难又容易出错,还会让规范变得脆弱、难以理解和调整。
在 Flint 中,这些底层细节由系统统一管理,编译器会从高层的数据和图表规范中自动推导出来。其中,**数据规范**用来描述语义类型和可选的元数据,**图表规范**则定义图表类型,并把字段映射到 x、y、颜色、大小、分面等视觉通道。编译器根据这些信息自动推导解析规则、坐标轴、聚合方式、格式、配色方案、布局,并生成后端原生规范,用来渲染出最终精致的可视化结果。这样用户就不用再手动设置那些脆弱且易错的底层细节了。
此外,由于中间表示与任何单一的渲染库解耦,Flint 可以对接 API 和编程模型差异很大的后端。用户只需用同一份简洁的图表意图,就能编译到 Vega-Lite、ECharts 或 Chart.js,根据可视化需求选择最合适的后端。
播客系列
AI 医疗革命,再探讨
与微软的 Peter Lee 一同探索 AI 正在如何改变医疗健康,以及这对未来医学意味着什么。
立即收听 在新标签页中打开面向 AI 辅助可视化的 Flint
Flint 非常适合基于大语言模型的图表生成,因为语义类型通常比一整套底层可视化参数更容易被模型推断出来。借助字段名、数值模式以及常见的领域知识,智能体可以判断某一列到底代表的是日期、价格、百分比、国家、排名还是相关性。一旦这些语义被显式表达,编译器就能接手许多设计决策,从而省去那些脆弱且与具体可视化库耦合的代码。
在我们的研究里,我们把 Flint 与 DirectVL 进行了对比。DirectVL 是一种基线方法,它让模型在一个大语言模型自评估流程中直接生成完整的(也更为复杂的)Vega-Lite 规格。在基于 Tidy Tuesdays 测试数据的三种模型评测中,Flint 在大语言模型评判总分上都更高:GPT-5.1 上为 16.27 对 15.91,GPT-5-mini 上为 16.16 对 15.60,GPT-4.1 上为 15.91 对 15.34。事实上,Flint 已经足够强大和可靠,目前正被用于驱动 Data Formulator(在新标签页中打开)——这是微软研究院面向 AI 辅助数据分析与可视化所推出的项目。
为了让你的智能体更方便地接入 Flint,我们还开源了 flint-chart-mcp,这是一个 Model Context Protocol(MCP)服务器,让智能体能够在聊天或编程环境中创建、校验并渲染图表。MCP 调用既支持把数据内联传入,也能读取已配置好的本地文件;服务器还可以打开一个交互式图表视图,方便用户检视并打磨结果。
试用 Flint
Flint 已开源,可直接使用:
- 项目站点:https://microsoft.github.io/flint-chart/(在新标签页中打开)
- GitHub:https://github.com/microsoft/flint-chart(在新标签页中打开)
- Flint MCP 服务器使用说明:https://microsoft.github.io/flint-chart/#/mcp(在新标签页中打开)
Flint 指向一个面向可视化的共享语义层:人类和 AI 智能体可以借助简洁的图表意图进行协作,而那些细致入微的底层工作则交给编译器来完成。我们欢迎社区探索这个项目,并在此基础上继续构建。
在新标签页中打开
认识作者
Chenglong Wang
高级研究员
了解更多
Alper Sarikaya
高级数据可视化工程师
Power BI
了解更多
Scott Tsukamaki
高级技术项目经理
了解更多
Michel Galley
高级首席研究经理
了解更多
Jianfeng Gao
Technical Fellow & 企业副总裁
了解更多
人工智能
编程语言与软件工程