Microsoft Research · 学术

Flint: AI时代的可视化语言

Flint: A visualization language for the AI era

二〇二六年七月八日 · 英文原文

微软研究院推出Flint,一种面向AI agent的可视化中间语言,通过简单、可人工编辑的规格生成精美图表。Flint利用语义类型指导设计决策,自动管理刻度、布局与配色,无需用户配置低层次参数。同一规格可编译为Vega-Lite、Apache ECharts或Chart.js。开源项目包含flint-chart库与flint-chart-mcp(MCP服务器)。在Tidy Tuesdays测试中,Flint在GPT-5.1、GPT-5-mini、GPT-4.1上获得更高LLM评判总分,已用于驱动微软研究院Data Formulator项目。

一览

从简单规格生成精美图表

Flint 让 AI agent 能够根据简单、可人工编辑的规格说明,可靠地生成富有表现力、视觉精美的图表。

语义类型指导设计

Flint 利用语义数据类型来表达数据的含义。它们帮助编译器选择合适的刻度、基线、格式和配色方案。

布局自适应数据

Flint 自动管理尺寸、间距、标签和布局,使图表在基数和密度变化时仍保持可读性,无需用户显式配置。

一份规格可适配多个后端

一份 Flint 规格可以编译为 Vega-Lite、Apache ECharts 或 Chart.js,无需从头重写图表。

专为 agent 工作流构建

该开源项目包含 flint-chart 库和 flint-chart-mcp 服务器,因此 agent 可以直接在聊天或编码环境中创建、验证和渲染图表。

图 1. Flint 通过其简单规格支持多种可视化类型,并可借助 Vega-Lite、ECharts 和 Chart.js 等可视化库进行渲染。

创建一张好图表需要许多设计决策:日期应如何解析、刻度是否应从零开始、数值应如何格式化、标签需要多少空间、以及哪些颜色能让数据更易读。现代可视化库如 Vega-Lite、Apache ECharts 和 Chart.js 都提供了这些控制选项,但存在一个权衡:依赖系统默认值的简短规格往往生成平淡无奇的图表,而精美的可视化则需要包含精心选择参数的详细规格,这些规格通常冗长、脆弱且容易出错。

随着大语言模型(LLM)和 AI agent 承担更多可视化工作,这一权衡变得更加尖锐。当 agent 必须管理复杂、低层次的规格细节时,它们尤其容易出错,而生成的脆弱代码也难以让人检查、修复或复用。理想情况下,我们需要一种中间方案:一种 agent 能可靠生成、人能直接编辑的紧凑规格,以及一个能将其编译为设计精良图表的系统。

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

图 2. Flint 将一份紧凑、可人工编辑的图表规格编译为完整的后端原生规格并渲染出可视化结果。在这个热力图示例中,Flint 规格命名了语义类型(period 为 YearMonth,newUsers 为 Profit)并将字段映射到视觉通道。编译器推导出 Vega-Lite 的细节,包括时间解析、坐标轴格式化、颜色刻度、单元格尺寸、图例配置和布局。

Flint 的工作原理

图 2 展示了 Flint 编译器如何将一份紧凑的图表规格转化为精炼的热力图。要生成高质量的热力图,传统上我们需要通过低层次的图表属性显式告知系统:如何处理 period 字段、如何正确标注 MonthYear 值、如何调整单个热力图单元格的尺寸、以及如何选择能恰当表示正负 newUsers 值的颜色刻度。没有这些配置,可视化库只能根据字段名和原始值进行猜测,这可能导致图表在技术上有效但可能具有误导性。

虽然这些细节很重要,但硬编码它们既困难又容易出错,而且会使规格变得脆弱,用户难以理解或调整。在 Flint 中,这些低层次细节被系统化管理,编译器从高层次的数据和图表规格中推断出它们。这里,数据规格捕获了语义类型和可选的元数据,图表规格定义了图表类型并将字段映射到视觉通道(如 x、y、color、size 或 facet)。根据这些信息,编译器推导出解析规则、刻度、坐标轴、聚合、格式化、配色方案、布局,并生成后端原生规格,用于渲染最终的精美可视化。这使用户无需显式设置脆弱且易错的低层次细节。

此外,由于中间表示与任何单一渲染库分离,Flint 可以针对具有完全不同 API 和编程模型的后端。用户可以在编译到 Vega-Lite、ECharts 或 Chart.js 时保持相同的紧凑图表意图,并选择最适合该可视化的后端。

聚焦:活动系列

Microsoft Research Forum 加入我们,在通用 AI 时代进行持续的思想交流。按需观看最新剧集。 按需观看(在新标签页中打开)

Flint 用于 AI 辅助可视化

Flint 非常适合基于 LLM 的图表生成,因为语义类型通常比全套低层次可视化参数更容易让模型推断。字段名、值模式和常见的数据知识可以帮助 agent 识别某列是否代表日期、价格、百分比、国家、排名或相关性。一旦这些含义明确,编译器就可以处理许多原本会表现为脆弱、库特定代码的设计决策。

在我们的研究实验中,我们将 Flint 与 DirectVL(一种要求模型在 LLM 自评估流程中直接生成完整(更复杂)Vega-Lite 规格的基线方法)进行了比较。基于来自 Tidy Tuesdays 的测试数据,在三个测试模型上,Flint 获得了更高的 LLM 评判总分:GPT-5.1 上 16.27 vs. 15.91,GPT-5-mini 上 16.16 vs. 15.60,GPT-4.1 上 15.91 vs. 15.34。事实上,Flint 如此强大和可靠,以至于它现在被用于驱动 Data Formulator(在新标签页中打开),一个微软研究院的 AI 辅助数据分析和可视化项目。

为了让你的 agent 轻松访问 Flint,我们还发布了 flint-chart-mcp,一个模型上下文协议(MCP)服务器,允许 agent 在聊天或编码环境中创建、验证和渲染图表。MCP 调用可以内联嵌入数据或读取配置好的本地文件,服务器可以打开交互式图表视图,以便用户检查和优化结果。

图 3. 一旦你使用你喜欢的 AI 客户端设置好 flint-chart-mcp,agent 就可以生成由 Flint 驱动的交互式可视化,来回答你的数据探索问题。

尝试 Flint

Flint 是开源的,随时可用:

Flint 指向了一个共享的可视化语义层,人和 AI agent 可以在其中使用紧凑的图表意图,而编译器则处理精细的低层次细节。我们邀请社区探索该项目并在此基础上进行构建。

(在新标签页中打开)


文章《Flint:AI 时代的可视化语言》最初发表于 Microsoft Research。

译自 Microsoft Research · 学术 · 录于 二〇二六年七月八日