Polydesk-logotype
Polydesk.ai — Header

TaskWeaver

TaskWeaver est un framework open source « code-first » développé par Microsoft Research pour construire des agents IA conversationnels spécialisés dans l’analyse de données, capables de convertir des requêtes en langage naturel en code Python exécutable avec prise en charge de structures de données riches, plugins personnalisés et connaissances de domaine.

Le positionnement de TaskWeaver est précis : là où LangChain ou CrewAI sont des frameworks d’agents généralistes, TaskWeaver se concentre sur les tâches d’analyse de données. Vous décrivez ce que vous voulez (« Détecte les anomalies dans les données de ventes stockées dans ma base SQL »), et TaskWeaver génère du code Python qui utilise vos plugins (connexion SQL, algorithme de détection d’anomalies), l’exécute dans un environnement sécurisé, et vous retourne les résultats en langage naturel avec des DataFrames manipulables.

TaskWeaver en un coup d’œil
Catégorie
Framework agent IA code-first pour l’analyse de données
Développeur
Microsoft Research
Langage
Python (>=3.10)
Statut
Archivé le 5 février 2026 (repo read-only). Successeur : Microsoft Agent Framework
Publication
Papier de recherche (arXiv, 2023), open source janvier 2024
Architecture
Planner + Code Interpreter (Code Generator + Code Executor)
Licence
MIT
Verdict
Excellent concept pour l’analyse de données agentique, mais archivé. Migrez vers le Microsoft Agent Framework pour les nouveaux projets
URL
microsoft.github.io/TaskWeaver

Projet archivé (5 février 2026) Le repository GitHub de TaskWeaver a été archivé le 5 février 2026 et est désormais en lecture seule. Microsoft recommande de migrer vers le Microsoft Agent Framework (successeur unifié de Semantic Kernel, AutoGen et TaskWeaver). Le code source reste disponible à des fins éducatives et de référence, mais ne recevra plus de mises à jour.

Le problème que TaskWeaver résolvait

Les frameworks d’agents IA classiques (LangChain, AutoGen) traitent les données comme des chaînes de texte. Pour un chatbot ou un agent de recherche, c’est suffisant. Mais pour l’analyse de données, c’est un problème majeur. Vous voulez manipuler des DataFrames pandas, passer des tableaux de données entre outils, appliquer des algorithmes statistiques, et visualiser des résultats. Tout cela nécessite des structures de données riches (listes, dictionnaires, DataFrames) que les frameworks texte-first ne gèrent pas nativement.

TaskWeaver résolvait ce problème en prenant une approche « code-first » : au lieu de chaîner des appels d’outils textuels, il génère du code Python complet qui manipule directement les structures de données Python. Les plugins sont de simples fonctions Python que le LLM peut appeler dans le code généré. Le résultat est un agent qui peut effectuer une analyse de données complète (extraction SQL, transformation, modélisation, visualisation) en une seule conversation.


Architecture

TaskWeaver repose sur trois composants principaux organisés en deux rôles :

Le Planner

Le Planner est le point d’entrée du système. Il interagit avec l’utilisateur et remplit deux fonctions : la planification (décomposition de la requête en sous-tâches, suivi de la progression, auto-réflexion) et la réponse (transformation des résultats d’exécution en réponses lisibles par un humain). Le Planner utilise un processus de planification à deux niveaux : un plan de haut niveau qui décompose la requête en étapes, et pour chaque étape, le Code Generator produit un plan détaillé sous forme de chaîne de pensée et de code.

Le Code Interpreter

Le Code Interpreter se compose de deux sous-composants :

Code Generator (CG) : génère du code Python pour chaque sous-tâche en considérant les plugins disponibles et les exemples de tâches du domaine. Le code est généré avec une chaîne de pensée (chain-of-thought) qui explique la logique avant de produire le code.

Code Executor (CE) : exécute le code généré dans un environnement sécurisé. Depuis mars 2024, TaskWeaver utilise par défaut un mode conteneur (Docker) pour l’exécution, isolant le code généré du système hôte. Le CE maintient l’état entre les exécutions (variables, DataFrames en mémoire), ce qui permet des sessions interactives multi-tours.

Plugins

