Toolformer (PL)
Toolformer — to podejście do tworzenia dużych modeli językowych (LLM), umożliwiające im samodzielne korzystanie z zewnętrznych narzędzi poprzez wywołania API[1]. Metoda ta została zaproponowana w 2023 roku przez grupę badaczy z Meta AI Research we współpracy z Uniwersytetem Pompeu Fabra (Hiszpania). W swojej pracy „Toolformer: Language Models Can Teach Themselves to Use Tools" (Timo Schick et al., 2023) autorzy zwracają uwagę na pewien paradoks: współczesne LLM wykazują imponującą zdolność rozwiązywania złożonych nowych zadań na podstawie przykładów tekstowych, lecz jednocześnie często nie potrafią niezawodnie wykonywać podstawowych operacji – takich jak liczenie czy wyszukiwanie faktów[1]. Aby przezwyciężyć te ograniczenia, zespół opracował model Toolformer, który samodzielnie uczy się wybierać i wywoływać zewnętrzne narzędzia (takie jak wyszukiwarki, kalkulatory czy serwisy tłumaczeniowe) w celu poprawy jakości wykonywania różnorodnych zadań[1]. W lutym 2023 roku model ten został opublikowany w formie preprintu na arXiv, a następnie został przyjęty na konferencję NeurIPS 2023[2].
Główna idea i możliwości modelu
Toolformer to dostrojony model językowy zdolny do decydowania, które narzędzie wywołać, kiedy dokładnie je wywołać, jakie przekazać parametry i jak włączyć uzyskany wynik do generowanego tekstu[3]. Proces uczenia zorganizowany jest w trybie self-supervised — model sam generuje i ocenia przykłady użycia API, wymagając jedynie niewielkiego zestawu demonstracji (dosłownie kilku przykładów) dla każdego narzędzia[3]. W odróżnieniu od wcześniejszych podejść, nie są wymagane obszerne adnotacje ani szablony zorientowane na człowieka do integracji narzędzi; model sam uczy się kiedy i jak stosować dane API, zachowując ogólne zdolności językowe i nie ograniczając się do wąsko zdefiniowanych zadań[1].
Autorzy zintegrowali w Toolformerze szeroki wachlarz narzędzi dostępnych poprzez proste wywołania API. W wersji eksperymentalnej wykorzystano następujące narzędzia[3]:
- Kalkulator – do wykonywania obliczeń arytmetycznych.
- System pytań i odpowiedzi (Q&A) – do wyszukiwania odpowiedzi na pytania faktograficzne z bazy wiedzy.
- Wyszukiwarki internetowe (2 różne) – do wyszukiwania aktualnych informacji w internecie.
- System tłumaczenia maszynowego – do tłumaczenia tekstów między językami.
- Kalendarz – do uzyskiwania informacji o datach i czasie.
Każde narzędzie reprezentowane jest w formacie fragmentu tekstowego (specjalnego znacznika tekstowego), co pozwala modelowi osadzać wywołanie API bezpośrednio w generowanym przez niego tekście[4]. Na przykład model może wstawić konstrukcję w rodzaju `[Calculator(...)]` lub `[Search(\"zapytanie\")]` do bieżącego kontekstu, sygnalizując potrzebę odwołania do zasobu zewnętrznego. Podczas generowania odpowiedzi Toolformer wytwarza specjalny symbol (strzałka →), na podstawie którego system wstrzymuje generowanie i wykonuje odpowiednie wywołanie API; uzyskany wynik jest wstawiany do tekstu, po czym generowanie kolejnego fragmentu jest kontynuowane[4]. Taki mechanizm pozwala modelowi dynamicznie korzystać z możliwości zewnętrznych serwisów, pozostając przy tym jednolitym modułem językowym bez zmiany architektury.
Uczenie modelu (metodologia)
Twórcy opisali proces uczenia Toolformera w kilku etapach[4], stosując technikę uczenia w kontekście (in-context learning) do generowania danych syntetycznych[1]:
- Generowanie kandydatów wywołań API. Na początku pobierane są teksty z dużego korpusu (np. artykuły lub strony internetowe) i sztucznie wstawiane są do nich wywołania narzędzi, które potencjalnie mogą pomóc w kontynuowaniu lub uzupełnieniu tekstu. Te wstawki model generuje sam przy użyciu promptingu z N przykładami, opierając się na kilku ręcznie przygotowanych wzorcach użycia każdego API[1]. Na przykład model może otrzymać fragment: „W 2024 roku liczba mieszkańców miasta wynosiła [QA(\"Jaka jest liczba mieszkańców tego miasta?\") → ...] osób", gdzie QA( ) to wywołanie systemu pytań i odpowiedzi, które powinno zwrócić brakujące dane. Dla każdego narzędzia wybierane są odpowiednie konteksty; tak więc dla kalkulatora model wybiera zdania zawierające kilka liczb i słowa takie jak „równa się" lub „razem"[4] — tam, gdzie wynik arytmetyczny rzeczywiście będzie potrzebny.
- Wykonanie wywołań API i uzupełnienie danych. Następnie wszystkie wywołania wygenerowane przez model są rzeczywiście wykonywane — na przykład wysyłane są zapytania do wyszukiwarki lub obliczane są wyrażenia na kalkulatorze. Uzyskane odpowiedzi są podstawiane z powrotem do tekstów, tworząc kompletne warianty zdań z wstawkami w postaci `{odpowiedź}`[4][4]. Jednocześnie zachowywane są również warianty „puste" (bez podstawiania odpowiedzi), a także oryginalne teksty bez żadnych wywołań – do późniejszego porównania.
- Filtrowanie i samoocena użyteczności. Na tym etapie Toolformer samodzielnie ocenia, które z wygenerowanych wstawek API są rzeczywiście użyteczne do przewidywania kontynuacji tekstu[4]. Porównywane jest prawdopodobieństwo modelu językowego kontynuowania tekstu w trzech scenariuszach: (a) bez żadnego wywołania, (b) z wywołaniem narzędzia bez podstawionego wyniku, (c) z wywołaniem i podstawionym wynikiem[4]. Jeśli dodanie konkretnej odpowiedzi API zwiększa prawdopodobieństwo modelu co do właściwej kontynuacji frazy (tzn. rzeczywiście pomaga modelowi przewidzieć kolejne słowa), taki przykład uznawany jest za użyteczny. W próbce pozostają tylko wstawki przynoszące zysk w prawdopodobieństwie. W ten sposób odrzucane są przypadki, gdy wywołanie narzędzia było zbędne lub nie wniosło nowych informacji. Wreszcie model jest dostrajany (fine-tuning) na uzyskanym odfiltrowanym datasecie, zawierającym rzeczywiste przykłady tekstów z optymalnie wstawionymi wywołaniami API[1]. Uczenie odbywa się zgodnie ze standardowym celem modelowania językowego – przewidywania kolejnego tokenu w sekwencji, łącznie z tokenami oznaczającymi wyniki wywołań narzędzi.
Ważne jest podkreślenie, że do wprowadzenia każdego nowego narzędzia wymagane było jedynie kilka ręcznych przykładów jego użycia — dalej generowanie danych treningowych przebiegało automatycznie[3]. Dzięki temu podejście Toolformera praktycznie nie zależy od dostępności specjalistycznych anotowanych korpusów i minimalizuje nakład pracy związany z adnotowaniem danych. Model sam uczy się formatu i stosowności wywołań API, zachowując przy tym swoją uniwersalność: korzysta z narzędzi tylko wtedy, gdy jest to rzeczywiście potrzebne do rozwiązania postawionego zadania[1].
Wyniki eksperymentalne
Do eksperymentalnej weryfikacji metody badacze wzięli istniejący model językowy GPT-J (6,7 mld parametrów) — otwarty LLM wytrenowany na korpusie The Pile[4]. Model ten dostrojono zgodnie z opisaną procedurą, uzyskując Toolformer oparty na GPT-J. Wydajność nowego podejścia oceniana była w trybie zero-shot (bez przykładów) na szeregu standardowych zadań, obejmujących matematyczne rozwiązywanie zadań tekstowych, wyszukiwanie faktów i odpowiadanie na pytania z zakresu wiedzy (QA), a także tłumaczenie i uzupełnianie luk w tekście. Jako dane testowe wykorzystano m.in. otwarte zestawy pytań Natural Questions, TriviaQA (do oceny wiedzy faktograficznej) oraz zestawy zadań ASDiv, MAWPS, SVAMP (matematyczne zadania tekstowe dotyczące arytmetyki), a także wielojęzyczne benchmarki QA: MLQA, LAMA[5].
Wyniki pokazały, że Toolformer znacząco przewyższa bazowy model tego samego rozmiaru w wielu zadaniach[1]. Co więcej, dzięki podłączeniu narzędzi stosunkowo mały model (6,7 mld parametrów) był w stanie pod względem niektórych wskaźników prześcignąć znacznie większy model GPT-3 (175 mld parametrów)[1][6]. Na przykład w matematycznych zadaniach tekstowych wymagających precyzyjnych obliczeń Toolformer wykazał szczególnie wyraźny postęp w porównaniu ze zwykłymi LLM, rozwiązując takie zadania dokładnie dzięki kalkulatorowi, podczas gdy nawet GPT-3 popełniał błędy[1]. W testach z pytaniami faktograficznymi (QA) Toolformer oparty na GPT-J również osiągnął jakość odpowiedzi porównywalną lub lepszą niż GPT-3, ponieważ mógł wykonać wyszukiwanie internetowe w celu uzyskania aktualnych informacji[1]. Co istotne, nowe podejście nie pogorszyło ogólnych zdolności modelu językowego, takich jak spójne kontynuowanie tekstu na zwykłych danych: Toolformer zachował poziom generowania języka naturalnego bez narzędzi na poziomie wyjściowego GPT-J[3]. Innymi słowy, dodanie funkcjonalności wywołań API nie „odebrało" modelowi jego podstawowych umiejętności, lecz wzbogaciło je o dodatkowe możliwości.
Znaczenie pracy i dalsze badania
Opracowanie Toolformera wykazało zasadniczą możliwość nauczenia modelu korzystania z zewnętrznych narzędzi praktycznie bez ręcznego adnotowania, dzięki generowaniu danych syntetycznych i samoocenie użyteczności. Osiągnięcie to otwiera drogę do bardziej efektywnych i niezawodnych dużych modeli językowych: zamiast rozbudowywać miliardy parametrów w celu zapamiętywania faktów czy reguł matematycznych, stosunkowo kompaktowy model może dynamicznie korzystać z zewnętrznych zasobów (baz wiedzy, kalkulatorów, serwisów), aby uzupełniać własne braki[1]. Takie podejście pozwala zmniejszyć liczbę „halucynacji" (gdy model wymyśla nieistniejące informacje), zwiększyć dokładność odpowiedzi i aktualność wiedzy bez całkowitego przebudowywania modelu. Zasadniczo Toolformer osiąga „to, co najlepsze z obu światów" — łącząc umiejętności językowe dużego modelu z precyzją wąskich narzędzi[3].
Praca Schicka i współpracowników była jedną z pierwszych, które wykazały samodzielne opanowanie przez LLM zewnętrznych API, i wzbudziła duże zainteresowanie w środowisku badaczy. Pojawiły się dalsze badania rozwijające tę ideę. Na przykład w 2023 roku zaproponowano model Graph-ToolFormer, adaptujący zasady Toolformera do pracy z danymi grafowymi. Opierając się na podpowiedziach wygenerowanych przez ChatGPT, Graph-ToolFormer uczy model językowy wywoływać zewnętrzne narzędzia do rozwiązywania zadań analizy grafów (np. uzyskiwania właściwości grafu, pracy z sieciami wiedzy itp.)[7]. Innym godnym uwagi osiągnięciem jest model Gorilla (Univ. of California, Berkeley, 2023), który skupia się na precyzyjnym korzystaniu z wielu zewnętrznych API programistycznych[8]. Gorilla to model oparty na LLaMA, dostrojony na obszernym zestawie udokumentowanych funkcji; jest zdolny do generowania poprawnych wywołań API na podstawie opisu zadania, a w eksperymentach okazał się tak skuteczny, że przewyższył nawet GPT-4 pod względem dokładności formowania wywołań bibliotek i serwisów[8]. W Gorilla zaimplementowana jest integracja z mechanizmem wyszukiwania w dokumentacji, co pozwala aktualizować informacje o zmianach API i istotnie redukuje błędy oraz halucynacje przy korzystaniu z narzędzi[8]. Prace te potwierdzają znaczenie kierunku zapoczątkowanego przez Toolformer: łączenie LLM z zewnętrznymi narzędziami postrzegane jest jako obiecująca droga do tworzenia potężniejszych i bardziej niezawodnych systemów AI.
Należy zauważyć, że idea integracji narzędzi z modelami językowymi rozwija się nie tylko w badaniach, ale i w przemyśle. W marcu 2023 roku firma OpenAI przedstawiła system wtyczek dla ChatGPT – specjalny interfejs umożliwiający podłączenie modelu do zewnętrznych serwisów (przeglądarka internetowa, bazy wiedzy, silniki obliczeniowe itp.) w celu uzyskiwania aktualnych informacji i wykonywania obliczeń[9]. Użytkownicy od dawna oczekiwali podobnej funkcjonalności, a pojawienie się wtyczek w praktyce realizuje koncepcję zbliżoną do Toolformera: model zostaje uzupełniony o „narzędzia" rozszerzające jego możliwości przy realizacji różnorodnych zapytań użytkowników[9]. W ten sposób Toolformer wpisuje się w ogólny trend rozwoju AI, w którym duże modele językowe stają się platformą zdolną do korzystania na żądanie z zewnętrznej wiedzy i obliczeń. Badanie przeprowadzone przez zespół Meta AI i UPF położyło ważny fundament pod ten kierunek, pokazując, jak LLM mogą uczyć się pracy z narzędziami praktycznie bez ręcznego nadzoru, zbliżając się tym samym do bardziej uniwersalnego i bezpiecznego asystenta intelektualnego[1][3].
Odnośniki
- Oryginalna praca „Toolformer: Language Models Can Teach Themselves to Use Tools" na arXiv
- Przegląd Toolformera na Synced Review
- Strona Toolformera na OpenReview
- Przegląd Toolformera na Medium
- Artykuł o modelu Gorilla na arXiv
- Strona wtyczek ChatGPT na stronie OpenAI
Literatura
- 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.
Przypisy
- ↑ 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]