Flint-interactive:建立互動式數據視覺化的語言
Flint-interactive: A language for creating interactive data visualizations
Microsoft Research 介紹 Flint-interactive,一種建基於 Flint、讓 AI 智能體建立互動式數據視覺化的語言。它以語義事件和高階更新運算子描述互動,並由 Flint 編譯器處理互動邏輯與視覺依賴,減少對低階視覺化程式碼的需要。Flint-interactive 可用於互動圖表、儀錶板及數據故事,並支援圖表與文字、表格、元件或應用程式狀態連動。
它把互動轉為語義事件,再用高階更新運算子描述視覺變化,由編譯器處理底層依賴,呈現降低互動圖表實作複雜度的設計思路。

一覽
- 為 AI 生成的圖表帶來豐富的互動功能:Flint-interactive 讓 Agent 建立數據視覺化,用戶可透過點擊、篩選、縮放、標示重點及跨圖表互動,直接探索數據。
- 讓複雜互動更易建立:Flint-interactive 不必依賴低階視覺化程式碼,用戶和 Agent 便可透過高階語義事件及更新運算子定義互動行為。
- 提升可靠性並減少開發工作:Flint-interactive 利用 Flint 編譯器處理互動邏輯和視覺相依關係,有助避免自訂互動視覺化常見的版面配置、算繪及除錯難題。
- 連結圖表、文字、表格和應用程式:Flint-interactive 支援互動式數據故事、儀錶板及互聯體驗,讓一個檢視中的操作可更新另一個檢視中的圖表、文件、小工具或應用程式狀態。
AI Agent 令數據分析及透過數據視覺化生成報告變得容易。相比閲讀冗長文字,它們有助用戶更有效率地檢視模式。然而,當我們想進一步探索時,便希望超越靜態視覺化。: 我們希望與圖表互動,放大查看細節、比較不同圖表中的數據,甚至根據圖表中的選取項目標示文件內的相關文字,反之亦然。這要求 Agent 能建立互動式數據視覺化,在傳達資訊的同時,讓讀者探索作者所選視圖以外的內容;理想情況下,效果媲美精緻數據新聞報道中的互動故事。這令我們不禁想問:
- (作為用戶)我可否直接在對話中與圖表互動,探索數據,並根據所選內容提出後續問題?
- (作為開發者)我可否讓為客戶開發的 AI Agent 生成互動式視覺化,協助客戶探索及理解數據?
可以,但實際應用仍存在明顯差距。即使有能力強大的前沿模型,我們仍面對以下問題:
- 生成成本高。Agent 很少能在一輪內生成完全令人滿意的互動式視覺化。反覆進行推理、編碼及除錯會消耗 Token 和時間。
- 可靠性。互動式視覺化本身已具挑戰性;表達力豐富的互動圖表容易出現欠佳的版面配置或失效的互動,而嘗試修復時亦可能引入新問題。
這些挑戰有助解釋為何在實際應用中,持續生成高質素互動式視覺化仍然困難。另一方面,某些視覺化程式庫的內置互動功能本身表達力不足,無法建立度身訂造的互動圖表。這些挑戰源於缺乏一種兼具表達力和高階特性的語言,以指定視覺互動。
Flint-interactive
Flint-interactive(在新分頁開啟) 是一種建基於 Flint、用來建立互動式數據視覺化的語言。它讓用戶更輕鬆地建立儀錶板、數據故事和互動式作品。Flint-interactive 的強大之處來自 Flint 的編譯器:它會把用戶互動轉換成語義事件,捕捉用戶選取內容背後的含義。然後,它會使用高階運算子,根據這些事件更新視覺化內容,讓建立和維護複雜互動變得容易得多。這把解決互動邏輯與視覺邏輯之間複雜相依關係的繁重工作交由編譯器處理,讓用戶(或 Agent)可以透過高階規格,輕鬆描述豐富多樣的互動。

使用方法
1. 在對話中使用 Flint
按照 MCP 設定指南,透過 Flint-MCP 和 MCP Apps,在對話或畫布環境中直接使用 Flint Interactive。使用最新版本時,只要告訴 Agent 要繪製甚麼圖表,以及需要哪些互動;它便可在 Flint 圖表規格之外,一併生成 interaction_spec,並在對話中呈現互動式圖表。

2. 使用 Flint 建立互動式應用程式
使用 Flint Interactive Canvas,在儀錶板、數據故事或其他應用程式中建立互動式圖表。你的應用程式可以使用事件處理常式,處理 Flint Canvas 發出的語義事件,例如篩選表格、更新另一個圖表,或更改應用程式狀態。若要讓應用程式中的小工具控制圖表的更新方式,可將更新運算子傳送至 Flint Canvas。

3. 建立自訂互動
若要建立 Flint 預設互動以外的自訂互動,可使用程式設計 API 定義觸發條件和自訂處理函式,將語義事件對應至自訂圖表更新流程。例如,處理函式可以突顯用戶按下的國家,並以其名稱標示。它結合了 set-style 和 set-annotation,無需操作特定渲染器的標記。

運作方式
Flint Canvas 是一個狀態機,會追蹤用戶在畫布上的互動,並管理視覺呈現狀態。Flint 把編譯器管理的視覺邏輯,與用戶在語義層級指定的互動邏輯分開處理,令互動規格更容易編寫:
- 視覺邏輯:編譯器會自動把點擊、拖動和按鍵等原始觸發條件,解析為可識別圖表元素和數據的語義事件。它亦會把更新運算子轉換成畫布上的呈現變更,並處理命中測試及低階視覺更新。
- 互動邏輯:用戶將語義互動事件對應至圖表更新運算子,以指定互動方式,例如將樣式設為醒目顯示資料、將註釋設為標示某個資料點,或將視區設為平移或縮放。用戶亦可使用這些語義事件更新外部表格、小工具或應用程式狀態。

這種分工表示用戶無須反向解析繪圖邏輯或操作特定繪圖器的標記,令互動更容易描述和維護。此外,由於事件生成和視覺更新可以組合,同一個模型亦能將 Flint 連接至表格、文字、其他圖表和小工具,以建立互動式故事和儀錶板。
立即試用!
圖表用戶:在聊天中設定 Flint(在新分頁開啟),並請你的 Agent 建立互動式圖表。可到互動範例集尋找靈感。
應用程式開發者:使用程式設計 API(在新分頁開啟)建立互動式儀錶板、數據故事和互連視圖。將互動編寫技能分享給你的程式編寫 Agent,為應用程式加入預設項目。
互動設計師:探索專屬範例(在新分頁開啟),設計新的互動方式,並將其轉化為可重用的預設項目。在 GitHub 提交預設項目建議,並分享原型或實作,協助擴展 Flint 的互動詞彙。
在新分頁開啟
來源:Microsoft Research · microsoft.com