Les plugins TaskWeaver sont des fonctions Python enrichies de métadonnées (nom, description, arguments, types de retour). Le LLM utilise ces métadonnées pour décider quand et comment appeler chaque plugin dans le code généré. Vous pouvez encapsuler n’importe quel algorithme ou accès données dans un plugin : connexion à une base SQL, algorithme de détection d’anomalies, modèle ML entraîné, appel API externe, etc.

La sélection de plugins est dynamique : le système choisit automatiquement les plugins pertinents pour chaque sous-tâche, au lieu de les charger tous systématiquement. Cela réduit la taille du contexte envoyé au LLM et améliore la pertinence du code généré.

Planification à deux niveaux

TaskWeaver utilise un processus de planification en deux couches pour traiter les requêtes. Au premier niveau, le Planner génère un plan de haut niveau décrivant les étapes nécessaires pour satisfaire la demande. Par exemple, pour « détecte les anomalies dans les données SQL », le plan pourrait être : (1) extraire les données de la base, (2) décrire le schéma des données, (3) appliquer l’algorithme de détection, (4) résumer les résultats. Au second niveau, pour chaque étape, le Code Generator produit un plan détaillé sous forme de chaîne de pensée (chain-of-thought) suivie du code Python correspondant.

Ce double niveau de planification permet de gérer des tâches complexes tout en gardant chaque étape de code suffisamment simple pour être fiable. Le Planner suit la progression et peut ajuster le plan en cours de route si une étape produit des résultats inattendus, grâce au mécanisme d’auto-réflexion.

LLMs supportés

TaskWeaver est model-agnostique et supporte de multiples fournisseurs de LLM : OpenAI (GPT-4, GPT-3.5), Azure OpenAI, Ollama (modèles locaux), et d’autres fournisseurs compatibles avec l’interface OpenAI. Depuis juillet 2024, le framework a été optimisé pour fonctionner avec des modèles de taille modeste hébergés localement, ce qui le rend accessible sans coûts API élevés. La configuration se fait via un simple fichier YAML où vous spécifiez le type d’API, le modèle, l’endpoint et la clé API.


Fonctionnalités distinctives

Structures de données riches : contrairement aux frameworks qui passent du texte entre étapes, TaskWeaver manipule nativement des DataFrames pandas, des listes, des dictionnaires, et d’autres structures Python. Les données peuvent être passées directement d’un plugin à un autre sans sérialisation/désérialisation.

Exécution réflexive : l’agent peut réfléchir sur le processus d’exécution et faire des ajustements. Si une étape échoue ou produit un résultat inattendu, TaskWeaver peut analyser l’erreur, modifier le code, et réessayer.

Vérification de code : avant d’exécuter le code généré, TaskWeaver le vérifie pour détecter des problèmes potentiels (erreurs de syntaxe, appels dangereux, incohérences logiques) et propose des corrections automatiques.

Connaissances de domaine : TaskWeaver permet d’incorporer des connaissances spécifiques au domaine via des exemples de planification et de génération de code. Ces exemples guident le LLM vers des patterns de code appropriés pour votre contexte métier, améliorant la fiabilité des résultats. Le système « experience » (amélioré en septembre 2024) permet une sélection statique et dynamique d’exemples pertinents.

Exécution stateful : l’état est préservé entre les tours de conversation. Les variables, DataFrames et résultats intermédiaires restent en mémoire, ce qui permet des sessions d’analyse interactives (« maintenant filtre les données par région », « ajoute une colonne de croissance mensuelle »).

Sécurité : l’exécution dans un conteneur Docker isole le code généré du système hôte. La génération de code restreinte permet de limiter les capacités du code pour réduire les risques de sécurité. La gestion de sessions sépare les données des différents utilisateurs.

Extensibilité : au-delà des plugins, TaskWeaver permet de créer des rôles supplémentaires avec des comportements personnalisés, et de définir comment ils interagissent avec le Planner. C’est ce mécanisme qui permet d’étendre le framework pour des cas d’usage au-delà de l’analyse de données pure.

Observabilité : des logs détaillés, métriques et traces instrumentées via OpenTelemetry offrent une visibilité complète sur ce qui se passe sous l’interface de chat. Chaque appel LLM, chaque génération de code, chaque exécution de plugin est tracé avec ses entrées, sorties, et temps d’exécution. C’est essentiel pour le débogage et l’amélioration des résultats, surtout quand le code généré ne produit pas le résultat attendu.

