DEV Community

Cover image for Flint: Microsoft lanza un lenguaje de visualización pensado para IA
lu1tr0n
lu1tr0n

Posted on • Originally published at elsolitario.org

Flint: Microsoft lanza un lenguaje de visualización pensado para IA

Microsoft acaba de publicar Flint, un lenguaje de visualización declarativo pensado para que sea un modelo de lenguaje, y no una persona, quien escriba la especificación de un gráfico. El proyecto vive en microsoft.github.io/flint-chart/ y se presenta con una frase que resume toda la apuesta: "A Visualization Language for the AI Era".

La idea de fondo es simple. Hoy, si le pedís a un asistente de IA que te genere un gráfico, casi siempre termina escribiendo código de D3.js o Python con matplotlib: código imperativo, propenso a errores de sintaxis y difícil de validar automáticamente. Flint propone otra ruta: describir el gráfico como una especificación estructurada que un validador puede revisar antes de dibujar un solo píxel.

TL;DR

  • Microsoft publicó Flint, un lenguaje de visualización declarativo documentado en microsoft.github.io/flint-chart/.
  • El proyecto se define como "A Visualization Language for the AI Era": pensado para el flujo prompt, especificación y render.
  • A diferencia de D3.js, que es imperativo, Flint describe el gráfico como datos estructurados, no como pasos de código.
  • Se suma a un espacio ya ocupado por Vega-Lite (Universidad de Washington) y Observable Plot, ambos también declarativos.
  • Una especificación estructurada se puede validar contra un esquema antes de renderizar, algo que el JavaScript libre no permite.
  • El sitio se aloja en GitHub Pages bajo la organización de Microsoft, el patrón habitual de un proyecto abierto en desarrollo.
  • Para equipos de datos, adoptarlo implica dejar que un agente de IA genere y corrija visualizaciones sin tocar el código del gráfico.

Flint: qué es el lenguaje de visualización que presentó Microsoft

Un lenguaje de visualización declarativo no le dice a la computadora cómo dibujar un gráfico paso por paso, sino qué relación hay entre los datos y sus propiedades visuales. En vez de escribir "dibujá un rectángulo en la posición X con esta altura", el autor de la especificación declara "el eje X representa el campo categoría y el eje Y representa el campo ventas": el motor de render se encarga del resto.

Ese enfoque no es nuevo. Lo que cambia con Flint es el destinatario: la especificación no está pensada primero para que la escriba una persona en un editor, sino para que la genere un modelo de lenguaje dentro de un flujo agéntico. Eso importa porque un LLM comete errores distintos a los de un desarrollador humano: no olvida un punto y coma, pero sí puede inventar un campo que no existe en los datos o mezclar tipos de codificación incompatibles. Un formato pensado para IA prioriza que esos errores sean fáciles de detectar con un validador de esquema, antes de que lleguen a la pantalla del usuario.

Contexto e historia: de D3.js a los gráficos generados por prompts

D3.js, publicado por Mike Bostock en 2011, sigue siendo la base de facto de la visualización de datos en la web: manipula el DOM y el SVG directamente y da control casi total sobre cada elemento. Ese poder tiene un costo: cada gráfico es, en esencia, un programa completo.

Como respuesta a esa complejidad surgió Vega-Lite, desarrollado por el Interactive Data Lab de la Universidad de Washington, que aplica la gramática de gráficos de Leland Wilkinson en un formato JSON declarativo. Más tarde, Observable Plot ofreció una capa aún más concisa sobre el propio D3, pensada para exploración rápida en notebooks. Los tres proyectos comparten un objetivo: reducir la distancia entre "quiero ver esto" y el gráfico final.

Flint entra en esa misma línea, pero con un matiz de diseño distinto: mientras Vega-Lite y Observable Plot se diseñaron para que las escriba una persona con criterio visual, Flint asume que el autor principal de la especificación va a ser un modelo de lenguaje dentro de un agente, y que un humano solo va a revisar el resultado.

Flint describe el gráfico como datos, no como pasos de dibujo.

Detalles técnicos: cómo se estructura una especificación declarativa como la que propone Flint

La documentación oficial de Flint está en microsoft.github.io/flint-chart/ y es la referencia obligada para la sintaxis exacta del proyecto. Lo que sí se puede explicar con certeza es el patrón general que comparten los lenguajes declarativos de este tipo, y que ayuda a entender qué problema resuelve Flint: separar datos, marca visual y codificación en vez de mezclarlos en un único bloque de código.

Un ejemplo mínimo, con la estructura típica de este tipo de gramática de gráficos, se ve así:

{
  "mark": "bar",
  "data": {
    "values": [
      { "lenguaje": "Python", "adopcion": 45 },
      { "lenguaje": "TypeScript", "adopcion": 38 },
      { "lenguaje": "Rust", "adopcion": 22 }
    ]
  },
  "encoding": {
    "x": { "field": "lenguaje", "type": "nominal" },
    "y": { "field": "adopcion", "type": "quantitative" }
  }
}
Enter fullscreen mode Exit fullscreen mode

Ese bloque no dibuja nada por sí mismo: describe una relación (una barra por lenguaje, con altura según adopción) que un renderizador interpreta. Un ejemplo más realista agrega una tercera dimensión codificada por color, algo habitual cuando un agente necesita comparar más de dos variables en el mismo gráfico:

{
  "mark": "point",
  "data": { "url": "metricas_equipo.json" },
  "encoding": {
    "x": { "field": "fecha", "type": "temporal" },
    "y": { "field": "tiempo_respuesta_ms", "type": "quantitative" },
    "color": { "field": "servicio", "type": "nominal" }
  }
}
Enter fullscreen mode Exit fullscreen mode

Para un agente de IA, la ventaja de este formato frente a generar JavaScript de D3 es doble: primero, el espacio de tokens válidos es mucho más chico porque solo hay que completar campos de un esquema conocido; segundo, un validador puede rechazar la especificación antes de renderizarla si el modelo inventó un campo que no existe en los datos.

💡 Tip: antes de renderizar una especificación generada por un LLM, validala contra el esquema del lenguaje (JSON Schema o equivalente) y solo entonces pasala al motor de render: así el error queda contenido en un mensaje de validación, no en un gráfico roto en pantalla.

Flint frente a las alternativas ya establecidas

HerramientaCuándo usarlaVentajaLimitación

Flint (Microsoft)Un agente de IA genera y ajusta gráficos sin intervención humana directaDiseñado desde el inicio para ser escrito y validado por un LLMProyecto reciente, con ecosistema y ejemplos todavía reducidos
Vega-LiteDashboards interactivos con una gramática de gráficos maduraEspecificación declarativa con años de adopción y herramientas alrededorEl esquema es extenso y no se diseñó pensando en generación por LLM
D3.jsVisualizaciones a medida con control total sobre el DOM y el SVGFlexibilidad prácticamente ilimitadaCódigo imperativo, difícil de generar de forma confiable con IA
Observable PlotGráficos exploratorios rápidos dentro de notebooksAPI concisa construida sobre D3Menos expresivo que D3 puro para casos muy particulares

Cómo empezar a probar el enfoque hoy

El proyecto se publica como sitio de GitHub Pages, lo que en la convención habitual de GitHub significa que el código fuente vive en un repositorio de la misma organización. Para explorarlo, el primer paso es abrir la documentación en el navegador y, si querés revisar el código fuente, clonar el repositorio:

Windows (PowerShell):

git clone https://github.com/microsoft/flint-chart.git
cd flint-chart
start https://microsoft.github.io/flint-chart/
Enter fullscreen mode Exit fullscreen mode

macOS:

git clone https://github.com/microsoft/flint-chart.git
cd flint-chart
open https://microsoft.github.io/flint-chart/
Enter fullscreen mode Exit fullscreen mode

Linux:

git clone https://github.com/microsoft/flint-chart.git
cd flint-chart
xdg-open https://microsoft.github.io/flint-chart/
Enter fullscreen mode Exit fullscreen mode

Para confirmar que estás mirando la versión activa del proyecto y no una copia local desactualizada, compará el commit más reciente del repositorio clonado (git log -1) contra la fecha de la última actualización visible en la propia página de documentación.

