Analyse Python
Certaines questions ne se règlent pas avec SQL seul — distributions, régressions, transformations sur mesure. Datarelix exécute alors du Python dans un bac à sable isolé.
Quand Python s’exécute
- Quand une question demande une analyse qui dépasse le SQL — en général des graphiques ou des agrégations que pandas gère mieux que SQL.
- Quand vous activez l’icône graphique et que le plan comprend une étape en bac à sable.
Les étapes en bac à sable consomment les résultats de l’étape SQL. Le DataFrame que vous obtenez, ce sont les lignes produites par l’étape SQL.
Ce qui est disponible dans le bac à sable
- pandas, numpy pour la manipulation de données.
- scipy, statsmodels pour les statistiques.
Le bac à sable exécute un ensemble fixe et vérifié de bibliothèques scientifiques Python — pandas, numpy, scipy et statsmodels. L’installation de paquets arbitraires n’est pas possible.
Les graphiques ne sont pas écrits en Python. Quand votre question appelle une visualisation, Datarelix génère une spécification de graphique déclarative à partir du résultat de la requête et l’affiche sous forme de graphique Vega-Lite interactif — le bac à sable sert à l’analyse de données (transformations, statistiques), pas au tracé.
Ce qui n’est PAS disponible
- Pas de réseau. Le bac à sable ne peut pas émettre d’appels HTTP sortants. Impossible de faire
requests.get("...")pour exfiltrer des données. - Pas de système de fichiers hors du répertoire temporaire de l’exécution. Pas de lecture dans votre répertoire personnel, pas d’écriture durable dans
/tmp. - Pas de shell.
os.systemetsubprocesssont bloqués. - Pas de chargement de code natif. Pas de
ctypes, pas de FFI.
Ces limites sont appliquées au niveau du système d’exploitation (système de fichiers racine en lecture seule, capacités retirées, isolation par espace de noms réseau).
Limites de ressources
| Limite | Valeur par défaut |
|---|---|
| Délai d’exécution total | 30s |
| Mémoire | 512 MB |
| CPU | 1 cœur |
| Octets de sortie | 10 MB |
Ces limites gardent l’analyse rapide et bornée. Les plans Enterprise peuvent les relever — contactez-nous.
Inspecter une étape en bac à sable
Ouvrez la trace sur le message de l’assistant. Vous y verrez :
- Le code Python produit par le LLM.
- Le DataFrame consommé (référencé par son nom).
- L’artefact produit (tableau ou graphique).
- Les sorties stdout / stderr capturées pendant l’exécution.
En cas d’échec, la classe d’erreur est CODE_ERROR et le type et le message de l’exception figurent dans la trace.
Quand Python n’est pas la réponse
Si le Python généré échoue à répétition ou ne correspond pas à la question, Datarelix réessaie automatiquement, dans la limite configurée (3 par défaut). Au-delà, l’exécution est marquée en échec avec un PLAN_FAILURE. Reformulez la question et redemandez.