>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

Microsoft 如何用 Flint 解决 AI 生成图表的乱象

如果你曾让 Claude、ChatGPT 或本地模型用 ECharts 或 Chart.js 生成图表,你可能遇到过轴线混乱、标签无法辨认的情况。模型需要花费大量时间来纠正 JSON 配置中的键名错误、修复布局问题,甚至只是画一个简单的柱状图都需要冗长的系统提示词。

微软研究院团队与中国人民大学 IDEAS 实验室的研究人员合作,发布了 3 号仓库作为开源项目。这是一个专为 LLM 和 AI 代理设计的紧凑型中间语言和编译器。

为什么还需要另一种可视化格式

D3、ECharts 或 Plotly 等流行库的问题在于其复杂性。在 ECharts 中配置单个图表需要传递一个包含数十个嵌套字段的大型对象:比例尺、轴刻度、间距、图例格式和自适应规则。对于 LLM 来说,这是一个过于复杂的任务,容易出现幻觉或语法错误。

Flint 的工作方式不同。它扮演中间表示(IR)的角色。神经网络生成一个简洁的规范,只指定必要的内容:图表类型、输入数据和字段映射。

Flint 编译器接收这个紧凑的模式,自动计算最佳元素大小、格式化轴标签、移除文本重叠,然后将结果转换为目标图形库的原生代码。

技术原理

与标准库将字段分为纯字符串和数字不同,Flint 使用语义类型。该系统内置了超过 70 种语义类型,包括 4、5、6、7 和 8。

当编译器知道某个字段包含 9 数据时,它会自动应用货币格式化规则并选择合适的比例尺。如果数据指定了国家或评级,Flint 会确定最佳的轴标签位置以防止重叠。

目前,该库在 JS/TS 生态系统中维护,可将同一规范转换为五个不同的目标:

  • Vega-Lite
  • ECharts
  • Chart.js
  • Plotly
  • 通过 Office.js 的原生 Excel 图表

以下是编译规范到 Vega-Lite 的示例:

0

如果你决定将渲染引擎切换到 ECharts 或 Plotly,无需更改规范代码本身。只需调用 10 或 11。

通过 MCP 实现 AI 代理集成

开发者优先考虑了自主代理工作流的准备情况。该仓库包含一个实现 Model Context Protocol 的 12 服务器。

在支持 MCP 的开发环境(如 Cursor 或 Claude Desktop)中,代理可以获得现成的图表生成工具包。模型不会只是在聊天中输出 JSON——它会验证模式、检查类型,并立即在编辑器界面中渲染交互式小部件。

在你的工作环境中启动服务器只需一条命令:

1

仓库结构

该项目采用 monorepo 结构:

  • 13 — TypeScript 编写的核心库代码。
  • 14 — 面向代理的 MCP 服务器实现。
  • 15 — Python 移植原型(目前仅提供源代码,尚未发布到 PyPI)。
  • 16 — 带有编辑器和画廊的交互式演示站点。

如果你想在本地探索项目并进行修改,部署只需几分钟:

2

演示客户端将在 17 启动。库代码直接链接到站点,因此对编译器逻辑的更改会实时生效,无需手动重建包。

Flint 适合谁

该工具解决的是一个狭窄但棘手的问题。如果你正在构建 AI 助手、需要动态生成仪表板,或让神经网络访问数据分析,Flint 可以消除编写大量验证器和可视化变通方案的需要。

该项目还很新,但有微软研究院的支持,更新也很规律。0.4.0 版本增加了对数十个 Plotly 模板和可编辑 Excel 图表的支持,所以这个库绝对值得关注。

相关项目