| --- |
| library_name: transformers |
| license: apache-2.0 |
| base_model: |
| - Ellbendls/Qwen-3-4b-Text_to_SQL |
| pipeline_tag: text-generation |
| datasets: |
| - gretelai/synthetic_text_to_sql |
| language: |
| - fra |
| - eng |
| - zho |
| - spa |
| - por |
| - deu |
| - ita |
| - rus |
| - jpn |
| - kor |
| - vie |
| - tha |
| - ara |
| --- |
| |
| # Modèle Text-to-SQL – Version Strict + Fine-Tuning Personnalisé |
|
|
| Ce modèle est une version améliorée de **Ellbendls/Qwen-3-4b-Text_to_SQL** (Apache-2.0). |
| Il inclut : |
|
|
| ### ✔ un pré-prompt intégré “Discipline SQL”, |
| ### ✔ un léger fine-tuning sur un dataset interne spécialisé, |
| ### ✔ un packaging propre pour un usage en production. |
|
|
| L’objectif est de fournir une génération SQL **fiable, stricte, reproductible et mieux alignée** sur les besoins métier spécifiques du cas d’usage ciblé. |
|
|
| --- |
|
|
| ## 🧠 Description du modèle |
|
|
| Ce modèle transforme des instructions en langage naturel en requêtes SQL standardisées. |
| La version originale a été améliorée sur deux axes : |
|
|
| ### **1) Discipline SQL intégrée dans le `generation_config.json`** |
| Elle impose : |
| - sortie **UNIQUEMENT SQL** |
| - format propre et cohérent |
| - alias systématiques dans les jointures |
| - liste explicite des colonnes |
| - **sélection de toutes les colonnes seulement si l’utilisateur le demande explicitement** |
| - pas d’invention de tables ou colonnes |
| |
| ### **2) Fine-tuning léger basé sur un dataset interne** |
| Ce fine-tuning ajoute : |
| - de nouveaux schémas de base de données |
| - des requêtes métiers typiques |
| - un style de SQL homogène |
| - de meilleures performances sur un domaine précis |
| |
| Ce fine-tuning (LoRA ou QLoRA) permet d’adapter finement le comportement du modèle sans nécessiter un entraînement complet. |
| |
| --- |
| |
| ## 🔍 Caractéristiques clés |
| |
| ### **✔ Conversion texte → SQL fiable** |
| Génération de requêtes SQL propres, correctes et adaptées aux schémas ciblés. |
| |
| ### **✔ Standardisation stricte, mais flexible** |
| Le modèle évite `SELECT *` **à moins que l’utilisateur demande explicitement “toutes les colonnes”**. |
| |
| ### **✔ Aligné sur ton domaine métier** |
| Grâce au fine-tune interne, les requêtes sont plus pertinentes et contextualisées. |
| |
| ### **✔ Multilingue** |
| Fonctionne en français, anglais, espagnol, portugais, allemand, chinois, etc. |
| |
| ### **✔ Fenêtre de contexte étendue** |
| Adapté aux grandes bases, requêtes complexes, longues définitions de tables. |
| |
| --- |
| |
| ## 🧩 Exemple de prompt interne intégré |
| |
| Le pré-prompt utilisé dans cette version : |
| |
| You are a strict SQL generation engine. |
| Your only task is to convert natural language instructions into valid SQL queries. |
| Rules: |
| 1. Output ONLY SQL. No explanations, no comments. |
| 2. Always generate syntactically correct SQL. |
| 3. Never invent tables or columns. |
| 4. Avoid SELECT * unless the user explicitly requests all columns. |
| 5. Use explicit column lists by default. |
| 6. Use clear table aliases when joins are present. |
| 7. Keep formatting clean and standardized. |
| |
| --- |
| |
| ## 🚀 Exemple d’utilisation |
| |
| ```python |
| from transformers import AutoTokenizer, AutoModelForCausalLM |
| |
| model_name = "Hugo991/SQLBuilder" |
| |
| tokenizer = AutoTokenizer.from_pretrained(model_name) |
| model = AutoModelForCausalLM.from_pretrained(model_name) |
| |
| user_input = "Montre-moi tous les départements avec leur identifiant." |
| |
| # On récupère le template intégré dans le generation_config |
| template = tokenizer.generation_config.prompt_template |
| prompt = template.replace("{input}", user_input) |
| |
| inputs = tokenizer(prompt, return_tensors="pt") |
| outputs = model.generate(**inputs, max_new_tokens=256) |
|
|
| print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |