← 文章 / 开源项目
微软研究院 3小时前 · 2026-08-31 13:00:10 · 4 阅读

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

Flint blog | three white line icons on an abstract green background; bar chart icon, connected nodes icon, flowchart icon
  • Flint 允许 AI 智能体根据简单、人类可编辑的规格,可靠地生成表现力强、外观精美的图表。
  • Flint 利用语义数据类型来表达数据的含义。这些类型帮助编译器选择合适的坐标轴、基线、格式以及配色方案。
  • Flint 自动管理尺寸、间距、标签和布局,使图表在数据量和密度变化时仍然保持可读,无需用户显式配置。
  • 同一份 Flint 规格可以编译为 Vega-Lite、Apache ECharts 或 Chart.js,无需重写图表。
  • 开源项目包含 和 ,智能体可以直接在聊天或编码环境中创建、验证和渲染图表。
A dense grid displaying a diverse gallery of data visualizations. The collection showcases over twenty different chart types, including stacked area charts, line graphs, sunburst charts, stacked bar charts, treemaps, radar charts, Sankey diagrams, dense heatmaps, diverging bar charts, candlestick charts, violin plots, a choropleth map of the United States, scatter plots, grouped bar charts, waterfall charts, and parallel coordinate plots.
图 1. Flint 通过简洁的规格支持种类丰富的可视化图表,并可使用 Vega-Lite、Echarts、Chart.js 等可视化库进行渲染。

制作一张好的图表需要诸多设计决策:日期如何解析、坐标轴是否应从零开始、数值如何格式化、标签需要预留多少空间、哪种颜色让数据更易读。Vega-Lite、Apache ECharts、Chart.js 等现代可视化库虽然提供了这些控制选项,但存在权衡:依赖系统默认值的简短规格往往只能生成平庸的图表,而精美的可视化则需要详尽、精心挑选参数的规格,这类规格通常冗长、脆弱且容易出错。

随着大语言模型(LLM)和 AI 智能体承担越来越多的可视化工作,这种权衡变得更加突出。智能体在处理复杂的底层规格细节时尤其容易出错,生成的脆弱代码也难以让人检查、修复或复用。理想情况下,我们需要一个折中方案:一种简洁的规格,智能体可以可靠地生成,人可以直接编辑,系统也能将其编译成设计良好的图表。

为了应对这一挑战,我们推出了 Flint(在新标签页中打开),一种面向 AI 驱动的图表创建的可视化中间语言。Flint 帮助 AI 智能体从简洁的、可由人工编辑的图表规格生成富有表现力、外观精美的图表。Flint 编译器无需为坐标轴、间距和布局提供冗长的底层参数,而是根据数据、语义类型、图表类型和编码方式自动推导优化的图表设置。同一个 Flint 规格可以通过多种后端渲染,包括 Vega-Lite、Apache ECharts 和 Chart.js。

一张三步骤示意图,从左到右展示 Flint 的工作流程。它以一段简短的 JSON 代码片段开始,标签为
图 2:Flint 将简洁的、可人工编辑的图表规格编译成完整的后端原生规格并渲染为可视化图表。在这个热力图示例中,Flint 规格声明了语义类型(将 period 指定为 YearMonth,将 newUsers 指定为 Profit)并将字段映射到视觉通道。编译器自动推导 Vega-Lite 的各项细节,包括时间解析、坐标轴格式化、颜色比例、单元格尺寸、图例配置和布局。

Flint 的工作原理

图 2 展示了 Flint 编译器如何将简洁的图表规格转化为精细的热力图。

要生成一张高质量的热力图,传统做法需要我们用底层的图表属性明确告诉系统:如何处理 period 字段、如何正确标注 MonthYear 值、如何设置每个热力图格子的大小,以及如何选择合适的颜色刻度来呈现正负 newUsers 值。不做这些配置的话,可视化库只能从字段名和原始值去猜测,结果可能生成技术上没毛病、但容易误导人的图表。虽然这些细节很重要,但把它们硬编码进去既困难又容易出错,还会让规范变得脆弱、难以理解和调整。

在 Flint 中,这些底层细节由系统统一管理,编译器会从高层的数据和图表规范中自动推导出来。其中,**数据规范**用来描述语义类型和可选的元数据,**图表规范**则定义图表类型,并把字段映射到 x、y、颜色、大小、分面等视觉通道。编译器根据这些信息自动推导解析规则、坐标轴、聚合方式、格式、配色方案、布局,并生成后端原生规范,用来渲染出最终精致的可视化结果。这样用户就不用再手动设置那些脆弱且易错的底层细节了。

此外,由于中间表示与任何单一的渲染库解耦,Flint 可以对接 API 和编程模型差异很大的后端。用户只需用同一份简洁的图表意图,就能编译到 Vega-Lite、ECharts 或 Chart.js,根据可视化需求选择最合适的后端。

播客系列

Bill Gates、Peter Lee 和 Sébastien Bubeck 的插画头像

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 调用既支持把数据内联传入,也能读取已配置好的本地文件;服务器还可以打开一个交互式图表视图,方便用户检视并打磨结果。

图 3:把 flint-chart-mcp 配置到你常用的 AI 客户端后,智能体就能借助 Flint 生成交互式可视化,从而回答你在数据探索中的各种问题。

试用 Flint

Flint 已开源,可直接使用:

Flint 指向一个面向可视化的共享语义层:人类和 AI 智能体可以借助简洁的图表意图进行协作,而那些细致入微的底层工作则交给编译器来完成。我们欢迎社区探索这个项目,并在此基础上继续构建。

在新标签页中打开

认识作者

Chenglong Wang 的肖像

Chenglong Wang

高级研究员

了解更多 Alper Sarikaya 的肖像

Alper Sarikaya

高级数据可视化工程师

Power BI

了解更多 Scott Tsukamaki 的肖像

Scott Tsukamaki

高级技术项目经理

了解更多 Michel Galley 的肖像

Michel Galley

高级首席研究经理

了解更多 Jianfeng Gao 的肖像

Jianfeng Gao

Technical Fellow & 企业副总裁

了解更多

研究领域

研究团队

相关实验室

原始来源: 微软研究院

评论 (0)