[ W skrócie ]
- Function calling to protokół: model dostaje opisy funkcji, a gdy chce z której skorzystać, zwraca ustrukturyzowane żądanie — wykonanie należy do Ciebie.
- Model NIGDY nie wykonuje kodu sam — to Twój system waliduje argumenty, wywołuje funkcję i odsyła wynik.
- Jakość opisów funkcji i ich parametrów wprost decyduje o trafności wywołań — to dokumentacja pisana dla modelu.
- Pętla wywołań (model prosi, system odpowiada, model kontynuuje) to fundament agentów.
Co to właściwie jest?
Function calling (u części dostawców: tool calling) to umowa między Twoim kodem a modelem:
- Ty deklarujesz funkcje — nazwa, opis, schemat parametrów.
- Model, gdy uzna, że funkcja pomoże w zadaniu, zwraca żądanie wywołania z konkretnymi argumentami.
- Twój system funkcję wykonuje (albo nie!) i odsyła wynik.
- Model kontynuuje z nową wiedzą.
Najważniejsze zdanie tego artykułu: model nie wykonuje niczego — on tylko prosi. Cała władza (i cała odpowiedzialność) zostaje w Twoim kodzie.
Krok po kroku na przykładzie
Deklaracja narzędzia (tu: składnia Anthropic, u innych dostawców niemal identyczna):
{
"name": "sprawdz_stan_magazynu",
"description": "Zwraca dostepna ilosc produktu w magazynie po SKU",
"input_schema": {
"type": "object",
"properties": {
"sku": { "type": "string", "description": "kod produktu, np. BUT-42-CZ" }
},
"required": ["sku"]
}
}Użytkownik pyta: „czy macie jeszcze czarne czterdziestkidwójki?”. Model odpowiada żądaniem:
{
"type": "tool_use",
"name": "sprawdz_stan_magazynu",
"input": { "sku": "BUT-42-CZ" }
}Twój kod wywołuje magazyn i odsyła wynik:
{
"type": "tool_result",
"content": "{ \"sku\": \"BUT-42-CZ\", \"dostepne\": 7 }"
}Model kończy: „Tak, mamy 7 par na stanie”. Pętla może mieć wiele rund — i dokładnie ta pętla, obudowana limitami i uprawnieniami, robi z modelu agenta.
Zasady, które oszczędzają problemów
- Waliduj argumenty przed wykonaniem. Schemat to deklaracja intencji, nie gwarancja — SKU sprawdź regexem, zakresy dat logiką.
- Opisy pisz jak dokumentację. Model wybiera funkcję po opisie; „zwraca stan po SKU” działa, „handler magazynu” — nie. Dobre opisy plus przykłady w opisie parametrów potrafią podnieść trafność wywołań bardziej niż zmiana modelu na droższy.
- Funkcje odczytu i zapisu rozdzielaj. Odczyty mogą być swobodne; zapisy chcesz móc wyłączyć jedną flagą albo obłożyć potwierdzeniem.
- Loguj każdą rundę. Żądanie, argumenty, wynik — bez tego nie zdiagnozujesz, czemu model „dziwnie się zachował” w czwartek o 16:40.
- function calling
- tool calling
- API
- integracje
- agenci AI

