Simple Science

La science de pointe expliquée simplement

# Informatique# Apprentissage automatique# Intelligence artificielle# Calcul et langage

Présentation d'un nouveau modèle pour l'appel de fonctions dans les modèles de langue

Un nouveau modèle améliore les capacités d'appel de fonction des modèles linguistiques pour des tâches complexes.

― 8 min lire


Nouveau modèle amélioreNouveau modèle améliorel'appel de fonctions.applications concrètes.dans les modèles de langue pour desAmélioration de l'appel de fonction
Table des matières

Les grands modèles de langage (LLMs) ont attiré pas mal d'attention parce qu'ils peuvent gérer plein de tâches complexes, comme la programmation, le raisonnement et l'interaction avec différents types de médias. Pour rendre ces modèles encore plus utiles, il faut qu'ils apprennent à utiliser des outils externes et des API pour accomplir des tâches compliquées. Cette capacité s'appelle l'Appel de fonction.

L'appel de fonction permet aux LLMs d'accéder à des informations actuelles et spécifiques à certains domaines, et ça les aide à obtenir de l'aide d'outils capables d'effectuer des tâches spécifiques, comme des calculs ou l'exécution de code. Bien qu'il y ait eu des progrès pour apprendre aux LLMs à utiliser l'appel de fonction, il n'existe pas encore beaucoup de modèles ouverts qui performent aussi bien que des modèles propriétaires comme GPT ou Claude.

Pour résoudre ce problème, on présente un nouveau modèle qui a des capacités d'appel de fonction. Ce modèle est entraîné grâce à une méthode appelée Apprentissage multitâche, qui combine différentes tâches liées à l'appel de fonction. On évalue ce modèle par rapport à beaucoup d'autres et on constate qu'il performe très bien dans diverses situations.

Appel de Fonction dans les Modèles de Langage

L'appel de fonction aide les modèles de langage à utiliser des outils et des ressources en dehors de leurs propres connaissances. C'est super important parce que beaucoup d'infos importantes sont stockées dans des formats spécifiques que les LLMs ne peuvent pas accéder directement. Grâce à l'appel de fonction, les LLMs peuvent éviter les "hallucinations", ou fausses réponses, en obtenant des infos précises et pertinentes.

À mesure que les LLMs sont de plus en plus utilisés pour résoudre des problèmes du monde réel, le besoin qu'ils agissent comme des agents intelligents devient de plus en plus crucial. Pour remplir ce rôle, les LLMs doivent être bons dans deux capacités clés : le raisonnement et la planification, et l'appel de fonction.

Importance de l'Appel de Fonction

L'appel de fonction peut vraiment élargir ce que les modèles de langage peuvent faire. Par exemple, ils peuvent résoudre des problèmes qui nécessitent des infos en temps réel, des maths complexes ou des compétences en programmation. Des recherches récentes montrent que les LLMs peuvent améliorer leurs capacités en apprenant à faire des appels de fonction plus efficacement.

Pour apprendre aux LLMs à appeler des fonctions avec succès, plusieurs techniques ont été développées. Certaines méthodes se concentrent sur différentes manières de donner des consignes au modèle, tandis que d'autres entraînent le modèle à produire des appels de fonction directement.

Il existe deux catégories principales de modèles concernant l'appel de fonction : des modèles pré-entraînés capables d'appeler des fonctions et des modèles spécialement ajustés pour cette tâche. Les modèles pré-entraînés utilisent une combinaison d'apprentissage supervisé et d'ajustement, mais les détails des données qu'ils utilisent ne sont souvent pas disponibles. D'autre part, les modèles spécialisés pour l'appel de fonction s'appuient principalement sur des données synthétiques générées à partir de modèles de pointe.

Présentation du Nouveau Modèle

Le nouveau modèle qu'on a introduit est conçu pour être capable d'appeler des fonctions. Il est entraîné sur diverses tâches liées à l'appel de fonction, comme détecter des noms de fonctions, identifier des paramètres et générer des réponses. On utilise une approche de formation multitâche où les mêmes données sont présentées sous différents formats pour aider le modèle à apprendre efficacement.

Le modèle est évalué à l'aide de plusieurs benchmarks et a montré d'excellentes performances, notamment sur le Berkeley Function Calling Leaderboard.

Entraînement du Modèle

Pour entraîner notre modèle, on a utilisé plusieurs ensembles de données liés aux tâches d'appel de fonction. On s'est concentré sur des tâches qui nécessitent différentes compétences pour que le modèle apprenne, en les regroupant en tâches de haut niveau et de bas niveau !

Les tâches de haut niveau sont plus complexes et nécessitent que le modèle génère plusieurs appels de fonction. Cela inclut :

  1. Appel de Fonction Imbriqué : Cela implique d'appeler une fonction dont la sortie est utilisée comme entrée d'une autre fonction.

  2. Chaînage de Fonction : Ici, plusieurs fonctions peuvent être appelées pour répondre à une requête, mais elles ne sont pas imbriquées.

  3. Fonctions Parallèles : Cela nécessite que le modèle appelle la même fonction plusieurs fois avec différents paramètres.

D'un autre côté, les tâches de bas niveau sont plus simples et incluent :

  1. Prochaine Meilleure Fonction : Choisir la fonction la plus adaptée à partir d'une liste en fonction des entrées de l'utilisateur.

  2. Détection de Nom de Fonction : Lister les noms de fonction nécessaires pour répondre à une requête.

  3. Détection de Paires Paramètre-Valeur : Identifier les paramètres pertinents pour les requêtes des utilisateurs.

De plus, la Génération de réponses est une tâche importante où le modèle doit créer des réponses en langage naturel basées sur les appels de fonction effectués.

Préparation et Unification des Données

