AI can generate Charts. Flint helps generate better ones.
Author: Brenda Potts (Microsoft Research) | Source: microsoft.com/research/blog | Published: 2026-07-09
한 줄 요약
짧은 차트 스펙은 밋밋한 결과를, 예쁜 차트는 장황하고 깨지기 쉬운 스펙을 요구한다는 트레이드오프를, 의미론적 타입에서 저수준 설정을 컴파일러가 유도하는 중간 언어로 끊어낸 오픈소스 프로젝트.
핵심 주장/내용
- 문제의 구조: 좋은 차트에는 날짜 파싱, 축이 0에서 시작할지, 값 포맷, 레이블 공간, 색 선택 등 수많은 설계 결정이 필요하다. Vega-Lite·ECharts·Chart.js는 이 컨트롤을 노출하지만 기본값에 의존한 짧은 스펙은 밋밋하고, 다듬어진 시각화는 장황하고 깨지기 쉽고 오류 나기 쉬운 스펙을 요구
- 에이전트 시대에 더 날카로워진다: 에이전트는 복잡한 저수준 스펙 디테일을 관리할 때 특히 오류를 내고, 그 결과로 나온 취약한 코드는 사람이 검사·수정·재사용하기 어렵다. 필요한 건 그 중간 — 에이전트가 안정적으로 생산할 수 있고, 사람이 직접 편집할 수 있고, 시스템이 잘 설계된 차트로 컴파일할 수 있는 컴팩트한 스펙
- Flint의 구조:
- data specification — 의미론적 타입(semantic type)과 선택적 메타데이터. 예:
period는 YearMonth,newUsers는 Profit - chart specification — 차트 유형과 필드→시각 채널(x, y, color, size, facet) 매핑
- 컴파일러가 여기서 파싱 규칙, 스케일, 축, 집계, 포맷, 컬러 스킴, 레이아웃을 유도해 backend-native 스펙 생성
- data specification — 의미론적 타입(semantic type)과 선택적 메타데이터. 예:
- LLM에 잘 맞는 이유: 의미론적 타입은 저수준 시각화 파라미터 전체보다 모델이 추론하기 쉽다. 필드 이름·값 패턴·상식으로 어떤 컬럼이 날짜·가격·퍼센트·국가·순위·상관인지 알아볼 수 있고, 그 의미가 명시되면 나머지 설계 결정은 컴파일러가 처리
- 레이아웃이 데이터에 적응: cardinality와 밀도가 변해도 읽을 수 있도록 크기·간격·레이블·레이아웃을 자동 관리. 명시적 사용자 설정 불필요
- 하나의 스펙, 여러 백엔드: 중간 표현이 특정 렌더링 라이브러리와 분리되어 있으므로 같은 컴팩트한 차트 의도를 유지한 채 Vega-Lite / ECharts / Chart.js 중 능력이 맞는 백엔드를 고를 수 있다
- 에이전트 워크플로용 패키징:
flint-chart라이브러리 +flint-chart-mcpMCP 서버로 에이전트가 채팅·코딩 환경 안에서 차트를 생성·검증·렌더. MCP 호출에 데이터를 인라인으로 넣거나 로컬 파일을 읽고, 인터랙티브 차트 뷰를 열어 사용자가 검사·수정 가능 - 저자들은 이것이 시각화를 위한 공유 시맨틱 레이어를 가리킨다고 본다 — 사람과 에이전트는 컴팩트한 차트 의도를 다루고 컴파일러가 세심한 저수준 디테일을 처리하는 구도
주요 수치 / 사실
- 베이스라인 DirectVL(모델이 전체 Vega-Lite 스펙을 직접 생성)과 LLM self-evaluation 파이프라인에서 비교(Tidy Tuesdays 테스트 데이터), Flint의 LLM-judge 점수가 더 높음: GPT-5.1 16.27 vs 15.91, GPT-5-mini 16.16 vs 15.60, GPT-4.1 15.91 vs 15.34
- Microsoft Research의 AI 보조 데이터 분석·시각화 프로젝트 Data Formulator를 이미 Flint가 구동
- 오픈소스: microsoft/flint-chart
관련 위키
- Agentic Data Visualization
- MCP (Model Context Protocol)
- AI Self-Serve Analytics
- Semantic Layer
- LLM-as-Judge
Source: 원문 보기