
AI做出的图表,常常在“看起来完成”的一刻就停止了工作:读者想圈出几个点、联动另一张图,或把所选数据交给下一轮提问,仍得重新描述需求。微软研究院10月22日介绍的Flint-interactive,试图把这一步变成可描述的交互规则。它不是又一个画图模型,而是让Agent用较高层的规格说明选择、缩放和联动,再由编译器处理具体画面变化。
快速看点:图表可以把点击、框选等动作转换为带有数据含义的事件;同一事件可更新其他图、表格或应用状态;交互能力有明确运行范围,静态导出不会因为带上交互配置就变成可点击应用。项目1.0于10月19日发布,1.0.1更新于21日,22日是研究团队的机制介绍,并非当天才首次开放。
制作交互报表,难点不只是画出一个按钮。用户在散点图上框选区域后,系统要知道哪些记录被选中,改变它们的样式,再同步更新另一张图。若每次都让模型直接生成各套渲染器的底层逻辑,图形位置、事件与数据之间的依赖就容易缠在一起,修好一个动作又影响另一个动作。
Flint把这项工作分成两层:编译器把原始点击、拖动等输入解释为对应图形元素和数据的语义事件;交互规则再把这些事件映射为高层更新,例如高亮、添加注记或改变视野。应用还可以接收事件去筛选表格、更新文字或调整自身状态,不必只在一张画布里发生变化。
例如,研究团队展示两张不同时期的国家散点图:在一张图中框选一组国家,另一张图突出相同对象。这个演示说明联动依赖的是数据对象,而不是把同一个屏幕矩形机械复制过去。它不证明所有业务数据都能自动正确关联,字段身份、分组关系和数据口径仍须由应用保持一致。
Flint规格把图表含义、视觉主题和交互行为分别组织。数据与语义类型描述月份、数量等字段,chart_spec说明图形及映射,theme_spec管理外观,interaction_spec指定行为。这样的结构有助于把“换颜色”与“改变筛选逻辑”分开审查,也便于团队重复使用经过验证的交互配置。
预设行为可以覆盖点击高亮、矩形或套索选择、轴向刷选、缩放、图例切换及联动刷选等。简单行为不要求另写处理函数;更特别的需求则通过编程API,将语义事件组合成自定义更新序列。这不是禁止开发者写代码,而是把代码集中在业务行为,不再为每一次点击重复处理底层图形对象。
项目也提供MCP服务与应用嵌入路径。聊天中的图表可以保留读者选取的上下文,应用中的组件则能与既有表格、控件连接。不过,MCP是接入方式,不等于所有客户端都能展示同样的交互卡片;目标宿主的展示能力和配置仍是实际使用的前提。
交付物也需说清楚。一个静态PNG适合放进报告,但不会执行读者动作;可编辑规格可以继续修改,却不等于运行环境已经准备好。面向企业的报表,应在需求阶段就区分“展示一张图”“交付可编辑图”和“提供可交互应用”,避免最后用漂亮图片替代约定的探索功能。
交互文档给出重要边界:这些交互运行在Vega-Lite交互表面,静态组装后端不会执行它们,校验会提示忽略相关配置。因此,不能把统一支持多种渲染后端,解读成所有后端都完整支持相同交互。Python移植也仍是仓库内的预览源码,不能当作已经发布的正式软件包。
具体图形还有自己的能力要求。例如图例切换需要存在离散图例,缩放需要合适的连续轴,联动刷选需要可识别的分组。当图无法满足某个预设时,该交互会被丢弃并给出警告,而图本身仍可能正常显示。只检查截图是否漂亮,就可能漏掉一个完全没有生效的关键动作。
多个动作争用同一手势时也要处理冲突。框选、拖动平移等可能争用拖动区域,项目提供相应冲突反馈和处理规则。企业可以把“出现了哪些警告”“哪些操作未应用”纳入验收记录,而不只检查程序是否报错。编译器帮助管理依赖,不代表无需测试边界情况。
版本同样不能混用。更新日志已将部分MCP破坏性调整放在Unreleased区,不能当成1.0.1已经生效的接口契约。团队应固定自己验证过的版本,并用对应文档检查输入、状态和导出行为。本轮没有独立测得生成速度、token成本或交互正确率,不能据宣传直接承诺固定收益。
Flint-interactive最值得关注的变化,是把图表从回答的插图,推进到继续探索数据的入口。对企业Agent,生成结果不应只有一张图,还可以包含读者正在看的范围、选中的对象,以及下一步问题的上下文。这些信息若可审查、可复用,才有机会减少反复描述需求的成本。
落地时不妨先验证一组简单动作:选择一个业务对象后,另一视图是否找到同一条记录;清除选择后是否恢复;切到目标设备和渲染方式后是否仍可操作。以上是验收建议,不是本轮完成的运行测试。能生成交互规格是起点,用户实际点下去后得到正确且可解释的反馈,才算把图表交付完整。
