Cómo Microsoft soluciona los gráficos torcidos generados por IA con Flint
Si alguna vez le has pedido a Claude, ChatGPT o a un modelo local que genere un gráfico usando ECharts o Chart.js, probablemente te has encontrado con un desastre de ejes y etiquetas ilegibles. Los modelos pasan horas confundiendo claves en configuraciones JSON, rompiendo diseños y requieren voluminosos system prompts solo para dibujar un simple gráfico de barras.
El equipo de Microsoft Research, en colaboración con investigadores del laboratorio IDEAS de la Universidad Renmin de China, ha liberado el repositorio flint-chart como código abierto. Se trata de un lenguaje intermedio compacto y compilador diseñado específicamente para trabajar con LLMs y agentes de IA.

¿Por qué otro formato de visualización?
El problema con bibliotecas populares como D3, ECharts o Plotly es su enorme complejidad. Configurar un solo gráfico en ECharts requiere pasar un objeto masivo con docenas de campos anidados: escalas, intervalos de ejes, padding, formato de leyenda y reglas adaptativas. Para un LLM, esta es una tarea excesivamente compleja donde fácilmente ocurren alucinaciones o errores de sintaxis.
Flint funciona de manera diferente. Toma el papel de una representación intermedia (IR). La red neuronal genera una especificación concisa que solo especifica lo esencial: tipo de gráfico, datos de entrada y mapeo de campos.
El compilador de Flint toma este esquema compacto, calcula automáticamente los tamaños óptimos de los elementos, formatea los ejes, elimina solapamientos de texto y traduce el resultado a código nativo para la biblioteca gráfica objetivo.

Bajo el capó
A diferencia de las bibliotecas estándar donde los campos se dividen en cadenas de texto y números, Flint utiliza tipado semántico. El sistema tiene más de 70 tipos semánticos incorporados, incluyendo Rank, Temperature, Price, Country y Quantity.
Cuando el compilador sabe que un campo contiene datos de tipo Price, aplica automáticamente las reglas de formato de moneda y selecciona la escala apropiada. Si los datos especifican países o calificaciones, Flint determina la mejor ubicación de las etiquetas de los ejes para evitar solapamientos.
Actualmente, la biblioteca se mantiene en el ecosistema JS/TS y puede traducir la misma especificación a cinco destinos diferentes:
- Vega-Lite
- ECharts
- Chart. js
- Plotly
- Gráficos nativos de Excel mediante Office. js
Aquí hay un ejemplo de compilación de una especificación a Vega-Lite:
import { assembleVegaLite } from 'flint-chart';
const spec = assembleVegaLite({
data: { values: myData },
semantic_types: { weight: 'Quantity', mpg: 'Quantity', origin: 'Country' },
chart_spec: {
chartType: 'Scatter Plot',
encodings: { x: { field: 'weight' }, y: { field: 'mpg' }, color: { field: 'origin' } },
baseSize: { width: 400, height: 300 },
},
});
Si decides cambiar el motor de renderizado a ECharts o Plotly, no necesitarás cambiar el código de la especificación en sí. Simplemente llama a assembleECharts(input) o assemblePlotly(input).
Integración de agentes de IA mediante MCP
Los desarrolladores priorizaron la preparación para flujos de trabajo de agentes autónomos. El repositorio incluye un servidor flint-chart-mcp que implementa el Model Context Protocol.

En un entorno de desarrollo habilitado para MCP (como Cursor o Claude Desktop), el agente obtiene un conjunto de herramientas listo para la generación de gráficos. El modelo no solo vuelca JSON en el chat, sino que valida el esquema, verifica los tipos y renderiza inmediatamente un widget interactivo en la interfaz del editor.
Iniciar el servidor en tu entorno de trabajo solo requiere un comando:
npx -y flint-chart-mcp
Estructura del repositorio
El proyecto está estructurado como un monorepo:
packages/flint-js— el código principal de la biblioteca en TypeScript.packages/flint-mcp— la implementación del servidor MCP para agentes.packages/flint-py— un prototipo de puerto a Python (actualmente disponible solo como código fuente, el paquete aún no se ha publicado en PyPI).site— un sitio demo interactivo con editor y galería.
Si quieres explorar el proyecto localmente y hacer cambios, el despliegue toma solo un par de minutos:
git clone https://github.com/microsoft/flint-chart
cd flint-chart
npm install
npm run site
El cliente demo se iniciará en http://localhost:5274/. El código de la biblioteca está directamente vinculado al sitio, por lo que los cambios en la lógica del compilador se incorporan al instante sin necesidad de reconstruir paquetes manualmente.
¿Para quién es Flint?
La herramienta aborda un problema específico pero doloroso. Si estás construyendo asistentes de IA, dashboards con generación sobre la marcha o dando acceso a redes neuronales al análisis de datos, Flint elimina la necesidad de escribir numerosos validadores y workarounds alrededor de las visualizaciones.
El proyecto aún es reciente, pero cuenta con Microsoft Research detrás y las actualizaciones son regulares. La versión 0.4.0 agregó soporte para docenas de plantillas de Plotly y gráficos editables de Excel, así que definitivamente vale la pena marcarlo.
Proyectos relacionados