Robocikowo>ROBOCIKOWO
Narzędzia deweloperskie

Function Calling / Tool Calling

2023AktywnyOpublikowano: 4 czerwca 2026Aktualizacja: 14 sierpnia 2026Opublikowany
Function Calling to wzorzec, w którym LLM otrzymuje opis dostępnych funkcji (nazwa, parametry, schemat JSON) i zamiast odpowiadać tekstem może wybrać funkcję oraz wygenerować jej argumenty. Aplikacja wykonuje funkcję i wynik zwraca do modelu w kolejnej turze.
Kluczowa innowacja
Pozwala dużym modelom językowym generować ustrukturyzowane wywołania funkcji (nazwa + argumenty JSON zgodne ze schematem), które runtime aplikacji wykonuje deterministycznie i zwraca wynik z powrotem do modelu — łączy rozumowanie w języku naturalnym z wywołaniami zewnętrznego kodu, API i baz danych.
Kategoria
Narzędzia deweloperskie
Poziom abstrakcji
Wzorzec
Poziom operacji
ToolingInferencjaOrkiestracja
Zastosowania
Wywoływanie zewnętrznych REST/GraphQL API z poziomu czatuZapytania SQL / NoSQL do baz danychObliczenia numeryczne i matematyczne (kalkulator, Wolfram, kod)Wyszukiwanie w sieci i RAG po dokumentachAgenci autonomiczni i orchestracja zadańWymuszanie strukturalnego wyjścia (structured output)Sterowanie urządzeniami IoT i robotamiWykonywanie kodu w sandboxie

Jak działa

Aplikacja przekazuje modelowi listę funkcji wraz ze schematami JSON parametrów. Model, dzięki post-treningowi (instruction tuning + RLHF na tool-use), decyduje czy odpowiedzieć tekstem, czy wyemitować strukturalne wywołanie typu {name, arguments}. Runtime parsuje wywołanie, waliduje argumenty względem schematu, wykonuje funkcję i wynik (jako tool message) wkleja do kontekstu. Model w kolejnym kroku wykorzystuje wynik do dalszego rozumowania lub odpowiedzi dla użytkownika. Pętla może się powtórzyć wielokrotnie (multi-step tool use) i — od listopada 2023 — model może wyemitować kilka wywołań naraz (parallel tool calls).

Rozwiązany problem

Czysty LLM jest izolowany od świata — nie ma dostępu do aktualnych danych, baz danych, kalkulatorów, systemów firmowych czy fizycznych urządzeń. Function Calling rozwiązuje problem niezawodnego, ustrukturyzowanego pomostu między swobodnym rozumowaniem modelu a deterministycznym wykonaniem zewnętrznego kodu, eliminując kruche parsowanie ad-hoc tekstu i halucynacje formatu.

Kluczowe mechanizmy

Opis narzędzi/funkcji ze schematem parametrów (zwykle JSON Schema)
Wybór narzędzia i generacja argumentów w ustrukturyzowanym formacie przez model
Wykonanie po stronie aplikacji i zwrot wyniku do modelu w kolejnej turze
Równoległe wywołania wielu narzędzi (parallel tool calls)
Wieloturowa pętla narzędziowa (rozumowanie → wywołanie → obserwacja)

Mocne strony i ograniczenia

Mocne strony
✓Łączy LLM z realnymi działaniami i aktualnymi danymi
✓Ustrukturyzowane, przewidywalne wyjście (schemat) łatwe do zautomatyzowania
✓Fundament agentów AI i integracji z systemami zewnętrznymi
✓Wsparcie równoległych i wieloturowych wywołań narzędzi
✓Standaryzacja (JSON Schema, MCP) ułatwia przenośność
Ograniczenia
✗Model może halucynować nazwy narzędzi lub argumenty niezgodne ze schematem
✗Błędny dobór lub kolejność narzędzi w złożonych zadaniach
✗Ryzyko bezpieczeństwa: wykonywanie akcji o skutkach ubocznych (potrzebne zatwierdzenia/sandbox)
✗Wrażliwość na jakość opisów narzędzi i inżynierię promptu
✗Rosnące zużycie tokenów i latencja przy wielu narzędziach i turach

Komponenty

Definicja narzędzia (schemat)Kontrakt wejściowy

Nazwa, opis i schemat parametrów narzędzia (zwykle JSON Schema) przekazywane modelowi.

Wybór narzędzia i argumentówDecyzja modelu

Model decyduje, które narzędzie wywołać i generuje jego argumenty w ustrukturyzowanym formacie.

Wykonawca narzędzia (runtime)Wykonanie i sprzężenie zwrotne

Warstwa aplikacji/agenta wykonująca wywołanie i zwracająca wynik do modelu.

Oficjalna

Implementacja

Pułapki implementacyjne
Halucynacje nazw funkcji i argumentówWysoka

Model może wymyślić nieistniejącą funkcję albo podać argumenty niezgodne ze schematem. Mitigacja: walidacja JSON schema przed wykonaniem, ścisłe modele (strict mode / structured outputs), retry z komunikatem o błędzie.

Rozwiązanie:JSON schema validation, strict mode, error feedback w kolejnej turze.
Pętle wywołań i nadmiarowe kosztyWysoka

Agent może utknąć w pętli wywołań tej samej funkcji lub wywoływać nadmiarowo kosztowne narzędzia. Mitigacja: max_iterations, deduplikacja wywołań, budżety tokenów i czasu.

Rozwiązanie:Limit iteracji, deduplikacja, budżet tokenów i czasu.
Eksplozja kontekstu przez wyniki narzędziŚrednia

Wyniki funkcji (zwłaszcza wyszukiwanie i SQL) szybko zapełniają okno kontekstu, podnosząc koszt i degradując jakość. Mitigacja: streszczanie wyników, paginacja, selektywne wstawianie.

Rozwiązanie:Streszczanie, paginacja, selektywne wstrzykiwanie wyników.
Prompt injection przez wyniki narzędziKrytyczna

Treść zwracana z funkcji (np. strona internetowa, e-mail, wynik SQL) może zawierać instrukcje próbujące przejąć kontrolę nad agentem. Mitigacja: izolacja tool messages, oznaczanie nieufnej treści, polityki uprawnień narzędzi.

Rozwiązanie:Izolacja tool messages, sanitizacja, polityki uprawnień.

Ewolucja

Oryginalny paper · 2023 · arXiv / Meta AI · Timo Schick
Toolformer: Language Models Can Teach Themselves to Use Tools
Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer, Nicola Cancedda, Thomas Scialom
2022
ReAct: prompting łączący rozumowanie i działanie

Yao i in. pokazali, że LLM może w jednym łańcuchu myśli przeplatać kroki "thought" i "action" wywołujące zewnętrzne narzędzia — fundament konceptualny dla późniejszego function callingu.

2023
Toolformer — model uczy się sam używać narzędzi

Meta AI publikuje Toolformer (luty 2023): model w trakcie samonauki wstawia w tekście wywołania API i uczy się, kiedy ich potrzebuje — bezpośredni akademicki poprzednik produkcyjnego function callingu.

2023
OpenAI wprowadza Function Calling do API
Punkt przełomowy

13 czerwca 2023 OpenAI udostępnia function calling w modelach gpt-3.5-turbo-0613 i gpt-4-0613. Po raz pierwszy szeroko dostępny komercyjny LLM emituje ustrukturyzowane JSON-owe wywołania funkcji jako pierwszorzędny tryb odpowiedzi.

2023
Parallel tool calls i przemianowanie na "tools"

Listopad 2023: OpenAI DevDay wprowadza pole tools/tool_choice (zastępujące functions/function_call) oraz parallel tool calls — model w jednej odpowiedzi może zgłosić wiele niezależnych wywołań.

2024
Anthropic Tool Use GA i Gemini Function Calling

Function calling staje się standardem branżowym — Anthropic Claude wprowadza Tool Use w GA (maj 2024), Google Gemini udostępnia Function Calling, frameworki (LangChain, LlamaIndex) ujednolicają interfejsy.

2024
Model Context Protocol (MCP) — standaryzacja ekspozycji narzędzi
Punkt przełomowy

Anthropic publikuje MCP (listopad 2024) — otwarty protokół standaryzujący sposób, w jaki narzędzia, dane i zasoby są udostępniane modelom przez function calling, niezależnie od dostawcy LLM.

Hiperparametry (konfigurowalne osie)

Wybór narzędziaWysoka

Sterowanie wywołaniami: auto / wymuszone konkretne narzędzie / brak.

autoModel sam decyduje.
required/forcedWymuszenie wywołania (konkretnego) narzędzia.
noneZakaz wywołań w tej turze.
Równoległe wywołaniaŚrednia

Czy model może zwrócić wiele wywołań narzędzi naraz.

true/falseWłączenie/wyłączenie równoległych wywołań.

Złożoność obliczeniowa

Złożoność czasowa: O(t · c). Złożoność przestrzenna: O(n_tools + Σ wyników).

Paradygmat wykonania

Tryb główny
Warunkowy
Wzorzec aktywacji
Zależne od wejścia
Mechanizm routingu

Model — kierując się opisami narzędzi i historią konwersacji — wybiera, którą funkcję (jeśli w ogóle) wywołać oraz jakie podać argumenty. Routing odbywa się w przestrzeni tokenów wyjściowych modelu, bez zewnętrznego routera.

Równoległość

Poziom równoległości
Częściowo równoległy

Pojedyncza decyzja modelu o wywołaniu jest sekwencyjna, ale od listopada 2023 (OpenAI parallel tool calls) model może wyemitować wiele niezależnych wywołań w jednej turze, które runtime wykonuje równolegle.

Zakres
Inferencja

Wymagania sprzętowe

Podstawowe

Function Calling jest wzorcem aplikacyjnym i orkiestracyjnym — działa wszędzie, gdzie działa model językowy obsługujący tool use, niezależnie od backendu sprzętowego.