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.
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.
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. ''.
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
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.
Dieses Dokument ist auf arxiv unter der CC 4.0 DEED-Lizenz verfügbar .