paint-brush
Utilisation d'outils de syntaxe sans erreur et généralisables pour les LLM : ToolDecpar@textmodels

Utilisation d'outils de syntaxe sans erreur et généralisables pour les LLM : ToolDec

Trop long; Pour lire

Les chercheurs proposent TOOLDEC, un décodage guidé par machine à états finis pour les LLM, réduisant les erreurs et améliorant l'utilisation des outils.
featured image - Utilisation d'outils de syntaxe sans erreur et généralisables pour les LLM : ToolDec
Writings, Papers and Blogs on Text Models HackerNoon profile picture
0-item

Auteurs:

(1) Kexun Zhang, UC Santa Barbara et contribution égale ;

(2) Hongqiao Chen, Northwood High School et contribution égale ;

(3) Lei Li, Université Carnegie Mellon ;

(4) William Yang Wang, UC Santa Barbara.

Tableau des liens

3. TOOLDEC : UTILISATION DE L'OUTIL LLM VIA LE DÉCODAGE À L'ÉTAT FINI

Un appel d'outil syntaxiquement correct doit faire référence à un nom d'outil existant et transmettre des arguments conformes au type. Motivés par le fait qu'il est simple de vérifier la syntaxe d'un appel d'outil à l'aide d'une machine à états finis (FSM), nous proposons TOOLDEC, un algorithme de décodage contraint guidé par une FSM. Au cours de chaque étape de décodage, le modèle échantillonne un sous-ensemble du vocabulaire qui ne contient que des jetons syntaxiquement corrects. Le FSM qui spécifie les sous-ensembles de jetons peut être construit à partir de la documentation de l'outil. Par exemple, dans la figure 2, un FSM est construit pour les fonctions add, exp, square et sqrt. Le tableau 2 montre comment TOOLDEC répond à la question « le côté d'un carré est 5, quelle est son aire ? en utilisant le FSM. Avec les conseils du FSM, TOOLDEC atteint les objectifs suivants :


• Modes de commutation. Basculez entre le « mode texte » lorsque le modèle est libre de générer n’importe quel texte et le « mode outil » lorsque le modèle ne peut générer que des appels d’outils valides.


• Génération de noms d'outils. Au début d'un appel d'outil, générez uniquement les noms d'outils existants corrects à partir d'une liste d'outils prédéfinie.


• Passer des arguments. Transmettez uniquement des arguments conformes au type à l’outil.

3.1 DÉCODAGE À L'ÉTAT FINI

TOOLDEC est guidé par une machine à états finis (FSM). Un FSM est un 5-tuple (S, V, g, s0, R), constitué d'un ensemble d'états finis S, d'un alphabet V , d'une fonction de transition g : S ×V → S, d'un état initial s0 et d'un ensemble de acceptant les états R. Dans notre cas, S et g sont construits à partir de la signature de l’outil. V est le vocabulaire symbolique du modèle de langage. R correspond à des jetons prédéfinis qui peuvent déterminer que le LM a terminé la tâche, comme ''.


Figure 2 : Une machine à états finis pour TOOLDEC construite pour les fonctions mathématiques add, exp, square, sqrt qui prennent des entiers comme arguments. Les noms des outils sont représentés par une structure trie. « IntFSM » est un sous-module qui analyse les entiers.


A chaque étape de décodage t, TOOLDEC maintient un état courant s. Il ne peut générer que les jetons autorisés par le FSM, c'est-à-dire les jetons pour lesquels g(s, ·) est défini. Ces


Tableau 2 : Comment TOOLDEC utilise le FSM de la figure 2 pour répondre à la question « le côté d'un carré est 5, quelle est son aire ? ». A chaque pas de temps, l'état dans la machine correspond à un ensemble de jetons suivants valides. Nous mettons à zéro tous les autres jetons et renormalisons la prochaine distribution de jetons, forçant le LLM à échantillonner uniquement les jetons valides.


3.2 CONSTRUCTION DE FSMS QUI GARANTISSENT DES APPELS D'OUTILS SYNTACTIQUEMENT CORRECTS



Pour construire un trie, nous y insérons toutes les chaînes une par une. Insérer une chaîne dans un trie signifie parcourir de la racine le chemin tracé par la chaîne et créer de nouveaux nœuds lorsque l'étape suivante du chemin n'existe pas. Par exemple, nous montrons comment deux noms d'outils supplémentaires, exp10 et expand, peuvent être ajoutés au trie de la figure 3.


Notez que la construction de trie dépend d’une hypothèse : il n’y a pas deux outils portant le même nom. Bien qu’il s’agisse d’une hypothèse raisonnable, il pourrait y avoir des exceptions dans les applications réelles. Dans ce cas, nous pourrions réécrire les noms des outils pour inclure plus de détails afin de lever toute ambiguïté. La réécriture des noms d'outils abstraits et difficiles à comprendre peut également permettre au modèle de langage de les sélectionner plus facilement par nom.


Génération d'arguments d'outil syntaxiquement valides. Les arguments de l'outil ont des types spécifiés. Comme les arguments d’un programme, ils doivent suivre certaines règles de grammaire. Ces règles peuvent être spécifiées par des machines à états finis. Par exemple, le « IntFSM » de la figure 2 représente une machine à états finis qui n'accepte que les littéraux entiers. Pour tous les arguments d'un outil, nous chaînons leurs FSM correspondants et utilisons le dernier état correspondant au nom de l'outil comme état initial de cette chaîne FSM. Notez qu'en pratique, il n'est pas nécessaire de construire explicitement ce FSM. Tout vérificateur de grammaire indiquant l’ensemble des prochains jetons valides suffit.



Cet article est disponible sur arxiv sous licence CC 4.0 DEED.