paint-brush
Syntaxfehlerfreier und verallgemeinerbarer Tooleinsatz für LLMs: ToolDecvon@textmodels
155 Lesungen

Syntaxfehlerfreier und verallgemeinerbarer Tooleinsatz für LLMs: ToolDec

Zu lang; Lesen

Forscher schlagen TOOLDEC vor, eine durch Finite-State-Machine-geführte Dekodierung für LLMs, die Fehler reduziert und die Tool-Nutzung verbessert.
featured image - Syntaxfehlerfreier und verallgemeinerbarer Tooleinsatz für LLMs: ToolDec
Writings, Papers and Blogs on Text Models HackerNoon profile picture
0-item

Autoren:

(1) Kexun Zhang, UC Santa Barbara und gleicher Beitrag;

(2) Hongqiao Chen, Northwood High School und gleicher Beitrag;

(3) Lei Li, Carnegie Mellon Universität;

(4) William Yang Wang,UC Santa Barbara.

Linktabelle

3. TOOLDEC: LLM-TOOL-NUTZUNG DURCH FINITE-STATE-DECODIERUNG

Ein syntaktisch korrekter Tool-Aufruf muss auf einen vorhandenen Tool-Namen verweisen und typkonforme Argumente übergeben. Motiviert von der Tatsache, dass es unkompliziert ist, die Syntax eines Tool-Aufrufs mithilfe einer Finite-State-Machine (FSM) zu überprüfen, schlagen wir TOOLDEC vor, einen eingeschränkten Dekodierungsalgorithmus, der von einer FSM geleitet wird. Während jedes Dekodierungsschritts greift das Modell auf eine Teilmenge des Vokabulars zu, die nur syntaktisch korrekte Token enthält. Die FSM, die die Token-Teilmengen angibt, kann aus der Tool-Dokumentation erstellt werden. In Abbildung 2 wird beispielsweise eine FSM für die Funktionen add, exp, square und sqrt erstellt. Tabelle 2 zeigt, wie TOOLDEC die Frage „Die Seite eines Quadrats ist 5, wie groß ist seine Fläche?“ mithilfe der FSM beantwortet. Mit der Anleitung durch die FSM erreicht TOOLDEC die folgenden Ziele:


• Modi wechseln. Wechseln Sie zwischen dem „Textmodus“, wenn das Modell beliebigen Text generieren kann, und dem „Toolmodus“, wenn das Modell nur gültige Toolaufrufe generieren kann.


• Werkzeugnamen generieren: Zu Beginn eines Werkzeugaufrufs nur korrekte, vorhandene Werkzeugnamen aus einer vordefinierten Liste von Werkzeugen generieren.


• Übergeben von Argumenten. Übergeben Sie dem Tool nur typkonforme Argumente.

3.1 Endliche Zustandsdekodierung

TOOLDEC wird von einer Finite-State-Machine (FSM) gesteuert. Eine FSM ist ein 5-Tupel (S, V, g, s0, R), bestehend aus einer endlichen Zustandsmenge S, einem Alphabet V, einer Übergangsfunktion g : S × V → S, einem Anfangszustand s0 und einer Menge von akzeptierenden Zuständen R. In unserem Fall werden S und g aus der Tool-Signatur konstruiert. V ist das Token-Vokabular des Sprachmodells. R entspricht vordefinierten Token, die bestimmen können, dass der LM die Aufgabe abgeschlossen hat, wie z. B. ''.


Abbildung 2: Eine Finite-State-Maschine für TOOLDEC, die für die mathematischen Funktionen add, exp, square und sqrt erstellt wurde, die Ganzzahlen als Argumente annehmen. Die Namen der Tools werden mit einer Trie-Struktur dargestellt. „IntFSM“ ist ein Untermodul, das Ganzzahlen analysiert.


Bei jedem Dekodierungsschritt t behält TOOLDEC einen aktuellen Zustand s bei. Es kann nur die von der FSM zugelassenen Token erzeugen, d. h. die Token, für die g(s, ·) definiert ist. Diese


Tabelle 2: Wie TOOLDEC das FSM in Abbildung 2 verwendet, um die Frage „Die Seite eines Quadrats ist 5, wie groß ist seine Fläche?“ zu beantworten. Bei jedem Zeitschritt entspricht der Zustand in der Maschine einem Satz gültiger nächster Token. Wir setzen alle anderen Token auf Null und normalisieren die nächste Tokenverteilung neu, wodurch das LLM gezwungen wird, nur gültige Token abzutasten.


3.2 KONSTRUKTION VON FSMS, DIE SYNTAKTISCH KORREKTE TOOL-AUFRUFE GARANTIEREN



Um einen Trie zu konstruieren, fügen wir alle Strings nacheinander ein. Das Einfügen eines Strings in einen Trie bedeutet, dass wir von der Wurzel den durch den String vorgegebenen Pfad entlanggehen und neue Knoten erstellen, wenn der nächste Schritt im Pfad nicht existiert. In Abbildung 3 zeigen wir beispielsweise, wie zwei weitere Toolnamen, exp10 und expand, zum Trie hinzugefügt werden können.


Beachten Sie, dass die Konstruktion von trie von einer Annahme abhängt: Keine zwei Tools haben denselben Namen. Obwohl dies eine vernünftige Annahme ist, kann es in realen Anwendungen Ausnahmen geben. In diesem Fall könnten wir die Toolnamen umschreiben, um mehr Details aufzunehmen und sie eindeutiger zu machen. Das Umschreiben abstrakter und schwer verständlicher Toolnamen kann es dem Sprachmodell auch erleichtern, sie anhand des Namens auszuwählen.


Generieren syntaktisch gültiger Toolargumente. Toolargumente haben festgelegte Typen. Wie Argumente in einem Programm müssen sie bestimmten Grammatikregeln folgen. Diese Regeln können durch Finite-State-Maschinen festgelegt werden. Beispielsweise stellt „IntFSM“ in Abbildung 2 eine Finite-State-Maschine dar, die nur ganzzahlige Literale akzeptiert. Für alle Argumente eines Tools verketten wir ihre entsprechenden FSMs miteinander und verwenden den letzten Zustand, der dem Toolnamen entspricht, als Anfangszustand dieser FSM-Kette. Beachten Sie, dass es in der Praxis nicht notwendig ist, diese FSM explizit zu konstruieren. Jeder Grammatikprüfer, der den Satz gültiger nächster Token angibt, ist ausreichend.