Toolformer (FR)

From Systems analysis wiki
Jump to navigation Jump to search

Toolformer est une approche de création de grands modèles de langage (LLM) leur permettant d'utiliser de manière autonome des outils externes via des appels API[1]. Cette méthode a été proposée en 2023 par un groupe de chercheurs de Meta AI Research en collaboration avec l'Université Pompeu Fabra (Espagne). Dans leur article « Toolformer: Language Models Can Teach Themselves to Use Tools » (Timo Schick et al., 2023), les auteurs soulignent un paradoxe : les LLM modernes démontrent des capacités impressionnantes à résoudre de nouvelles tâches complexes à partir d'exemples textuels, mais sont souvent incapables d'effectuer de manière fiable des opérations de base, comme le calcul ou la recherche de faits[1]. Pour surmonter ces limitations, l'équipe a développé le modèle Toolformer, qui apprend de manière autonome à sélectionner et à appeler des outils externes (tels que des moteurs de recherche, des calculatrices ou des services de traduction) afin d'améliorer la qualité de l'exécution de diverses tâches[1]. En février 2023, ce modèle a été présenté sous forme de prépublication sur arXiv, puis a été reconnu et accepté à la conférence NeurIPS 2023[2].

Idée principale et capacités du modèle

Toolformer est un modèle de langage affiné (fine-tuned) capable de décider quel outil appeler, quand l'appeler, quels paramètres transmettre et comment intégrer le résultat obtenu dans le texte généré[3]. L'entraînement est organisé en mode auto-supervisé (self-supervised) — le modèle génère et évalue lui-même des exemples d'utilisation d'API, ne nécessitant qu'un petit ensemble de démonstrations (quelques exemples seulement) pour chaque outil[3]. Contrairement aux approches précédentes, il n'est pas nécessaire d'avoir des annotations de données massives ou des modèles orientés humains pour intégrer les outils ; le modèle apprend lui-même quand et comment utiliser une API donnée, tout en conservant ses capacités linguistiques générales et sans se limiter à des tâches étroitement définies[1].

Les auteurs ont intégré à Toolformer un large éventail d'outils accessibles via de simples appels API. Dans la version expérimentale, les utilitaires suivants ont été utilisés[3] :

  • Calculatrice – pour effectuer des calculs arithmétiques.
  • Système de « questions-réponses » (Q&A) – pour trouver des réponses à des questions factuelles dans une base de connaissances.
  • Moteurs de recherche (2 différents) – pour rechercher des informations à jour sur Internet.
  • Système de traduction automatique – pour traduire des textes entre les langues.
  • Calendrier – pour obtenir des informations sur les dates et les heures.

Chaque outil est représenté sous la forme d'un fragment de texte (une balise textuelle spéciale), ce qui permet au modèle d'intégrer l'appel API directement dans le texte qu'il génère[4]. Par exemple, le modèle peut insérer une construction de type `[Calculator(...)]` ou `[Search("requête")]` dans le contexte actuel, signalant la nécessité d'un appel externe. Lors de la génération de la réponse, Toolformer produit un symbole spécial (une flèche →), suite à quoi le système interrompt la génération et exécute l'appel API correspondant ; le résultat obtenu est inséré dans le texte, puis la génération du fragment suivant se poursuit[4]. Ce mécanisme permet au modèle de faire appel dynamiquement aux capacités des services externes, tout en restant un module linguistique unifié sans modification de son architecture.

Entraînement du modèle (méthodologie)

Les développeurs ont décrit le processus d'entraînement de Toolformer en plusieurs étapes[4], en utilisant la technique de l' apprentissage en contexte (in-context learning) pour générer des données synthétiques[1] :

  1. Génération de candidats pour les appels API. D'abord, des textes issus d'un grand corpus (par exemple, des articles ou des pages web) sont utilisés, et des appels à des outils y sont insérés artificiellement, là où ils pourraient potentiellement aider à poursuivre ou à compléter le texte. Ces insertions sont générées par le modèle lui-même à l'aide d'un prompt à N exemples (few-shot prompting), en se basant sur quelques exemples d'utilisation de chaque API définis manuellement[1]. Par exemple, le modèle peut recevoir un fragment : « En 2024, la population de la ville était de [QA("Quelle est la population de cette ville ?") → ...] habitants », où QA( ) est un appel au système de questions-réponses qui doit retourner les données manquantes. Pour chaque outil, des contextes appropriés sont sélectionnés ; ainsi, pour la calculatrice, le modèle choisit des phrases contenant plusieurs nombres et des mots comme « égale » ou « total »[4] — là où un résultat arithmétique serait réellement nécessaire.
  2. Exécution des appels API et enrichissement des données. Ensuite, tous les appels générés par le modèle sont effectivement exécutés — par exemple, des requêtes sont envoyées à un moteur de recherche ou des expressions sont calculées sur la calculatrice. Les réponses obtenues sont réinsérées dans les textes, formant des versions complètes des phrases avec des insertions du type `{réponse}`[4][4]. Simultanément, les versions « vides » (sans l'insertion de la réponse) et les textes originaux sans aucun appel sont conservés pour une comparaison ultérieure.
  3. Filtrage et auto-évaluation de l'utilité. À cette étape, Toolformer évalue de manière autonome quelles insertions d'API générées sont réellement utiles pour prédire la suite du texte[4]. Une comparaison de la probabilité du modèle de langage de continuer le texte est effectuée dans trois scénarios : (a) sans aucun appel, (b) avec un appel à l'outil mais sans le résultat inséré, (c) avec l'appel et le résultat inséré[4]. Si l'ajout d'une réponse API spécifique augmente la probabilité du modèle de prédire correctement la suite de la phrase (c'est-à-dire qu'il aide réellement le modèle à prédire les mots suivants), cet exemple est considéré comme utile. Seules les insertions apportant un gain de probabilité sont conservées dans l'échantillon. Cela permet d'éliminer les cas où l'appel à l'outil était redondant ou n'apportait aucune nouvelle information. Enfin, le modèle est affiné (fine-tuning) sur l'ensemble de données filtré obtenu, qui contient des exemples de textes réels avec des appels API insérés de manière optimale[1]. L'entraînement est réalisé selon l'objectif standard de la modélisation du langage : prédire le prochain token de la séquence, y compris les tokens qui représentent les résultats des appels aux outils.

Il est important de souligner que pour intégrer chaque nouvel outil, seuls quelques exemples manuels de son utilisation étaient nécessaires — la génération des données d'entraînement se faisait ensuite automatiquement[3]. Grâce à cela, l'approche Toolformer est pratiquement indépendante de la disponibilité de corpus annotés spécialisés et minimise les efforts d'annotation des données. Le modèle apprend lui-même le format et la pertinence des appels API tout en conservant son universalité : il n'utilise les outils que lorsque c'est réellement nécessaire pour résoudre la tâche posée[1].

Résultats expérimentaux

Pour la validation expérimentale de la méthode, les chercheurs ont utilisé un modèle de langage existant, GPT-J (6,7 milliards de paramètres) — un LLM open-source entraîné sur le corpus The Pile[4]. Ce modèle a été affiné selon la procédure décrite, donnant naissance à Toolformer basé sur GPT-J. La performance de cette nouvelle approche a été évaluée en mode zero-shot (sans exemples) sur une série de tâches standard, incluant la résolution de problèmes mathématiques textuels, la recherche de faits, les questions-réponses basées sur des connaissances (QA), ainsi que la traduction et le remplissage de textes à trous. Les données de test utilisaient, par exemple, les jeux de données ouverts Natural Questions, TriviaQA (pour l'évaluation des connaissances factuelles) et les ensembles de problèmes ASDiv, MAWPS, SVAMP (problèmes mathématiques arithmétiques textuels), ainsi que les benchmarks de QA multilingues MLQA et LAMA[5].

Les résultats ont montré que Toolformer surpasse de manière significative le modèle original de même taille sur de nombreuses tâches[1]. De plus, grâce à la connexion à des outils, un modèle relativement petit (6,7 milliards de paramètres) a pu, sur plusieurs indicateurs, dépasser un modèle beaucoup plus grand, GPT-3 (175 milliards de paramètres)[1][6]. Par exemple, dans les problèmes mathématiques textuels nécessitant des calculs précis, Toolformer a montré des progrès particulièrement notables par rapport aux LLM traditionnels, résolvant ces problèmes avec précision grâce à la calculatrice, alors que même GPT-3 commettait des erreurs[1]. Dans les tests de questions factuelles (QA), Toolformer basé sur GPT-J a également montré une qualité de réponse comparable ou supérieure à celle de GPT-3, car il pouvait effectuer une recherche sur Internet pour obtenir des informations à jour[1]. Il est important de noter que cette nouvelle approche n'a pas dégradé les capacités linguistiques générales du modèle, telles que la continuation cohérente de texte sur des données ordinaires : Toolformer a conservé un niveau de génération de langage naturel sans outils équivalent à celui du GPT-J original[3]. En d'autres termes, l'ajout de la fonctionnalité d'appel API n'a pas « retiré » au modèle ses compétences de base, mais les a étendues avec des capacités supplémentaires.

Portée des travaux et recherches futures

Le développement de Toolformer a démontré la possibilité fondamentale d'entraîner un modèle à utiliser des outils externes pratiquement sans annotation manuelle, grâce à la génération de données synthétiques et à l'auto-évaluation de leur utilité. Cette avancée ouvre la voie à des grands modèles de langage plus efficaces et fiables : au lieu d'augmenter le nombre de paramètres de plusieurs milliards pour mémoriser des faits ou des règles mathématiques, un modèle relativement compact peut faire appel dynamiquement à des ressources externes (bases de connaissances, calculatrices, services) pour combler ses propres lacunes[1]. Une telle approche permet de réduire le nombre d'« hallucinations » (lorsque le modèle invente des informations inexistantes), d'améliorer la précision des réponses et la pertinence des connaissances sans une refonte totale du modèle. Essentiellement, Toolformer réalise le « meilleur des deux mondes » — en combinant les compétences linguistiques d'un grand modèle avec la précision d'outils spécialisés[3].

Le travail de Schick et ses collègues a été l'un des premiers à démontrer l'apprentissage autonome des API externes par les LLM, et a suscité un grand intérêt dans la communauté. D'autres recherches sont apparues, développant cette idée. Par exemple, en 2023, le modèle Graph-ToolFormer a été proposé, adaptant les principes de Toolformer pour travailler avec des données de graphes. En s'appuyant sur des indices générés par ChatGPT, Graph-ToolFormer apprend au modèle de langage à appeler des outils externes pour résoudre des tâches d'analyse de graphes (par exemple, obtenir les propriétés d'un graphe, travailler avec des réseaux de connaissances, etc.)[7]. Un autre développement notable est le modèle Gorilla (Univ. of California, Berkeley, 2023), qui se concentre sur l'utilisation précise de nombreuses API logicielles tierces[8]. Gorilla est un modèle LLaMA, affiné sur un vaste ensemble de fonctions documentées ; il est capable de générer des appels API corrects à partir d'une description de la tâche, avec un tel succès que, dans les expériences, il a même surpassé GPT-4 en termes de précision dans la formulation des appels aux bibliothèques et services[8]. Gorilla intègre un mécanisme de recherche dans la documentation, ce qui permet de mettre à jour les informations sur les changements d'API et de réduire considérablement les erreurs et les hallucinations lors de l'utilisation des outils[8]. Ces travaux confirment l'importance de la direction ouverte par Toolformer : la combinaison des LLM avec des outils externes est considérée comme une voie prometteuse pour la création de systèmes d'IA plus puissants et fiables.

Il est à noter que l'idée d'intégrer des outils dans les modèles de langage se développe non seulement dans la recherche, mais aussi dans l'industrie. Ainsi, en mars 2023, OpenAI a présenté un système de plugins pour ChatGPT – une interface spéciale permettant de connecter le modèle à des services externes (navigateur web, bases de connaissances, moteurs de calcul, etc.) pour obtenir des informations à jour et effectuer des calculs[9]. Les utilisateurs demandaient cette fonctionnalité depuis longtemps, et l'apparition des plugins met en pratique une conception similaire à celle de Toolformer : le modèle est complété par des « outils » pour étendre ses capacités à résoudre diverses requêtes utilisateur[9]. Ainsi, Toolformer s'inscrit dans la tendance générale du développement de l'IA, où les grands modèles de langage deviennent une plateforme capable de mobiliser des connaissances et des calculs externes sur demande. La recherche menée par l'équipe de Meta AI et de l'UPF a jeté une base importante pour cette direction, en montrant comment les LLM peuvent apprendre à travailler avec des outils presque sans supervision manuelle, se rapprochant ainsi d'un assistant intelligent plus universel et plus sûr[1][3].

Liens

Bibliographie

  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023. OpenReview.
  • Li, M. et al. (2023). API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs. arXiv:2304.08244.
  • Zhang, T. et al. (2023). Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT. arXiv:2304.11116.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Qin, Y. et al. (2023). ToolLLM: Facilitating Large Language Models to Master 16 000+ Real-World APIs. arXiv:2307.16789.
  • Li, Y. et al. (2024). Tool Learning with Large Language Models: A Survey. arXiv:2405.17935.
  • OpenAI (2023). ChatGPT Plugins. OpenAI Blog.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Schick, T. et al. (2023). Meta AI & UPF’s Toolformer: Enabling Language Models to Teach Themselves to Use External Tools. Synced Review.


Notes

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 Schick, T. et al. «Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools». Synced. [1]
  2. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv. [3]
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 OXEN AI. «Arxiv Dives Toolformer: Language models can teach themselves to use tools». Medium. [4]
  5. «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
  6. Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
  7. Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
  8. 8.0 8.1 8.2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
  9. 9.0 9.1 «ChatGPT plugins». OpenAI. [9]