Przejdź do treści

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.

Dalsza lektura