Utiliser l'IA pour générer une requête de base de données est cool. Mais qu’en est-il du contrôle d’accès ?

DEV - 06/11
Les grands modèles linguistiques ont montré au monde son incroyable polyvalence. L'un de ses plus remarquables...

Les grands modèles linguistiques ont montré au monde son incroyable polyvalence. L’un de ses pouvoirs les plus remarquables est de transformer un langage humain flou en code exécutable. Cela aide non seulement les ingénieurs à améliorer leur productivité, mais permet également aux personnes non techniques de réaliser ce qui nécessitait auparavant l'aide des développeurs.

La génération de requêtes de données analytiques est l'un des cas d'utilisation les plus populaires de la génération de code basée sur LLM. Quoi de plus cool pour les analystes commerciaux que de poser une question dans un langage humain simple et d'obtenir une visualisation en quelques secondes ? Traditionnellement, seuls les grands noms comme PowerBI et Google Sheets pouvaient offrir de telles fonctionnalités, mais désormais LLM a démocratisé les capacités de l'IA et a abaissé la barre. Dans cet article, je vais démontrer une implémentation simple et aborder également un sujet important mais souvent négligé : le contrôle d'accès.

Exigences

Supposons que nous ayons un magasin de commerce électronique vendant des appareils électroniques, des meubles et des équipements de plein air. Le magasin a le modèle de données suivant (considérablement simplifié) :

Notre scénario imaginaire est que l'analyste commercial souhaite poser des questions analytiques sur les données du magasin dans un anglais simple et obtenir des graphiques. Un exemple de question pourrait être : « Montrez-moi les ventes totales de produits par catégorie ».

Pour ajouter une touche supplémentaire, nous voulons également nous assurer que l'analyste ne peut accéder qu'aux données qu'il est autorisé à consulter. Chaque utilisateur analyste se voit attribuer une « région » et il ne peut voir que les données de cette région.

Empiler

Voici les frameworks et bibliothèques utilisés pour créer cette démo :

  • Remix.run comme framework full-stack
  • Langchain pour l'interface avec l'API OpenAI
  • Prisma ORM pour l'accès à la base de données de modélisation des données
  • ZenStack pour le contrôle d'accès
  • Charts.js pour créer des diagrammes

Mise en œuvre

Vous pouvez trouver le code du projet terminé à la fin de cet article.

Flux de travail général

Le workflow général de l'implémentation ressemble à ceci :

L'une des principales différences entre cette démo et d'autres projets de requêtes de données basés sur l'IA est que nous avons choisi de générer des requêtes Prisma au lieu du SQL brut. Ce choix présente à la fois des avantages et des inconvénients :

  • ⬆️ La requête P...
    [Courte citation de 8% de l'article original]
Loading...