
创建一张优秀的图表需要许多设计决策:如何解析日期、坐标轴是否应从零开始、数值如何格式化、标签需要多大空间,以及哪些颜色能让数据更易读。现代可视化库(如 Vega-Lite、Apache ECharts 和 Chart.js)提供了这些控制选项,但存在一个权衡:依赖系统默认值的简短规范通常只能生成平淡无奇的图表,而精美的可视化则需要包含精心挑选参数的详细规范,这些规范往往冗长、脆弱且容易出错。
随着大语言模型(LLM)和 AI 智能体承担更多的可视化工作,这种权衡变得愈发尖锐。当智能体必须管理复杂、底层的规范细节时,它们尤其容易出错,由此产生的脆弱代码也让人难以检查、修复或复用。理想情况下,我们需要一种介于两者之间的方案:一种智能体能够可靠生成、人类可以直接编辑的紧凑规范,并且系统能将其编译成设计精良的图表。
为了应对这一挑战,我们推出了 Flint(在新标签页中打开),这是一种面向 AI 驱动图表创建的可视化中间语言。Flint 帮助 AI 智能体从简单、可人工编辑的图表规范中创建出富有表现力且吸引人的图表。Flint 编译器无需为比例尺、坐标轴、间距和布局指定冗长的底层参数,而是从数据、语义类型、图表类型和编码中推导出优化的图表设置。同一份 Flint 规范可以通过多个后端进行渲染,包括 Vega-Lite、Apache ECharts 和 Chart.js。

Flint 的工作原理
How Flint works
图 2 展示了 Flint 编译器如何将一份紧凑的图表规范转化为一张精美的热力图。
传统上,要生成一张高质量的热力图,我们需要通过底层图表属性明确告知系统如何处理 period 字段、如何正确标记 MonthYear 值、如何调整单个热力图单元格的大小,以及如何选择能恰当表示正负 newUsers 值的色阶。如果没有这些配置,可视化库只能根据字段名和原始值进行猜测,这可能导致生成的图表在技术上有效,但可能具有误导性。虽然这些细节很重要,但硬编码它们既困难又容易出错,并且会使规范变得脆弱,难以让用户理解或调整。
在 Flint 中,这些底层细节被系统化地管理,编译器从高层数据和图表规范中推断出它们。在这里,数据规范捕获语义类型和可选的元数据,而图表规范则定义图表类型并将字段映射到视觉通道,如 x、y、颜色、大小或分面。基于这些信息,编译器推导出解析规则、比例尺、坐标轴、聚合方式、格式化、配色方案、布局,并生成后端原生规范,用于渲染最终的精美可视化。这使用户无需显式设置那些脆弱且容易出错的底层细节。
此外,由于中间表示与任何单一的渲染库分离,Flint 可以针对具有截然不同 API 和编程模型的后端。用户可以在编译到 Vega-Lite、ECharts 或 Chart.js 时保留相同的紧凑图表意图,并选择功能最适合该可视化的后端。

AI 测试与评估:来自科学与工业界的经验
AI Testing and Evaluation: Learnings from Science and Industry
了解微软如何借鉴其他领域的经验,将评估与测试作为 AI 治理的支柱加以推进。
立即收听
在新标签页中打开
Flint 用于 AI 辅助可视化
Flint for AI-assisted visualization
Flint 非常适合基于 LLM 的图表生成,因为对于模型来说,推断语义类型通常比推断全套底层可视化参数更容易。字段名、值模式以及常见的数据知识可以帮助智能体识别某列是否代表日期、价格、百分比、国家、排名或相关性。一旦这些含义变得明确,编译器就能处理许多原本会表现为脆弱、特定于库的代码的设计决策。
在我们的研究实验中,我们将 Flint 与 DirectVL 进行了比较,后者是一种基线方法,要求模型在 LLM 自我评估流程中直接生成完整的(更复杂的)Vega-Lite 规范。基于来自 Tidy Tuesdays 的测试数据,在三个测试模型上,Flint 获得了更高的 LLM 评判总分:在 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,这是一个模型上下文协议(MCP)服务器,允许智能体在聊天或编码环境中创建、验证和渲染图表。MCP 调用可以内嵌数据或读取配置好的本地文件,并且该服务器可以打开一个交互式图表视图,以便用户检查和优化结果。

尝试使用 Flint
Try 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 智能体可以使用紧凑的图表意图进行协作,而编译器则负责处理细致的底层细节。我们邀请社区探索该项目并在此基础上进行构建。
在新标签页中打开
认识作者
Meet the authors

Chenglong Wang
高级研究员
了解更多

Alper Sarikaya
高级数据可视化工程师
Power BI
了解更多

Scott Tsukamaki
高级技术项目经理
了解更多

Michel Galley
高级首席研究经理
了解更多

Jianfeng Gao
技术院士 & 公司副总裁
了解更多
研究领域
Research Areas
- 人工智能
- 编程语言与软件工程
研究团队
Research Groups
- 深度学习组
相关实验室
Related labs
- 微软研究院 - 雷德蒙德