Support Docker all-in-one : depuis mars 2024, TaskWeaver propose une image Docker tout-en-un qui inclut le framework, les dépendances, et un environnement d’exécution pré-configuré. C’est la manière la plus rapide de tester TaskWeaver : une seule commande Docker et l’agent est opérationnel.


Cas d’usage typiques

Détection d’anomalies : L’exemple phare de TaskWeaver. L’utilisateur demande « Détecte les anomalies dans les données de ventes du mois dernier stockées dans la base SQL ». TaskWeaver planifie les étapes (connexion SQL, extraction des données, application de l’algorithme), génère le code Python correspondant, l’exécute, et retourne un résumé (« 11 anomalies détectées ») avec le DataFrame des résultats.

Prévision financière : Analyse de séries temporelles, prédiction de prix d’actions, calcul de KPIs financiers. TaskWeaver peut orchestrer des modèles ML entraînés comme plugins et les appliquer sur des données extraites de bases de données ou d’APIs.

Exploration de données interactive : Sessions multi-tours où l’utilisateur explore un dataset de manière conversationnelle : « Montre-moi la distribution des ventes par région », « Corrèle avec les données météo », « Entraîne un modèle de régression pour prédire les ventes du prochain trimestre ».

Automatisation de rapports : Génération automatique de rapports avec extraction de données, calculs, visualisations, et résumés textuels, le tout piloté par des requêtes en langage naturel.

Adaptation de domaine : Grâce au système d’exemples de domaine, TaskWeaver peut être spécialisé pour des contextes métier spécifiques (santé, finance, logistique, manufacturing) sans modifier le code du framework. Un hôpital peut fournir des exemples de requêtes sur des données patients (anonymisées), une banque peut fournir des exemples d’analyse de risques, et le LLM adapte sa génération de code en conséquence. Cette capacité d’adaptation de domaine est l’un des points forts académiques du projet, validé dans le papier de recherche.

Workflow automation : Au-delà de l’analyse interactive, TaskWeaver peut automatiser des workflows récurrents d’analyse de données : extraction quotidienne de KPIs depuis une base SQL, calcul automatique de métriques, génération de rapports PDF, et envoi par email. Les plugins personnalisés encapsulent chaque étape du workflow, et le Planner orchestre l’ensemble.


TaskWeaver vs. alternatives

Critère TaskWeaver LangChain LlamaIndex
Focus Analyse de données code-first Agents généralistes RAG et documents
Approche Génération de code Python complet Chaînes d’appels d’outils Query engines sur données indexées
Structures de données DataFrames, listes, dicts natifs Principalement texte Nœuds de documents
Exécution sécurisée Docker conteneur natif Via outils/sandboxes Non natif
Statut Archivé (fév. 2026) Actif (1.0.3) Actif
Développeur Microsoft Research LangChain Inc. LlamaIndex Inc.

Le concept code-first de TaskWeaver pour l’analyse de données reste pertinent et a influencé les approches ultérieures. Le Data Interpreter de MetaGPT partage une philosophie similaire (exécution de code autonome pour l’analyse de données), et le Microsoft Agent Framework intègre des capacités d’exécution de code dans ses agents.


Migration vers le Microsoft Agent Framework

L’archivage de TaskWeaver s’inscrit dans la stratégie de consolidation de Microsoft qui a fusionné Semantic Kernel, AutoGen et TaskWeaver dans un seul Microsoft Agent Framework (RC février 2026). Pour les utilisateurs de TaskWeaver, la migration implique :

Plugins : les plugins TaskWeaver (fonctions Python avec métadonnées) peuvent être adaptés en outils (tools) du Microsoft Agent Framework, qui utilise un système similaire de fonctions annotées.

Planification : le Planner de TaskWeaver est remplacé par le système de workflows graph-based du Agent Framework, qui offre plus de flexibilité (séquentiel, parallèle, conditionnel, handoff).

Exécution de code : l’exécution de code sécurisée dans Docker est prévue dans les versions futures du Agent Framework. En attendant, des outils comme le DockerCommandLineCodeExecutor d’AutoGen restent disponibles.

Connaissances de domaine : le système d’exemples de TaskWeaver peut être adapté en exemples few-shot dans les prompts du Agent Framework, ou intégré via le système de mémoire.


Prise en main (à des fins éducatives)

Le code source est toujours accessible en lecture seule :

git clone https://github.com/microsoft/TaskWeaver.git cd TaskWeaver pip install -r requirements.txt

Configurez votre LLM dans le fichier de configuration (OpenAI, Azure OpenAI, Ollama, ou autre), puis lancez l’agent. TaskWeaver supporte aussi un déploiement via Docker all-in-one pour une expérience clé en main.

TaskWeaver a été optimisé pour fonctionner avec des modèles de langage de taille modeste hébergés localement (pas uniquement GPT-4), ce qui le rend accessible pour l’expérimentation sans coûts API élevés.


Verdict

TaskWeaver a apporté une contribution précieuse à l’écosystème des agents IA : l’approche code-first pour l’analyse de données, avec manipulation native de structures de données riches, exécution sécurisée dans Docker, et incorporation de connaissances de domaine. C’est un concept que les frameworks modernes continuent d’intégrer (le Data Interpreter de MetaGPT, les sandboxes de code de LangChain Deep Agents, l’exécution de code d’AutoGen).

Cependant, le projet est archivé depuis février 2026. Pour tout nouveau projet, utilisez le Microsoft Agent Framework si vous êtes dans l’écosystème Microsoft, ou des alternatives comme LangGraph ou CrewAI pour d’autres stacks. Le code source de TaskWeaver reste une excellente ressource éducative pour comprendre comment construire un agent d’analyse de données code-first, et les concepts qu’il a introduits (génération de code Python complet, manipulation de DataFrames natifs, exécution sécurisée dans Docker, incorporation de connaissances de domaine) continuent d’influencer l’ensemble de l’écosystème.


Questions fréquentes sur TaskWeaver

TaskWeaver est-il toujours maintenu ?

Non. Le repository GitHub de TaskWeaver a été archivé le 5 février 2026 et est désormais en lecture seule. Il ne recevra plus de mises à jour, bug fixes ou patches de sécurité. Microsoft recommande de migrer vers le Microsoft Agent Framework (successeur unifié de Semantic Kernel, AutoGen et TaskWeaver), qui a atteint le statut Release Candidate en février 2026.

Quelle est la différence entre TaskWeaver et LangChain ?

TaskWeaver adopte une approche « code-first » : il génère du code Python complet qui manipule directement des structures de données riches (DataFrames, listes, dictionnaires). LangChain adopte une approche « tools-first » : il chaîne des appels d’outils qui communiquent principalement via du texte. TaskWeaver est plus adapté à l’analyse de données complexe, LangChain est plus généraliste et flexible. TaskWeaver est archivé, LangChain est activement développé.

Par quoi remplacer TaskWeaver ?

Pour l’écosystème Microsoft : le Microsoft Agent Framework (successeur direct). Pour l’analyse de données autonome : le Data Interpreter de MetaGPT partage une philosophie similaire. Pour un framework généraliste avec exécution de code : LangGraph avec des sandboxes de code, ou AutoGen avec le DockerCommandLineCodeExecutor. Pour le RAG sur des données structurées : LlamaIndex avec ses query engines sur bases SQL.

Peut-on encore utiliser TaskWeaver ?

Oui, le code source est toujours disponible sur GitHub en lecture seule. Vous pouvez cloner le repository, installer les dépendances, et faire tourner TaskWeaver pour de l’expérimentation ou de l’apprentissage. Cependant, le projet ne recevra plus de correctifs de sécurité, ce qui le rend inadapté à un usage en production ou avec des données sensibles.

TaskWeaver fonctionne-t-il avec des modèles locaux ?

Oui. Depuis juillet 2024, TaskWeaver a été optimisé pour supporter des modèles de langage de taille modeste hébergés localement (pas uniquement GPT-4 ou GPT-3.5). Vous pouvez le connecter à des modèles via Ollama ou d’autres solutions d’inférence locale, ce qui réduit les coûts et permet l’expérimentation sans dépendance aux APIs cloud.

Polydesk.ai — Footer