Toolformer
Toolformer — это подход к созданию больших языковых моделей (LLM), позволяющий им самостоятельно использовать внешние инструменты через вызовы API[1]. Данный метод предложен в 2023 году группой исследователей из Meta AI Research совместно с Университетом Помпеу Фабра (Испания). В своей работе «Toolformer: Language Models Can Teach Themselves to Use Tools» (Timo Schick et al., 2023) авторы отмечают парадокс: современные LLM демонстрируют впечатляющие способности решать сложные новые задачи по текстовым примерам, но при этом часто неспособны надежно выполнять базовые операции – например, счёт или поиск фактов[1]. Чтобы преодолеть эти ограничения, команда разработала модель Toolformer, которая самообучается выбирать и вызывать внешние инструменты (такие как поисковые системы, калькуляторы или сервисы перевода) для повышения качества выполнения разнообразных заданий[1]. В феврале 2023 года эта модель была представлена в виде препринта на arXiv, а позднее получила признание и была принята на конференцию NeurIPS 2023[2].
Основная идея и возможности модели
Toolformer представляет собой дообученную языковую модель, способную решать, какой инструмент вызвать, когда именно его вызвать, какие передать параметры, и как включить полученный результат в генерируемый текст[3]. Обучение организовано в самонаблюдаемом режиме (self-supervised) — модель сама генерирует и оценивает примеры использования API, требуя лишь небольшой набор демонстраций (буквально несколько примеров) для каждого инструмента[3]. В отличие от предыдущих подходов, не требуются обширные разметки или человекоориентированные шаблоны для интеграции инструментов; модель сама учится когда и как применять тот или иной API, сохраняя общие языковые способности и не ограничиваясь узко заданными задачами[1].
Авторы интегрировали в Toolformer широкий спектр инструментов, доступных через простые API-вызовы. В экспериментальной версии были задействованы следующие утилиты[3]:
- Калькулятор – для выполнения арифметических вычислений.
- Система «вопрос-ответ» (Q&A) – для поиска ответов на фактологические вопросы по базе знаний.
- Поисковые системы (2 разных) – для поиска актуальной информации в интернете.
- Система машинного перевода – для перевода текстов между языками.
- Календарь – для получения сведений о датах и времени.
Каждый инструмент представлен в формате текстового фрагмента (специальной текстовой метки), что позволяет модели встраивать вызов API прямо в генерируемый ею текст[4]. Например, модель может вставить конструкцию вида `[Calculator(...)]` или `[Search("запрос")]` в текущий контекст, сигнализируя о необходимости внешнего обращения. Во время вывода ответа Toolformer генерирует специальный символ (стрелка →), по которому система приостанавливает генерацию и выполняет соответствующий API-вызов; полученный результат подставляется в текст, после чего продолжается генерация следующего фрагмента[4]. Такой механизм позволяет модели динамически привлекать возможности внешних сервисов, оставаясь при этом единым языковым модулем без изменения архитектуры.
Обучение модели (методология)
Разработчики описали процесс обучения Toolformer в несколько этапов[4], используя технику обучения в контексте (in-context learning) для генерации синтетических данных[1]:
- Генерация кандидатов вызовов API. Сначала берутся тексты из большого корпуса (например, статей или веб-страниц) и в них искусственно вставляются вызовы инструментов, которые потенциально могут помочь продолжить или дополнить текст. Эти вставки модель генерирует сама с помощью N-примерного промптинга, опираясь на несколько вручную заданных образцов использования каждого API[1]. Например, модель может получить фрагмент: «В 2024 году население города составляло [QA("Какова численность населения этого города?") → ...] человек», где QA( ) — вызов системы вопросов-ответов, который должен вернуть недостающие данные. Для каждого инструмента отбираются подходящие контексты; так, для калькулятора модель выбирает предложения, содержащие несколько чисел и слова вроде «равно» или «итого»[4] — там, где арифметический результат действительно понадобится.
- Выполнение API-вызовов и дополнение данных. Далее все сгенерированные моделью вызовы реально выполняются — например, отправляются запросы в поисковик или вычисляются выражения на калькуляторе. Полученные ответы подставляются обратно в тексты, формируя завершённые варианты предложений с вставками вида `{ответ}`[4][4]. Одновременно сохраняются и «пустые» варианты (без подстановки ответа), а также исходные тексты без всяких вызовов – для последующего сравнения.
- Фильтрация и самооценка полезности. На этом этапе Toolformer самостоятельно оценивает, какие из сгенерированных API-вставок действительно полезны для предсказания продолжения текста[4]. Проводится сравнение вероятности языковой модели продолжить текст в трёх сценариях: (а) без всякого вызова, (б) с вызовом инструмента без подстановленного результата, (в) с вызовом и подставленным результатом[4]. Если добавление конкретного API-ответа увеличивает модельную вероятность правильного продолжения фразы (то есть действительно помогает модели предсказать последующие слова), то такой пример считается полезным. Только вставки, дающие выигрыш в вероятности, остаются в выборке. Таким образом отсеиваются случаи, когда вызов инструмента был избыточным или не внёс новой информации. Наконец, модель дообучается (fine-tuning) на полученном отфильтрованном датасете, содержащем реальные примеры текста с оптимально вставленными вызовами API[1]. Обучение выполняется по стандартной цели языкового моделирования – предсказывать следующий токен последовательности, включая токены, которые обозначают и результаты вызовов инструментов.
Важно подчеркнуть, что для внедрения каждого нового инструмента требовалось лишь несколько ручных примеров его использования — далее генерация обучающих данных шла автоматически[3]. Благодаря этому подход Toolformer практически не зависит от наличия специализированных размеченных корпусов и минимизирует трудозатраты на аннотирование данных. Модель сама выучивает формат и уместность API-вызовов и сохраняет при этом свою универсальность: она задействует инструменты только тогда, когда это действительно нужно для решения поставленной задачи[1].
Экспериментальные результаты
Для экспериментальной проверки метода исследователи взяли уже существующую языковую модель GPT-J (6,7 млрд параметров) — открытую LLM, обученную на корпусе The Pile[4]. Эту модель дообучили по описанной процедуре, получив Toolformer на базе GPT-J. Производительность нового подхода оценивалась в режиме zero-shot (без примеров) на ряде стандартных задач, включая математическое решение текстовых задач, поиск фактов и ответ на вопросы на знание (QA), а также перевод и заполнение пропусков в тексте. В качестве тестовых данных использовались, например, открытые наборы вопросов Natural Questions, TriviaQA (для оценки фактологических знаний) и наборы задач ASDiv, MAWPS, SVAMP (математические текстовые задачи на арифметику), а также мультиязычные QA-бенчмарки MLQA, LAMA[5].
Результаты показали, что Toolformer значительно превосходит исходную модель того же размера на многих задачах[1]. Более того, благодаря подключению инструментов относительно небольшая модель (6,7 млрд параметров) смогла по ряду показателей обойти гораздо более крупную модель GPT-3 (175 млрд параметров)[1][6]. Например, в математических текстовых задачах с требованием точных вычислений Toolformer продемонстрировал особо заметный прогресс по сравнению с обычными LLM, решая такие задачи точно за счёт калькулятора, в то время как даже GPT-3 допускал ошибки[1]. В тестах по фактологическим вопросам (QA) Toolformer на базе GPT-J также показал качество ответа сопоставимое или лучшее, чем у GPT-3, поскольку мог выполнить интернет-поиск для актуальных сведений[1]. При этом важно, что новый подход не ухудшил общие способности языковой модели, такие как связное продолжение текста на обычных данных: Toolformer сохранил уровень генерации естественного языка без инструментов на уровне исходного GPT-J[3]. Иными словами, добавление функционала вызова API не «отняло» у модели её базовых навыков, но расширило их дополнительными возможностями.
Значение работы и дальнейшие исследования
Разработка Toolformer продемонстрировала принципиальную возможность обучить модель использовать внешние инструменты практически без ручной разметки, за счёт генерации синтетических данных и самооценки полезности. Это достижение открывает путь к более эффективным и надёжным большим языковым моделям: вместо наращивания миллиардов параметров для запоминания фактов или математических правил, относительно компактная модель может динамически привлекать внешние ресурсы (БД знаний, калькуляторы, сервисы), чтобы восполнить собственные пробелы[1]. Такой подход позволяет уменьшить количество «галлюцинаций» (когда модель выдумывает несуществующую информацию), повысить точность ответов и актуальность знаний без тотальной переработки всей модели. По сути, Toolformer достигает «лучшего из двух миров» — комбинируя языковые навыки крупной модели с точностью узких инструментов[3].
Работа Schick и коллег стала одной из первых, продемонстрировавших самостоятельное освоение LLM внешних API, и породила большой интерес в сообществе. Появились дальнейшие исследования, развивающие эту идею. Например, в 2023 году была предложена модель Graph-ToolFormer, адаптирующая принципы Toolformer для работы с графовыми данными. Опираясь на подсказки, сгенерированные ChatGPT, Graph-ToolFormer учит языковую модель вызывать внешние инструменты для решения задач графового анализа (например, получения свойств графа, работы с сетями знаний и т.д.)[7]. Другая примечательная разработка — модель Gorilla (Univ. of California, Berkeley, 2023), которая фокусируется на точном использовании множества сторонних программных API[8]. Gorilla представляет собой LLaMA-модель, дообученную на обширном наборе документированных функций; она способна генерировать корректные вызовы API по описанию задачи, причём настолько успешно, что в экспериментах превзошла даже GPT-4 по точности формирования вызовов библиотек и сервисов[8]. В Gorilla реализована интеграция с механизмом поиска по документации, что позволяет актуализировать информацию об изменениях API и существенно снижает ошибки и галлюцинации при использовании инструментов[8]. Эти работы подтверждают значимость направления, открытое Toolformer: сочетание LLM с внешними инструментами рассматривается как перспективный путь к созданию более мощных и надежных AI-систем.
Отмечается, что идея интеграции инструментов в языковые модели развивается не только в исследованиях, но и в индустрии. Так, в марте 2023 года компания OpenAI представила систему плагинов для ChatGPT – специальный интерфейс, позволяющий подключать модель к внешним сервисам (веб-браузер, базы знаний, вычислительные движки и пр.) для получения актуальной информации и выполнения вычислений[9]. Пользователи давно запрашивали подобный функционал, и появление плагинов фактически реализует на практике концепцию, схожую с Toolformer: модель дополняется «инструментами» для расширения своих возможностей при решении разнообразных пользовательских запросов[9]. Таким образом, Toolformer вписывается в общий тренд развития ИИ, где большие языковые модели становятся платформой, способной по запросу задействовать внешние знания и вычисления. Исследование, выполненное командой Meta AI и UPF, заложило важный фундамент этого направления, показав, как LLM могут учиться работать с инструментами практически без ручного наставления, и тем самым приближаясь к более универсальному и безопасному интеллектуальному помощнику[1][3].
Ссылки
- Оригинальная статья «Toolformer: Language Models Can Teach Themselves to Use Tools» на arXiv
- Обзор Toolformer на Synced Review
- Страница Toolformer на OpenReview
- Обзор Toolformer на Medium
- Статья о модели Gorilla на arXiv
- Страница плагинов ChatGPT на сайте OpenAI
Литература
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023. OpenReview.
- Li, M. et al. (2023). API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs. arXiv:2304.08244.
- Zhang, T. et al. (2023). Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT. arXiv:2304.11116.
- Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
- Qin, Y. et al. (2023). ToolLLM: Facilitating Large Language Models to Master 16 000+ Real-World APIs. arXiv:2307.16789.
- Li, Y. et al. (2024). Tool Learning with Large Language Models: A Survey. arXiv:2405.17935.
- OpenAI (2023). ChatGPT Plugins. OpenAI Blog.
- Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
- Schick, T. et al. (2023). Meta AI & UPF’s Toolformer: Enabling Language Models to Teach Themselves to Use External Tools. Synced Review.
Примечания
- ↑ 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 1,13 Schick, T. et al. «Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools». Synced. [1]
- ↑ Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
- ↑ 3,0 3,1 3,2 3,3 3,4 3,5 3,6 Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv. [3]
- ↑ 4,0 4,1 4,2 4,3 4,4 4,5 4,6 4,7 4,8 OXEN AI. «Arxiv Dives Toolformer: Language models can teach themselves to use tools». Medium. [4]
- ↑ «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
- ↑ Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
- ↑ Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
- ↑ 8,0 8,1 8,2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
- ↑ 9,0 9,1 «ChatGPT plugins». OpenAI. [9]