Model jest trenowany lub instruowany do generowania wywołań narzędzi w specjalnym formacie (np. JSON). System wykonuje wywołanie narzędzia i zwraca wynik do modelu, który kontynuuje generowanie odpowiedzi z nową informacją.
Modele językowe są ograniczone do wiedzy z treningu i nie mogą wykonywać działań w świecie zewnętrznym. Augmentacja narzędziami pozwala LLM na wywoływanie funkcji, API i programów.
Formalna definicja interfejsu narzędzia przekazywana modelowi — zazwyczaj w formacie JSON Schema lub OpenAPI — opisująca nazwę narzędzia, jego parametry i typy danych wejściowych. Podawana w prompcie systemowym lub osobnym polu API.
Oficjalna
Moduł odpowiedzialny za generowanie ustrukturyzowanego wywołania narzędzia przez model LLM — zazwyczaj w postaci specjalnych tokenów, bloku JSON lub obiektu function_call. Model decyduje kiedy i z jakimi argumentami wywołać narzędzie na podstawie kontekstu.
Środowisko uruchomieniowe poza modelem, które przechwytuje wywołania narzędzi generowane przez LLM, wykonuje je (wywołując API, uruchamiając kod, przeszukując bazę danych) i zwraca wyniki do modelu jako nowy kontekst.
Oficjalna
Mechanizm zwrotu wyników wykonania narzędzia do okna kontekstu modelu, umożliwiający modelowi kontynuowanie generowania z uwzględnieniem uzyskanych danych. Wyniki mogą być wstrzykiwane jako blok tool_result, nowa wiadomość lub specjalne tokeny.
Oficjalna
Model może generować wywołania narzędzi z wymyślonymi lub nieprawidłowymi parametrami — np. fikcyjne nazwy funkcji, błędne typy danych, nieprawidłowe formaty dat lub identyfikatorów. Powoduje to ciche błędy wykonania po stronie hosta.
Wyniki zwrócone przez narzędzia (strony webowe, dokumenty, odpowiedzi API) mogą zawierać złośliwe instrukcje, które model traktuje jako polecenia systemowe — klasyczny atak prompt injection przez obserwowaną treść.
Bez twardych limitów model może wywoływać narzędzia w pętli — np. wielokrotnie przeszukując sieć w poszukiwaniu informacji niedostępnych w żadnym źródle — wyczerpując budżet tokenów i generując zbędne koszty API.
Wyniki zewnętrznych API lub wyszukiwarek mogą być bardzo długie (strony HTML, odpowiedzi JSON z wieloma polami), szybko wypełniając okno kontekstu i powodując utratę wcześniejszego kontekstu konwersacji.
Model może wywoływać narzędzia (np. wyszukiwarkę) dla informacji obecnych w jego parametrycznej wiedzy, niepotrzebnie zwiększając opóźnienie i koszt. Dotyczy szczególnie modeli z niskim progiem pewności do wnioskowania.
Nakano i in. (OpenAI) wzbogacają GPT-3 o możliwość przeszukiwania sieci przez interfejs tekstowej przeglądarki. Pierwsza demonstracja, że LLM może korzystać z zewnętrznego źródła informacji przez uczenie ze wzmocnieniem z ludzką informacją zwrotną.
Parisi i in. (Google) proponują TALM (Tool Augmented Language Models), gdzie LLM iteracyjnie rozszerza zbiór wywołań narzędzi przez odfiltrowanie tych, które poprawiają wyniki — wczesny krok ku samodzielnemu uczeniu się użycia narzędzi.
Yao i in. (Princeton / Google) proponują ReAct: LLM naprzemiennie generuje ślady rozumowania (Thought) i wywołania narzędzi (Action), otrzymując obserwacje (Observation) ze środowiska. Ustanawia wzorzec interleaved reasoning + tool use.
Schick i in. (Meta AI) publikują Toolformer — model trenowany przez samoczynną anotację wywołań API w tekstach, bez dużych ręcznie oznaczonych zbiorów danych. Model uczy się kiedy i jak wywoływać narzędzia (kalkulator, wyszukiwarka, tłumacz, QA system) i integrować ich wyniki.
OpenAI wprowadza function calling w GPT-4 i GPT-3.5 Turbo (czerwiec 2023) — ustrukturyzowane API umożliwiające modelowi generowanie wywołań funkcji w formacie JSON Schema. Staje się de facto standardem przemysłowym dla augmentacji narzędziowej.
Anthropic wdraża tool use w API Claude z obsługą równoległych wywołań narzędzi (parallel tool calling), gdzie model może wygenerować wiele wywołań jednocześnie wykonywanych przez host.
Anthropic publikuje Model Context Protocol jako otwarty standard łączący modele z zewnętrznymi serwerami narzędzi — analogicznie do Language Server Protocol dla narzędzi deweloperskich. MCP ujednolica format opisu narzędzi i protokół komunikacji między LLM a serwerami narzędzi.
Głównym wąskim gardłem jest czas oczekiwania na wyniki zewnętrznych narzędzi (latencja API, czas wykonania kodu) oraz liniowy wzrost długości kontekstu po wstrzyknięciu wyników — co zwiększa koszt każdego kolejnego kroku inferencji LLM.
Bazowy LLM pozostaje gęsty (dense) — wszystkie parametry aktywne podczas każdego kroku. Warunkowy charakter dotyczy wywołania zewnętrznych narzędzi, nie wewnętrznej struktury modelu.
Model decyduje w trakcie dekodacji, czy wywołać narzędzie (i które), czy kontynuować generowanie tekstu — na podstawie treści kontekstu i specyfikacji narzędzi. Decyzja jest endogeniczna: wynika z rozkładu prawdopodobieństwa na tokenach wyjściowych.
Równoległość jest możliwa gdy model generuje wiele wywołań narzędzi w jednej turze bez zależności między nimi. Wykonanie LLM jest sekwencyjne; równoległość dotyczy wyłącznie wykonania narzędzi przez host.
Zbiór narzędzi udostępnionych modelowi — określa przestrzeń możliwych wywołań. Narzędzia mogą obejmować wyszukiwarki, kalkulatory, interpretery kodu, bazy danych, API zewnętrzne, narzędzia systemowe.
Czy model może generować wiele wywołań narzędzi jednocześnie w jednej turze (parallel tool calling), które host wykonuje równolegle przed zwrotem wyników.
Format w jakim narzędzia są opisywane modelowi — wpływa na precyzję generowanych wywołań i kompatybilność z hostem.
Limit wywołań narzędzi w jednej turze konwersacyjnej; zabezpieczenie przed nieskończonymi pętlami wywołań.
Tool-augmented LLM jest wzorcem architektonicznym stosowanym na poziomie środowiska uruchomieniowego — wymagania sprzętowe są determinowane wyłącznie przez bazowy LLM i narzędzia, nie przez sam mechanizm augmentacji narzędziowej.