🇬🇧 English

SQL Assistant IA : Conversion automatique de langage naturel vers SQL

Un outil open-source pour générer des requêtes SQL en langage naturel et interagir avec votre base de données

Par Angelo Lima

SQL Assistant IA : Conversion automatique de langage naturel vers SQL

SQL Assistant représente un projet personnel que j’ai développé pour répondre à un besoin concret : simplifier l’interaction avec les bases de données à travers une interface conversationnelle. Cet outil open-source permet la conversion automatique de langage naturel en requêtes SQL avec capacité d’exécution directe sur base de données.

Le projet s’adresse aux développeurs, data analystes et utilisateurs occasionnels de bases de données cherchant une solution pratique pour interagir avec leurs systèmes de stockage sans maîtriser parfaitement la syntaxe SQL.

Cette initiative personnelle s’inscrit dans mes explorations continues des applications pratiques de l’IA, complémentaire à mes analyses sur les vulnérabilités des systèmes d’IA et l’impact écologique de ces technologies.

Lien vers le projet : GitHub – SQL Assistant


Architecture et fonctionnalités techniques

Capacités principales

L’outil intègre les fonctionnalités suivantes :

Génération SQL automatisée : Conversion de requêtes en langage naturel vers syntaxe SQL standard
Modes d’opération duaux : Mode “basic” (génération sans exécution) et “tools” (exécution directe)
Support multi-modèles : Compatibilité avec diverses APIs d’IA (OpenAI, Mistral, modèles locaux)
Intégration PostgreSQL : Connexion native via Sequelize ORM
Configuration flexible : Adaptation environnementale via fichiers de configuration

Architecture technique

L’application repose sur une architecture modulaire intégrant :

  • Couche d’interface : CLI interactive pour l’utilisateur final
  • Moteur de traduction : Conversion langage naturel → SQL via modèles de langage
  • Connecteur de base de données : Interface standardisée PostgreSQL
  • Système de configuration : Gestion des paramètres d’environnement et de connexion

Installation et configuration

Déploiement initial

git clone https://github.com/Lingelo/sql-assistant.git
cd sql-assistant
yarn install

Configuration environnementale

La configuration s’effectue via un fichier .env définissant les paramètres suivants :

# Configuration AI
IA_HOST=http://localhost:11434/v1
IA_KEY=cle-api
IA_MODEL_NAME=model-name

# Configuration des logs
LOG_LEVEL=info

# Base de données
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=nom_utilisateur
DB_PASSWORD=mot_de_passe
DB_DATABASE=nom_base
MODEL_PATH=./structure.sql
DIALECT=postgres  

# Mode d'exécution
MODE=tools  # "tools" pour exécuter les requêtes, "basic" pour le mode chat

Initialisation

yarn start

Analyse des modes d’utilisation

Mode “basic” : Génération sans exécution

Ce mode fournit une interface de consultation pour la génération de requêtes SQL sans risque d’exécution sur les données :

Bienvenue dans l'assistant SQL, que souhaitez-vous faire ?
> Sélectionne tous les produits avec un prix supérieur à 100.
Assistant SQL :
SELECT * FROM produits WHERE prix > 100;

Cas d’usage : Formation, validation syntaxique, génération de templates

Mode “tools” : Exécution intégrée

Ce mode permet l’exécution directe des requêtes générées avec affichage des résultats :

Bienvenue dans l'assistant SQL, que souhaitez-vous faire ?
> Trouve tous les utilisateurs dont l'email contient 'example.com'.
Assistant SQL :
SELECT * FROM users WHERE email LIKE '%example.com%';

Exécution de la requête…

| id | username | email             | created_at          |
|----|----------|-------------------|---------------------|
| 1  | johndoe  | john@example.com  | 2023-01-10 12:00:00|
...

Cas d’usage : Analyse de données ad-hoc, reporting rapide, exploration de bases de données


Retour d’expérience et analyse du développement

Motivations du projet

Le développement de SQL Assistant est né d’une observation concrète : la friction entre l’intention d’une requête de données et sa traduction en SQL représente souvent un obstacle, même pour des développeurs expérimentés. L’objectif était de créer un outil pratique, utilisable quotidiennement sans complexité excessive.

Défis techniques rencontrés

Architecture modulaire : La conception a privilégié la flexibilité d’intégration avec différents modèles d’IA (OpenAI, Mistral, installations locales) pour éviter la dépendance à un fournisseur unique.

Gestion des erreurs SQL : L’implémentation d’une couche de validation et de feedback permet de corriger automatiquement les erreurs de syntaxe courantes.

Mode dual d’opération : La distinction entre mode “basic” (génération seule) et “tools” (exécution) répond à des besoins sécuritaires différents selon les environnements d’usage.

Avantages constatés en usage

Accessibilité : Réduction de la barrière technique pour les utilisateurs non-spécialistes SQL
Productivité : Accélération de la génération de requêtes complexes
Flexibilité : Support de multiples modèles d’IA et modes d’utilisation
Sécurité optionnelle : Mode basic permettant la validation avant exécution

Axes d’amélioration identifiés

Extension multi-SGBD : Le support actuel limité à PostgreSQL pourrait être étendu à MySQL, SQLite et autres systèmes.

Interface utilisateur : Le passage d’une CLI vers une interface web permettrait une adoption plus large, notamment pour les équipes non-techniques.

Validation sémantique avancée : L’ajout de vérifications de cohérence logique des requêtes réduirait les erreurs d’interprétation.

Considérations de sécurité en environnement de production

L’intégration en production nécessite des mesures de sécurité renforcées :

  • Sandboxing des requêtes : Isolation des exécutions dans des environnements contrôlés
  • Validation préalable : Analyse automatique des requêtes avant exécution
  • Contrôles d’accès : Intégration avec les systèmes de permissions existants
  • Audit et logging : Traçabilité complète des requêtes générées et exécutées

Développements futurs et retour communautaire

Extensions prévues

Le projet continue d’évoluer selon plusieurs axes prioritaires identifiés lors du développement initial :

Support multi-SGBD : Extension vers MySQL, SQLite et autres systèmes populaires
Interface web : Migration vers une interface graphique plus accessible
Validation sémantique : Intégration de vérifications logiques avancées
Gestion des privilèges : Système de contrôle d’accès par rôle

Adoption et feedback

Retours d’expérience utilisateurs : Les premiers retours confirment l’utilité du mode “basic” pour l’apprentissage SQL et du mode “tools” pour l’analyse de données rapide.

Contributions ouvertes : Le projet accueille les contributions de la communauté, particulièrement sur l’extension des connecteurs de bases de données.

Evolution du code : Les améliorations futures seront guidées par les besoins réels constatés en utilisation pratique.


Évaluation comparative

Différenciateurs techniques

SQL Assistant se positionne dans un écosystème comprenant :

  • Solutions propriétaires : GitHub Copilot, ChatGPT Code Interpreter
  • Outils spécialisés : DBT, DataGrip AI Assistant
  • Frameworks open-source : LangChain SQL agents, AutoGen

Différenciation

Simplicité de déploiement : Configuration minimale pour utilisation locale
Transparence : Code source accessible et modifiable
Spécialisation : Focus exclusif sur la génération SQL versus outils généralistes


Conclusions

SQL Assistant représente une solution pratique pour la démocratisation de l’accès aux bases de données via le langage naturel. L’outil démontre la viabilité technique de l’intégration d’IA générative dans les workflows de manipulation de données.

Les limitations identifiées (support mono-SGBD, interface CLI, validation limitée) constituent des axes d’amélioration évidents mais n’invalident pas l’utilité de l’approche pour des cas d’usage spécifiques.

L’évolution future de l’outil dépendra de l’équilibre entre simplicité d’usage et robustesse technique, particulièrement concernant les aspects de sécurité et de validation des requêtes générées.

Cette solution contribue à l’écosystème des outils d’IA appliquée au développement et illustre les possibilités d’automatisation dans la manipulation de données structurées.


Sources

Share: