Dash : agent de données auto‑apprenant avec 6 couches de contexte

Dash : Un agent de données auto‑apprenant avec six couches de contexte

Introduction

À l'ère des grands modèles de langage, générer un SQL précis à partir de requêtes en langage naturel demeure un défi. Dash (repo : https://github.com/agno-agi/dash) aborde ce problème en combinant une recherche hybride, une base de connaissances riche et une boucle d'apprentissage légère. Il s'agit d'une bibliothèque Python open‑source que vous pouvez intégrer dans un projet ou exécuter en tant que service autonome.

Pourquoi Dash ?

  • Réponses fondées sur le contexte : 6 couches de contexte (schéma, règles métier, motifs de requêtes, documents institutionnels, apprentissages, schéma d'exécution) signifient que chaque réponse est informée par des données réelles.
  • Auto‑amélioration sans re‑entraînement : La machine d'apprentissage consigne les motifs d'erreur et leurs corrections sur le tas, rendant l'agent plus intelligent après chaque requête.
  • Apprentissage continu à coût nul : L'optimisation fine compatible CPU est remplacée par une boucle légère peu dépendante du GPU.
  • Open‑source et extensible : plus de 100 étoiles sur GitHub, licence Apache‑2.0, et une structure de dossiers claire pour ajouter des connaissances.

Architecture de base

flowchart TD
  A[User Question] --> B[Retrieve Knowledge + Learnings]
  B --> C[Reason About Intent]
  C --> D[Generate Grounded SQL]
  D --> E[Execute & Interpret]
  E -->|Success| F[Return Insight]
  E -->|Error| G[Diagnose → Fix → Save Learning]
  G --> C

Les six couches de contexte

  1. Utilisation de la table – Fichiers JSON décrivant schémas, colonnes et relations.
  2. Annotations humaines – Mesures métier, définitions et règles.
  3. Motifs de requêtes – Échantillons SQL prouvés stockés dans des fichiers .sql.
  4. Connaissances institutionnelles – Documents externes ou wikis (optionnel).
  5. Apprentissages – Corrections d'erreurs générées par la machine.
  6. Contexte d'exécution – Introspection du schéma en temps réel via l'outil introspect_schema.

Démarrage rapide

# Clone the repository
git clone https://github.com/agno-agi/dash && cd dash

# Set your OpenAI key
cp example.env .env
# Edit .env to add OPENAI_API_KEY

# Build and start the service
docker compose up -d --build

# Load sample data and knowledge
docker exec -it dash-api python -m dash.scripts.load_data
docker exec -it dash-api python -m dash.scripts.load_knowledge

A présent votre API est disponible sur http://localhost:8000/docs.

Utilisation de l'interface Web

  1. Ouvrez https://os.agno.com et connectez‑vous.
  2. Ajoutez un Serveur en ligneLocal → http://localhost:8000.
  3. Cliquez sur Connecter.
  4. Posez des questions telles que : Qui a remporté le plus de championnats du monde de F1 ?, Combien de courses Lewis Hamilton a‑il gagnées ?
  5. L'agent utilise automatiquement les six couches de contexte pour produire une réponse significative.

Exemple de flux de requête

User: Quel était le chiffre d'affaires total au dernier trimestre ?

1. Dash localise le schéma de la table `orders` et les règles métier.
2. Il sélectionne un motif de requête enregistré qui calcule le chiffre d'affaires.
3. Génère un SQL avec le filtrage approprié (exclure les commandes remboursées).
4. Exécute contre la base de données.
5. Renvoie un résumé lisible par un humain.

Explication de la boucle d'auto-apprentissage

  1. Succès d'exécution – L'insight est retourné.
  2. Échec d'exécution – Dash diagnostique le bug (ex. mauvais type de donnée), applique une correction et la stocke dans learnings.
  3. La prochaine fois qu'une requête similaire est exécutée, la correction est automatiquement appliquée.
  4. Comme cette boucle s'exécute en arrière-plan, aucune formation d'ingénierie supplémentaire n'est requise.

Ajout ou mise à jour de connaissances

Dash attend un dossier knowledge/ bien structuré :

knowledge/
├── tables/          # JSON table metadata
├── queries/         # SQL patterns
└── business/        # Business rules and metrics

Exécutez :

python -m dash.scripts.load_knowledge
# For a clean start
python -m dash.scripts.load_knowledge --recreate

Exemple : Métadonnées de table

{
  \"table_name\": \"orders\",
  \"table_description\": \"Customer orders with denormalized line items\",
  \"use_cases\": [\"Revenue reporting\", \"Customer analytics\"],
  \"data_quality_notes\": [\"created_at is UTC\", \"status values: pending, completed, refunded\", \"amount stored in cents\"]
}

Exemple : Motif de requête

-- <nom de la requête>monthly_revenue
-- <description de la requête>
-- Calcul du chiffre d'affaires mensuel.
-- Convertit les cents en dollars.
-- Exclut les commandes remboursées.
-- </description de la requête>
SELECT
  DATE_TRUNC('month', created_at) AS month,
  SUM(amount) / 100.0 AS revenue_dollars
FROM orders
WHERE status = 'completed'
GROUP BY 1
ORDER BY 1 DESC;

Déploiement sur Railway

# Login to Railway
railway login

# Spin up the required services
./scripts/railway_up.sh

# Load data/knowledge
railway run python -m dash.scripts.load_data
railway run python -m dash.scripts.load_knowledge

# Inspect logs
railway logs --service dash

Le tableau de bord Railway facilite la visualisation des métriques, la mise à jour des variables d'environnement et le redéploiement après les modifications de code.

Bonnes pratiques

  • Maintenir les connaissances fraîches : Revoir régulièrement les métadonnées des tables et les motifs de requêtes.
  • Surveiller les apprentissages : Inspectez le répertoire learnings pour voir quelles corrections l'agent applique.
  • Sécuriser l'API : Ajoutez des couches d'authentification pour les déploiements de production.
  • Exploiter l'API EXA (optionnel) pour un contexte de recherche web supplémentaire.

Conclusion

Dash démontre comment une boucle d'auto‑apprentissage minimaliste, combinée à des connaissances structurées, peut considérablement améliorer les flux de travail de traduction du langage naturel en SQL. En tant que projet open‑source sous licence Apache‑2.0, il invite les contributions de la communauté — que ce soit pour ajouter de nouveaux motifs de requêtes ou étendre le moteur d'apprentissage. Si vous cherchez un assistant IA pratique et léger qui continue d'apprendre sans réentraînement, Dash constitue un point de départ convaincant.

Bonne requête ! 🚀

Original Article: Voir l’original

Partager cet article