Code Execution

Code Execution donne au LLM Chat un terminal isolé. Le modèle écrit un court programme, l'exécute sur les fichiers joints à votre conversation, et tout ce que ce programme affiche ou écrit revient dans le chat — sous forme de sortie à lire et de fichiers à télécharger. C'est ainsi que le chat totalise les lignes d'un tableur, convertit d'un format à l'autre et produit documents, classeurs, présentations et graphiques.

À quoi cela sert

À tout ce qui doit être calculé ou écrit plutôt que décrit :

  • Calculs sur des données — totaux, écarts, pourcentages et durées écoulées sur les lignes d'un fichier, là précisément où lire les nombres et les additionner de tête tourne mal.
  • Conversion et nettoyage — CSV vers Excel, un tableau large transformé en format long, doublons supprimés, dates normalisées, deux exports comparés.
  • Production de fichiers — un rapport Word, un modèle rempli, une présentation, un export JSON ou Markdown, ou une archive zip lorsqu'il y a trop de fichiers pour les joindre un à un.
  • Graphiques — un graphique en barres ou en courbes de vos données, enregistré comme image et joint à la conversation.
  • Images et PDF — nombre de pages, extraction de texte, fusion ou découpage de PDF, redimensionnement d'images par lot, création d'une planche-contact.

Un calcul isolé énoncé dans la question — 15 % de 200 — reçoit une réponse directe, sans exécution. Le bac à sable sert au travail sur des données que le modèle ne peut pas traiter de tête de façon fiable, et à tout ce qui doit aboutir à un fichier.

Comment l'activer

Code Execution est une capacité intégrée, listée avec les autres outils dans le sélecteur d'outils du chat. Désactivez-la pour une conversation et le modèle répond sans elle ; réactivez-la et la question suivante peut de nouveau s'en servir.

Le sélecteur d'outils du chat avec la capacité Code Execution activée
Sur site
Code Execution exécute le bac à sable avec Docker sur la machine qui héberge QAnswer : un démon Docker doit donc être accessible au backend. Les administrateurs peuvent activer ou désactiver la capacité pour la plateforme, une organisation ou une équipe — voir l'administration MCP.

Exemples

Ce sont de vraies demandes, écrites comme les gens les écrivent — aucune ne mentionne de code, de bac à sable ni de langage. Chacune aboutit à une réponse vérifiable et, quand cela a du sens, à un fichier à télécharger.

Tableurs et données

  • « Supprime les doublons exacts du fichier joint sales_dirty.csv, convertis chaque order_date au format ISO et renvoie-le sous le nom sales_clean.xlsx. » Trois formats de date entrent, un classeur propre en ressort, et le nombre de lignes est indiqué pour que vous puissiez le vérifier.
  • « Ajoute une colonne margin calculée comme (price − cost) / price et renvoie le fichier sous le nom products_with_margin.xlsx avec les lignes à faible marge mises en évidence. Quelles SKU sont sous les 10 % ? »
  • « Joins orders.csv à customers.csv sur customer_id et dis-moi exactement quelles commandes n'ont pas de client correspondant. » Les deux pièces jointes parviennent à la même exécution, et les écarts sont nommés au lieu d'être escamotés.
  • « Le fichier joint quarterly_wide.csv a une colonne par trimestre. Transforme-le au format long avec product, quarter et revenue. »
  • « Compare catalogue_v1.csv et catalogue_v2.csv sur sku : lesquels ont été ajoutés, lesquels supprimés, et lesquels ont changé de prix, avec l'ancienne et la nouvelle valeur. »
  • « Vérifie contacts_dirty.csv — un e-mail doit contenir exactement un @ et aucun espace, un code postal uniquement des chiffres. Signale les problèmes et dis-moi quels identifiants de ligne sont incorrects. »
Une exécution du chat nettoyant un CSV joint et le renvoyant sous forme de classeur Excel

Des nombres qui doivent tomber juste

  • « La facture jointe annonce un total de 8000,00 EUR HT. Les lignes s'additionnent-elles vraiment à ce montant ? Donne-moi le net correct, la TVA à 20 % et le TTC. » Elles totalisent 9090,00 : la facture sous-estime donc le net de 1090,00 — exactement le genre de question où additionner à l'œil tourne mal.
  • « Calcule pour chaque ticket le nombre d'heures écoulées entre opened_at et resolved_at et dis-moi lesquels ont pris plus de 24 heures. » De l'arithmétique de dates à cheval sur plusieurs jours et un week-end : facile à rater, facile à vérifier.
Une exécution du chat vérifiant les lignes d'une facture par rapport au total annoncé

Documents, présentations et courriers

  • « Construis un PowerPoint à partir du tableau de KPI joint : une diapositive de titre plus une diapositive par KPI, chacune avec un petit graphique en courbes de ses quatre trimestres. »
  • « Remplis les espaces réservés de notre northwind_template.pptx avec une revue Q1–Q4 construite à partir du CSV, en conservant la mise en page et les couleurs du modèle. » Votre modèle d'entreprise est préservé — seuls les espaces réservés changent.
  • « Rédige une lettre d'offre Word par destinataire, en l'appelant par son nom avec son entreprise, son rôle et sa remise, et regroupe le tout dans offers.zip. » Plus de documents qu'on ne peut en joindre un à un : l'exécution les rassemble donc dans une archive.
  • « Remplis le modèle de rapport d'audit, remplace l'espace réservé aux constats par un vrai tableau Word et ajoute un graphique des constats par niveau de gravité. »