Pour créer un ensemble de données d'entraînement solide, on a rassemblé plusieurs ensembles de données et les a unifiés en un seul format. Ce processus a impliqué la conversion d'informations en format JSON, qui est facile à lire et largement utilisé en programmation. Chaque fonction a été écrite de manière à inclure son nom, sa description et ses paramètres.

Cette unification permet au modèle d'apprendre à partir de diverses tâches sans la confusion due aux formats variés. Garder les données cohérentes est essentiel pour un entraînement réussi.

Évaluation du Modèle

Après avoir entraîné le modèle, on a effectué des évaluations approfondies en utilisant plusieurs benchmarks pour tester ses performances. L'évaluation est essentielle pour voir comment le modèle se généralise à des tâches qu'il n'a pas encore vues.

On a utilisé plusieurs ensembles de données pour l'évaluation, y compris le Berkeley Function Calling Leaderboard et d'autres qui évaluent différents aspects des capacités d'appel de fonction.

Résultats de l'Évaluation

Les résultats de nos évaluations montrent que le nouveau modèle performe très bien comparé à d'autres modèles. En particulier, il se classe haut sur le Berkeley Function Calling Leaderboard et montre de bonnes performances sur différentes tâches.

Un des résultats significatifs est que notre modèle performe de manière comparable à de plus grands modèles propriétaires, malgré sa taille plus petite. Cela indique qu'on peut atteindre l'efficacité et l'efficacité sans avoir besoin de modèles massifs.

Défis et Limitations

Bien que le modèle montre d'excellentes capacités, il y a des défis à considérer. Certaines zones spécifiques, comme l'appel de fonction en Java et JavaScript, se sont révélées difficiles en raison des exigences uniques de ces langages de programmation. De plus, certaines tâches ont rencontré des problèmes en raison de l'indisponibilité d'APIs ou des limitations dans leurs appels.

Les métriques d'évaluation diffèrent d'un ensemble de données à l'autre, ce qui peut compliquer les comparaisons entre les modèles. Certains ensembles de données ont des informations manquantes ou des exigences différentes, ce qui mène à des résultats variés.

Directions Futures

En regardant vers l'avenir, il y a plein de façons d'améliorer le modèle encore plus. Une idée serait d'inclure des spécifications plus détaillées pour chaque fonction afin d'améliorer sa compréhension. Explorer des options pour des longueurs de contexte plus longues pourrait permettre au modèle de prendre en compte plus d'informations pendant les appels de fonction.

De plus, la recherche continue en ajustement d'instructions pourrait aider à affiner la capacité du modèle à mieux comprendre les requêtes des utilisateurs et à produire des appels de fonction plus précis.

Conclusion

Le nouveau modèle représente une avancée significative dans les capacités d'appel de fonction pour les modèles de langage. Avec son approche d'apprentissage multitâche et ses bonnes performances sur divers benchmarks, il sert d'outil précieux pour développer des systèmes intelligents capables de résoudre des problèmes du monde réel. En tirant parti à la fois des ensembles de données existants et de nouvelles méthodes d'entraînement, ce modèle peut améliorer l'efficacité des modèles de langage pour effectuer des appels de fonction et des réponses précises, ouvrant la voie à de futures innovations dans le domaine.

Source originale

Titre: Granite-Function Calling Model: Introducing Function Calling Abilities via Multi-task Learning of Granular Tasks

Résumé: Large language models (LLMs) have recently shown tremendous promise in serving as the backbone to agentic systems, as demonstrated by their performance in multi-faceted, challenging benchmarks like SWE-Bench and Agent-Bench. However, to realize the true potential of LLMs as autonomous agents, they must learn to identify, call, and interact with external tools and application program interfaces (APIs) to complete complex tasks. These tasks together are termed function calling. Endowing LLMs with function calling abilities leads to a myriad of advantages, such as access to current and domain-specific information in databases and knowledge sources, and the ability to outsource tasks that can be reliably performed by tools, e.g., a Python interpreter or calculator. While there has been significant progress in function calling with LLMs, there is still a dearth of open models that perform on par with proprietary LLMs like GPT, Claude, and Gemini. Therefore, in this work, we introduce the GRANITE-20B-FUNCTIONCALLING model under an Apache 2.0 license. The model is trained using a multi-task training approach on seven fundamental tasks encompassed in function calling, those being Nested Function Calling, Function Chaining, Parallel Functions, Function Name Detection, Parameter-Value Pair Detection, Next-Best Function, and Response Generation. We present a comprehensive evaluation on multiple out-of-domain datasets comparing GRANITE-20B-FUNCTIONCALLING to more than 15 other best proprietary and open models. GRANITE-20B-FUNCTIONCALLING provides the best performance among all open models on the Berkeley Function Calling Leaderboard and fourth overall. As a result of the diverse tasks and datasets used for training our model, we show that GRANITE-20B-FUNCTIONCALLING has better generalizability on multiple tasks in seven different evaluation datasets.

Auteurs: Ibrahim Abdelaziz, Kinjal Basu, Mayank Agarwal, Sadhana Kumaravel, Matthew Stallone, Rameswar Panda, Yara Rizk, GP Bhargav, Maxwell Crouse, Chulaka Gunasekara, Shajith Ikbal, Sachin Joshi, Hima Karanam, Vineet Kumar, Asim Munawar, Sumit Neelam, Dinesh Raghu, Udit Sharma, Adriana Meza Soria, Dheeraj Sreedhar, Praveen Venkateswaran, Merve Unuvar, David Cox, Salim Roukos, Luis Lastras, Pavan Kapanipathi

Dernière mise à jour: 2024-06-27 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2407.00121

Source PDF: https://arxiv.org/pdf/2407.00121

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires