Function calling (LLM) (PL)
Function Calling (Wywoływanie funkcji) — to mechanizm w dużych modelach językowych (LLM), pozwalający modelowi na interakcję z zewnętrznymi narzędziami i API poprzez generowanie ustrukturyzowanych danych (zazwyczaj JSON) do wywoływania funkcji zamiast bezpośredniej odpowiedzi tekstowej[1].
Innymi słowy, model na podstawie zapytania użytkownika określa, którą funkcję z proponowanego zestawu należy wywołać i z jakimi parametrami. Mechanizm ten rozszerza zakres zastosowań LLM, pozwalając im służyć jako interfejs między językiem naturalnym a praktycznymi działaniami. Otwiera to możliwości integracji AI z zewnętrznymi systemami: model może pobierać aktualne dane, wykonywać operacje lub korzystać z serwisów, co jest szczególnie cenne przy tworzeniu inteligentnych asystentów i autonomicznych agentów. Korzystanie z zewnętrznych narzędzi zmniejsza również ryzyko halucynacji (zmyślonych faktów) dzięki odwoływaniu się do wiarygodnych źródeł[2].
Historia i podejścia do implementacji
Wczesne podejścia (prompting i Toolformer)
Pomysł nauczenia modeli językowych wywoływania narzędzi ukształtował się w latach 2022–2023. Wczesne podejścia opierały się na technikach złożonego promptingu. I tak w 2022 roku zaproponowano schemat ReAct, w którym model podczas dialogu naprzemiennie stosował rozumowanie i działania (wywołania narzędzi), zakodowane w jednym tekście.
Kluczowym krokiem było pojawienie się modelu Toolformer, przedstawionego przez badaczy Meta na początku 2023 roku. Toolformer zademonstrował, że LLM można specjalnie douczynić do samodzielnego wywoływania zewnętrznych narzędzi (kalkulator, wyszukiwarka, kalendarz) na podstawie podpowiedzi tekstowych, wstawiając do generowanego tekstu specjalne tokeny wywołania API[3].
Oficjalne wsparcie i rozwój
Szczególnym kamieniem milowym było działanie firmy OpenAI, która w czerwcu 2023 roku oficjalnie wprowadziła obsługę Function Calling do swoich API dla modeli GPT-3.5 i GPT-4[4]. Nowe wersje modeli zostały douczone do rozpoznawania sytuacji, w których zapytanie użytkownika implikuje odwołanie do zewnętrznej funkcji, i do generowania precyzyjnie ustrukturyzowanego obiektu JSON z argumentami. OpenAI określiło tę możliwość mianem „nowego sposobu niezawodnego łączenia GPT z zewnętrznymi narzędziami i API".
Otwarte inicjatywy
Wślad za komercyjnymi implementacjami pojawiły się otwarte modele, douczone do generowania poprawnych wywołań funkcji.
- Gorilla: Projekt UC Berkeley, douczona wersja LLaMA, zdolna do formułowania wywołań do tysięcy różnych API. Do oceny takich modeli stworzono benchmark Berkeley Function-Calling Leaderboard[5].
- ToolAlpaca, ToolLLaMA, Hermes: Serie otwartych modeli douczonych na syntetycznych przykładach wywołań funkcji, często generowanych przez bardziej zaawansowane modele.
Mechanizm działania
Proces korzystania z Function Calling zazwyczaj obejmuje kilka kroków:
- Definiowanie funkcji. Programista z góry definiuje zestaw funkcji dostępnych dla modelu (np. zewnętrznych API) i opisuje ich sygnatury oraz przeznaczenie, zazwyczaj w formacie JSON Schema.
- Analiza zapytania. Podczas dialogu model analizuje intencję użytkownika i samodzielnie decyduje, czy do udzielenia odpowiedzi należy wywołać jedną ze zdefiniowanych funkcji.
- Generowanie wywołania. Jeśli wymagane jest działanie, LLM zamiast zwykłego tekstu generuje specjalny ustrukturyzowany wynik (np. JSON z nazwą funkcji i argumentami). Jeśli wywołanie nie jest potrzebne, model zwraca zwykłą odpowiedź tekstową.
- Wykonanie funkcji. Zewnętrzny program (powłoka chatbota lub agent) odbiera JSON, wykonuje rzeczywiste wywołanie wskazanej funkcji z zaproponowanymi parametrami i przekazuje wynik z powrotem do modelu.
- Formułowanie ostatecznej odpowiedzi. Model wykorzystuje otrzymane dane do wygenerowania końcowej odpowiedzi dla użytkownika[4].
Do zarządzania tym wieloetapowym procesem w trakcie uczenia modeli stosuje się specjalne formaty dialogu, na przykład format ChatML od OpenAI, gdzie oprócz ról „użytkownik" i „asystent" wprowadza się rolę „funkcja" do przekazywania wyników wywołań.
Zastosowanie i zalety
Możliwość wywoływania funkcji znacząco poszerza spektrum zadań rozwiązywanych za pomocą LLM.
- Integracja z zewnętrznymi API. Model może odpowiadać na zapytania wymagające aktualnych informacji, wywołując zewnętrzne serwisy (np. w celu uzyskania pogody, kursów walut, wiadomości).
- Automatyzacja działań użytkownika. LLM może wykonywać rutynowe zadania: wysyłać wiadomości e-mail, tworzyć wydarzenia w kalendarzu, składać zamówienia w sklepach internetowych.
- Dostęp do baz danych i analityki. Zapytania w języku naturalnym mogą być tłumaczone na wywołania wewnętrznych API lub zapytania SQL w celu pobierania i analizowania danych.
- Ekstrakcja ustrukturyzowanych informacji. LLM może samodzielnie wyodrębniać fakty z długiego tekstu (np. imiona, daty, adresy) i zwracać je w postaci ustrukturyzowanej tablicy JSON, wygodnej do dalszego przetwarzania programistycznego.
Problemy bezpieczeństwa
Rozszerzając możliwości modeli, Function Calling niesie jednocześnie nowe zagrożenia.
- Niezweryfikowane wyniki. Interakcja modelu z zewnętrznymi narzędziami musi być starannie zabezpieczona. Jeśli model otrzyma od API złośliwą lub błędną wartość, może ją włączyć do odpowiedzi lub wywołać na jej podstawie inną funkcję, co prowadzi do nieprzewidywalnych konsekwencji.
- Ataki przez argumenty funkcji. Badacze odkryli podatności specyficzne dla trybu Function Calling. W 2025 roku zademonstrowano atak nazwany „Ciemną stroną Function Calling". Jego istota polega na zaproponowaniu modelowi specjalnej „funkcji", w której wewnątrz argumentów ukryta jest zakazana instrukcja (jailbreak payload). Model, postępując zgodnie z zasadą wywoływania funkcji, generuje argumenty zawierające treści naruszające reguły, omijając tym samym filtry moderacyjne. Testy wykazały skuteczność ataku w ponad 90% przypadków na sześciu współczesnych modelach, w tym GPT-4 i Claude[2].
Aby zapobiegać takim incydentom, zaleca się udostępnianie modelowi wyłącznie zaufanych narzędzi, wdrażanie potwierdzenia użytkownika przed wykonaniem krytycznych działań, a także stosowanie specjalnych „obronnych" promptów i rygorystycznej weryfikacji argumentów pod kątem niebezpiecznych treści.
Linki zewnętrzne
- Oficjalne ogłoszenie Function Calling od OpenAI
- Strona projektu Gorilla LLM
- Apideck (2024). An Introduction to Function Calling and Tool Use. Apideck Blog.
- LangChain (2025). Tool Calling (Documentation). LangChain Docs.
- Mistral AI (2025). Function Calling – Documentation. Mistral Docs.
- Hopsworks (2024). What is Function Calling with LLMs?. Hopsworks Dictionary.
- Hopsworks (2024). Unlocking the Power of Function Calling with LLMs. Hopsworks Blog.
- University of California, Berkeley (2025). Berkeley Function Calling Leaderboard V3. Online Resource.
Literatura
- Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. ACL 2025.
- OpenAI (2023). Function Calling and Other API Updates. OpenAI Blog.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
- Liu, W. et al. (2024). ToolACE: Winning the Points of LLM Function Calling. arXiv:2409.00920.
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
Przypisy
- ↑ «What is Function Calling with LLMs?». Hopsworks. [1]
- ↑ 2.0 2.1 Wu, Z. et al. «The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models». Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing, 2025. [2]
- ↑ Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv:2302.04761, 2023. [3]
- ↑ 4.0 4.1 «Function calling and other API updates». OpenAI, 2023. [4]
- ↑ «Gorilla: Large Language Model Connected to Massive APIs». University of California, Berkeley. [5]