Авторы:
(1) Кексун Чжан, Калифорнийский университет в Санта-Барбаре и равный вклад;
(2) Хунцяо Чен, Средняя школа Нортвуда и равный вклад;
(3) Лей Ли, Университет Карнеги-Меллон;
(4) Уильям Ян Ван, Калифорнийский университет, Санта-Барбара.
Синтаксически правильный вызов инструмента должен ссылаться на существующее имя инструмента и передавать аргументы, соответствующие типу. Руководствуясь тем фактом, что синтаксис вызова инструмента легко проверить с помощью конечного автомата (FSM), мы предлагаем TOOLDEC — алгоритм ограниченного декодирования, управляемый автоматом. На каждом этапе декодирования модель выбирает из подмножества словаря, содержащего только синтаксически правильные лексемы. FSM, определяющий подмножества токенов, можно создать из документации инструмента. Например, на рисунке 2 конечный автомат построен для функций add, exp, Square и sqrt. В таблице 2 показано, как TOOLDEC отвечает на вопрос «сторона квадрата равна 5, какова его площадь?» с помощью ФСМ. Под руководством FSM компания TOOLDEC достигает следующих целей:
• Переключение режимов. Переключайтесь между «текстовым режимом», когда модель может генерировать любой текст, и «режимом инструмента», когда модель может генерировать только допустимые вызовы инструментов.
• Генерация названий инструментов. В начале вызова инструмента генерируйте только правильные существующие имена инструментов из заранее определенного списка инструментов.
• Передача аргументов. Передавайте инструменту только аргументы, соответствующие типу.
TOOLDEC управляется конечным автоматом (FSM). Конечный автомат — это набор из пяти элементов (S, V, g, s0, R), состоящий из конечного множества состояний S, алфавита V, функции перехода g: S ×V → S, начального состояния s0 и набора принятие состояний R. В нашем случае S и g создаются на основе сигнатуры инструмента. V — словарь токенов языковой модели. R соответствует заранее определенным токенам, которые могут определить, что LM выполнил задачу, например «».
На каждом этапе декодирования t TOOLDEC поддерживает текущее состояние s. Он может генерировать только токены, разрешенные FSM, т.е. токены, для которых определен g(s, ·). Эти
Чтобы построить дерево, мы вставляем в него все строки одну за другой. Вставка строки в дерево означает переход от корня вниз по пути, проложенному строкой, и создание новых узлов, когда следующего шага в пути не существует. Например, мы покажем, как можно добавить еще два названия инструментов, exp10 иexpand, в дерево на рис. 3.
Обратите внимание, что конструкция trie зависит от одного предположения: никакие два инструмента не имеют одинаковых имен. Хотя это разумное предположение, в реальных приложениях могут быть исключения. В этом случае мы могли бы переписать имена инструментов, включив в них больше деталей, чтобы устранить неоднозначность. Переписывание абстрактных и сложных для понимания названий инструментов также может облегчить языковой модели выбор их по имени.
Генерация синтаксически допустимых аргументов инструмента. Аргументы инструмента имеют указанные типы. Как и аргументы в программе, они должны подчиняться определенным грамматическим правилам. Эти правила могут быть заданы конечными автоматами. Например, «IntFSM» на рисунке 2 изображает конечный автомат, который принимает только целочисленные литералы. Для всех аргументов инструмента мы объединяем соответствующие автоматы вместе и используем последнее состояние, соответствующее имени инструмента, в качестве начального состояния этой цепочки автоматов. Обратите внимание, что на практике нет необходимости явно создавать этот автомат. Достаточно любой программы проверки грамматики, которая определяет набор допустимых следующих токенов.
Этот документ доступен на arxiv под лицензией CC 4.0 DEED.