📌 Nota: los sitios servidos desde GitHub Pages con el patrón organizacion.github.io/nombre-repo se generan, casi siempre, a partir de un repositorio público con ese mismo nombre dentro de la organización: es la forma más rápida de encontrar el código fuente de un proyecto así.

Impacto y análisis

Flint no aparece en el vacío. Es parte de un patrón más amplio: adaptar formatos que antes se diseñaban para humanos a formatos pensados para que los produzca un modelo de lenguaje dentro de un agente. El mismo razonamiento explica por qué existe el Model Context Protocol para conectar herramientas con agentes, o por qué tantos proveedores de LLM empujan la generación con salida estructurada (JSON Schema forzado) en lugar de texto libre: reducir el espacio de error facilita que un sistema automático detecte y corrija fallas sin intervención humana en cada paso.

El riesgo, honestamente, es la fragmentación. Vega-Lite y Observable Plot ya tienen años de adopción, documentación extensa y son los formatos que muchos asistentes de IA, incluidos los que corren código de análisis de datos, ya generan por defecto. Que Flint tenga que competir contra ese estándar de facto, en vez de complementarlo, es la pregunta abierta más importante del proyecto: si termina siendo un formato más entre varios, el problema que buscaba resolver (reducir la ambigüedad para el LLM) se repite un nivel más arriba, en la elección de qué lenguaje usar.

Qué sigue

Lo lógico, si Microsoft sostiene el desarrollo, es ver integraciones con sus propias herramientas de agentes y con productos de datos como Power BI o Fabric, donde ya existe una necesidad concreta de que un asistente genere visualizaciones a partir de una pregunta en lenguaje natural. También va a ser clave ver si otros proveedores de LLM, no solo los de Microsoft, adoptan el formato como salida estructurada: eso decidiría si Flint se convierte en un estándar cruzado o queda como una herramienta interna.

Vega-Lite y Observable Plot ya dominan el espacio que Flint busca ocupar.

💭 Clave: el valor real de un lenguaje de visualización para IA no está en la sintaxis, sino en qué tan fácil es para un validador automático rechazar una especificación inválida antes de que llegue a la pantalla del usuario.

📖 Resumen en Telegram: Ver resumen

Probalo vos: abrí microsoft.github.io/flint-chart/ en el navegador y revisá los ejemplos de la documentación oficial para ver la sintaxis exacta antes de generar tu primera especificación.

Preguntas frecuentes

¿Qué es Flint?

Es un lenguaje de visualización declarativo publicado por Microsoft, documentado en microsoft.github.io/flint-chart/ y presentado como un formato pensado para que lo genere un modelo de lenguaje.

¿En qué se diferencia de D3.js?

D3.js es imperativo: hay que escribir el código que dibuja cada elemento. Flint, como Vega-Lite, describe el gráfico como una relación entre datos y propiedades visuales, y deja el dibujo a un renderizador.

¿Reemplaza a Vega-Lite u Observable Plot?

No hay evidencia de que ese sea el objetivo. Los tres resuelven un problema similar; la diferencia de Flint está en para quién se diseñó el formato: un agente de IA en vez de una persona.

¿Necesito saber JavaScript para usar Flint?

Para escribir una especificación, no. Para renderizarla en una página web o modificar el motor de render, probablemente sí, según cómo esté implementado el proyecto.

¿Es un proyecto de código abierto?

Se aloja en GitHub Pages bajo la organización de Microsoft, el patrón típico de un proyecto público en desarrollo. La licencia y el estado exacto del repositorio conviene confirmarlos en la fuente oficial.

¿Dónde está la documentación oficial?

En microsoft.github.io/flint-chart/, la fuente primaria de este artículo.

Referencias

  • microsoft.github.io/flint-chart/: página oficial del proyecto Flint, "A Visualization Language for the AI Era".
  • Vega-Lite: gramática de gráficos declarativa del Interactive Data Lab de la Universidad de Washington.
  • D3.js: la biblioteca de visualización imperativa que sigue siendo la base de gran parte del ecosistema web.
  • Observable Plot: capa declarativa concisa construida sobre D3 para exploración rápida de datos.

📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.

Top comments (0)