Une exécution du chat construisant une présentation PowerPoint à partir d'un tableau de KPI joint

PDF

  • « Combien de pages compte le PDF joint ? Renvoie-moi aussi les pages 1 à 5 dans un nouveau fichier. »
  • « Fusionne ces deux PDF en mettant le paracétamol en premier, et indique-moi le nombre de pages de chaque fichier d'entrée et du résultat. »
  • « Sur combien de pages apparaît “escalation”, quelle que soit la casse, et combien mentionnent “KPI” ? Donne-moi un CSV des numéros de page correspondants. »
  • « Donne-moi pour le PDF joint un tableau du nombre de mots par page sous le nom page_stats.xlsx, et dis-moi quelle page en compte le plus. »
Une exécution du chat indiquant le nombre de pages d'un PDF joint et renvoyant un extrait

Images, audio et graphiques vectoriels

  • « Redimensionne les deux images jointes à 800 pixels de large en conservant les proportions, et indique-moi les dimensions d'origine et les nouvelles. »
  • « Fais une seule planche-contact à partir des trois images jointes : des vignettes côte à côte, chacune de 300 pixels de large, sur fond blanc. »
  • « Ajoute un filigrane portant la mention (c) QAnswer en bas à droite de cette image. » Demandé juste après que le chat a généré l'image — une image produite par l'assistant est un fichier de la conversation comme un autre, et peut donc être retouchée ensuite.
  • « Génère une tonalité sinusoïdale de 440 Hz pendant 3 secondes, dans un fichier audio téléchargeable. »
  • « Génère un SVG représentant une balle et donne-moi le fichier. » Un balisage que le modèle pourrait simplement écrire arrive tout de même sous forme de fichier plutôt que de texte dans la réponse.
Une exécution du chat produisant un fichier image à partir d'une demande formulée dans la conversation

Plusieurs étapes à la suite

Les fichiers persistent d'une exécution à l'autre : un traitement peut donc se construire au fil d'une conversation.

  1. « Ajoute une colonne margin_pct au fichier joint catalogue.csv, arrondie à une décimale, et enregistre-le sous catalogue.csv. »
  2. « Trie maintenant catalogue.csv par margin_pct décroissant et réenregistre-le. »
  3. « Exporte le catalogue.csv trié vers catalogue.xlsx et dis-moi combien de lignes il contient. »

Chaque tour lit ce que le précédent a écrit : la troisième exécution exporte donc le fichier trié et non le fichier téléversé à l'origine.

Trois tours de conversation successifs, chaque exécution lisant le fichier écrit par la précédente

En combinaison avec d'autres outils

« Regarde https://qanswer.ai et crée une présentation de 2 diapositives à son sujet. » La page est lue par l'extraction d'URL de Web Search et la présentation est écrite dans le bac à sable, en un seul tour. Code Execution n'a pas de réseau propre : associer les deux est donc la façon dont des données en direct finissent dans un fichier produit.

Un tour unique qui lit une page web avec Web Search et écrit une présentation dans le bac à sable

Ce qui est disponible dans le bac à sable

Le bac à sable est un petit conteneur Linux doté d'un interpréteur et d'un jeu fixe de bibliothèques. Rien ne peut être installé à l'exécution : ce qui est listé ici est donc tout ce qu'une exécution peut utiliser.

  • Python 3.11 — pandas, numpy et matplotlib pour les données et les graphiques ; scipy pour les statistiques, le signal et l'audio ; mpmath pour l'arithmétique en précision arbitraire ; openpyxl, xlsxwriter, xlrd et odfpy pour les tableurs ; pypdf, python-docx et python-pptx pour les documents, les PDF et les présentations ; Pillow pour les images ; tabulate pour les tableaux en texte.
  • Autres langages — JavaScript, Java, C++, Go, Ruby et R s'exécutent également, avec leurs seules bibliothèques standard. C'est Python qui est utilisé pour travailler sur vos fichiers, parce que c'est lui qui dispose des lecteurs et des écrivains.

Limites

  • Aucun réseau — le bac à sable n'a aucun accès à Internet. Une exécution ne peut ni récupérer une URL, ni appeler une API, ni installer un paquet.
  • Temps et mémoire — une exécution est arrêtée au bout de 30 secondes et dispose de 512 Mo de mémoire et d'un CPU. La sortie est tronquée au-delà d'environ 8 000 caractères.
  • Taille des fichiers — jusqu'à dix fichiers en entrée (25 Mo chacun, 50 Mo au total) et jusqu'à dix en sortie (25 Mo chacun).
  • Aucun état entre les exécutions — les variables, les paquets installés et tout ce qui est gardé en mémoire disparaissent à la fin d'une exécution. Seuls les fichiers sont conservés — c'est pourquoi un traitement en plusieurs étapes écrit dans un fichier ce dont il a besoin.
Avertissement
Faute de réseau, une demande qui exige des données en direct — le taux de change du jour, une page du web — ne peut pas être satisfaite par une exécution. C'est Web Search qui s'en charge, et les deux peuvent être utilisés dans la même conversation.

Isolation

Chaque exécution a lieu dans un conteneur sans accès réseau, et son répertoire de travail est effacé aussi bien avant le démarrage du programme qu'après sa fin : rien d'une conversation ne peut donc être vu par la suivante. Vos fichiers sont copiés depuis votre propre conversation et ne sont jamais envoyés à un service tiers.