>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
TypeScript

Comment Microsoft Résout les Problèmes de Graphiques IA Déformés avec Flint

Si vous avez déjà demandé à Claude, ChatGPT ou un modèle local de générer un graphique avec ECharts ou Chart.js, vous avez probablement rencontré un désordre d'axes et des étiquettes illisibles. Les modèles passent des heures à mélanger les clés dans les configurations JSON, cassent les mises en page et nécessitent de volumineux prompts système juste pour dessiner un simple graphique à barres.

L'équipe Microsoft Research, en collaboration avec des chercheurs du laboratoire IDEAS de l'Université Renmin de Chine, a publié le dépôt flint-chart en open source. Il s'agit d'un langage intermédiaire compact et d'un compilateur spécifiquement conçu pour fonctionner avec les LLM et les agents IA.

Pourquoi Un Autre Format de Visualisation

Le problème avec les bibliothèques populaires comme D3, ECharts ou Plotly est leur complexité considérable. Configurer un seul graphique dans ECharts nécessite de passer un objet massif avec des dizaines de champs imbriqués : échelles, intervalles des axes, marges intérieures, formatage de la légende et règles adaptatives. Pour un LLM, c'est une tâche excessivement complexe où des hallucinations ou des erreurs de syntaxe se produisent facilement.

Flint fonctionne différemment. Il endosse le rôle d'une représentation intermédiaire (IR). Le réseau neuronal génère une spécification concise qui ne définit que l'essentiel : le type de graphique, les données d'entrée et le mappage des champs.

Le compilateur Flint prend ce schéma compact, calcule automatiquement les tailles optimales des éléments, formate les axes, supprime les superpositions de texte et traduit le résultat en code natif pour la bibliothèque graphique cible.

Sous le Capot

Contrairement aux bibliothèques standard où les champs sont divisés en chaînes de caractères et nombres simples, Flint utilise le typage sémantique. Le système intègre plus de 70 types sémantiques, notamment Rank, Temperature, Price, Country et Quantity.

Lorsque le compilateur sait qu'un champ contient des données Price, il applique automatiquement les règles de formatage monétaire et sélectionne l'échelle appropriée. Si les données spécifient des pays ou des évaluations, Flint détermine le meilleur placement des étiquettes d'axe pour éviter les superpositions.

Actuellement, la bibliothèque est maintenue dans l'écosystème JS/TS et peut traduire la même spécification vers cinq cibles différentes :

  • Vega-Lite
  • ECharts
  • Chart. js
  • Plotly
  • Graphiques Excel natifs via Office. js

Voici un exemple de compilation d'une spécification vers 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 vous décidez de basculer le moteur de rendu vers ECharts ou Plotly, vous n'aurez pas besoin de modifier le code de spécification lui-même. Appelez simplement assembleECharts(input) ou assemblePlotly(input).

Intégration d'Agents IA via MCP

Les développeurs ont donné la priorité à la préparation aux workflows d'agents autonomes. Le dépôt inclut un serveur flint-chart-mcp qui implémente le Model Context Protocol.

Dans un environnement de développement compatible MCP (comme Cursor ou Claude Desktop), l'agent dispose d'une boîte à outils prête à l'emploi pour la génération de graphiques. Le modèle ne se contente pas de coller du JSON dans le chat—il valide le schéma, vérifie les types et affiche immédiatement un widget interactif dans l'interface de l'éditeur.

Démarrer le serveur dans votre environnement de travail ne prend qu'une seule commande :

npx -y flint-chart-mcp

Structure du Dépôt

Le projet est structuré en monorepo :

  • packages/flint-js — le code principal de la bibliothèque en TypeScript.
  • packages/flint-mcp — l'implémentation du serveur MCP pour les agents.
  • packages/flint-py — un prototype de port Python (actuellement disponible en code source uniquement, le package n'a pas encore été publié sur PyPI).
  • site — un site de démonstration interactif avec un éditeur et une galerie.

Si vous souhaitez explorer le projet localement et apporter des modifications, le déploiement ne prend que quelques minutes :

git clone https://github.com/microsoft/flint-chart
cd flint-chart
npm install
npm run site

Le client de démonstration démarrera à http://localhost:5274/. Le code de la bibliothèque est directement lié au site, donc les modifications apportées à la logique du compilateur sont appliquées à la volée sans reconstruction manuelle des packages.

À Qui S'Adresse Flint

L'outil résout un problème narrow mais douloureux. Si vous construisez des assistants IA, des tableaux de bord avec génération à la volée, ou donnez aux réseaux neuronaux accès à l'analyse de données, Flint élimine la nécessité d'écrire de nombreux validateurs et contournements autour des visualisations.

Le projet est encore récent, mais il a Microsoft Research derrière lui et les mises à jour sont régulières. La version 0.4.0 a ajouté la prise en charge de dizaines de modèles Plotly et de graphiques Excel modifiables, donc la bibliothèque mérite définitivement d'être ajoutée aux favoris.

Projets similaires