Function calling (wywoływanie funkcji)
Definicja
Function calling to mechanizm, w którym model zamiast „zgadywać odpowiedź”, zwraca ustrukturyzowaną prośbę o wywołanie konkretnej funkcji (np. pobierz dane, policz, wyszukaj), a potem wykorzystuje wynik tej funkcji do odpowiedzi.
Co to w zasadzie jest?
Wyobraź sobie, że AI to „gadatliwy asystent”, który czasem powinien przestać gadać i… po prostu coś sprawdzić lub wykonać. Function calling to sposób, żeby AI powiedziało: „hej, potrzebuję danych z kalendarza / pliku / API — zróbmy to technicznie, a nie na słowo”. W praktyce: 1) Ty zadajesz pytanie, 2) model wybiera funkcję (np. „pobierz pogodę”, „wyszukaj w bazie”), 3) system wywołuje funkcję, 4) wynik wraca do modelu, 5) model tworzy finalną odpowiedź.
Dzięki temu AI częściej bazuje na faktach (bo „widzi” wynik funkcji), a rzadziej fantazjuje.
Praktyczne zastosowania (konkretne scenariusze)
Scenariusz 1: Planowanie
- Cel: „Sprawdź wolne terminy w kalendarzu i zaproponuj 3 sloty.” (funkcja: odczyt kalendarza).
- Wejście: pytanie użytkownika i dostępna funkcja.
- Kroki: wybierz funkcję -> przekaż parametry -> użyj wyniku.
- Rezultat: odpowiedź oparta na wyniku funkcji.
- Zabezpieczenie: walidacja parametrów i obsługa błędów.
Scenariusz 2: Obsługa wiedzy
- Cel: „Znajdź w repo definicję RAG i podaj skrót.” (funkcja: wyszukaj w plikach).
- Wejście: pytanie użytkownika i dostępna funkcja.
- Kroki: wybierz funkcję -> przekaż parametry -> użyj wyniku.
- Rezultat: odpowiedź oparta na wyniku funkcji.
- Zabezpieczenie: walidacja parametrów i obsługa błędów.
Scenariusz 3: Automatyzacja
- Cel: „Zapisz to jako notatkę i dodaj tag ‘AI’.” (funkcja: utwórz wpis w systemie notatek).
- Wejście: pytanie użytkownika i dostępna funkcja.
- Kroki: wybierz funkcję -> przekaż parametry -> użyj wyniku.
- Rezultat: odpowiedź oparta na wyniku funkcji.
- Zabezpieczenie: walidacja parametrów i obsługa błędów.
Ryzyka i jak je ograniczać
Ryzyko 1: Model wybierze złą funkcję albo poda złe parametry
- Ryzyko: model wybierze złą funkcję albo poda złe parametry.
- Jak ograniczać: walidacja parametrów + lista dozwolonych funkcji (allowlist) + testy przypadków brzegowych.
Ryzyko 2: Wyciek danych (model „poprosi” o zbyt szeroki zakres)
- Ryzyko: wyciek danych (model „poprosi” o zbyt szeroki zakres).
- Jak ograniczać: minimalizacja danych, maskowanie PII, zasady dostępu per rola.
Ryzyko 3: Nadużycie funkcji przez prompt injection (atak w treści)
- Ryzyko: nadużycie funkcji przez prompt injection (atak w treści).
- Jak ograniczać: oddzielanie danych od instrukcji + guardrails + kontrola uprawnień.
Mapa powiązań
- API → funkcje zwykle mapują się na endpointy API.
- Agent AI → agent używa function calling, by wykonywać działania.
- Orkiestracja → orkiestrator decyduje, kiedy wywołać funkcję i co zrobić z wynikiem.
- Prompt injection → treść może próbować „wymusić” niebezpieczne wywołania.
- DLP / PII → ochrona danych przekazywanych do funkcji.
- Mini-przepływ:
Prompt → LLM → function_call → API → wynik → LLM → odpowiedź
Diagram
flowchart LR
A[Pytanie]
B[Model rozpoznaje funkcję]
C[Wywołanie funkcji]
D[Wynik funkcji]
E[Odpowiedź]
A --> B --> C --> D --> E
Diagram pokazuje, że model może poprosić system o wywołanie konkretnej funkcji zamiast zgadywać wynik.