Toolformer

Материал из Systems analysis wiki
Перейти к навигации Перейти к поиску

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]:

  1. Генерация кандидатов вызовов API. Сначала берутся тексты из большого корпуса (например, статей или веб-страниц) и в них искусственно вставляются вызовы инструментов, которые потенциально могут помочь продолжить или дополнить текст. Эти вставки модель генерирует сама с помощью N-примерного промптинга, опираясь на несколько вручную заданных образцов использования каждого API[1]. Например, модель может получить фрагмент: «В 2024 году население города составляло [QA("Какова численность населения этого города?") → ...] человек», где QA( ) — вызов системы вопросов-ответов, который должен вернуть недостающие данные. Для каждого инструмента отбираются подходящие контексты; так, для калькулятора модель выбирает предложения, содержащие несколько чисел и слова вроде «равно» или «итого»[4] — там, где арифметический результат действительно понадобится.
  2. Выполнение API-вызовов и дополнение данных. Далее все сгенерированные моделью вызовы реально выполняются — например, отправляются запросы в поисковик или вычисляются выражения на калькуляторе. Полученные ответы подставляются обратно в тексты, формируя завершённые варианты предложений с вставками вида `{ответ}`[4][4]. Одновременно сохраняются и «пустые» варианты (без подстановки ответа), а также исходные тексты без всяких вызовов – для последующего сравнения.
  3. Фильтрация и самооценка полезности. На этом этапе 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].

Ссылки

Литература

  • 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. 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]
  2. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
  3. 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. 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]
  5. «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
  6. Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
  7. Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
  8. 8,0 8,1 8,2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
  9. 9,0 9,1 «ChatGPT plugins». OpenAI. [9]