Function calling (tool use)
Zaktualizowano:
Function calling, znane również jako tool use, to zdolność modelu językowego do identyfikowania, kiedy i jakie zewnętrzne narzędzia lub funkcje API należy wywołać, aby zrealizować intencję użytkownika. Model generuje odpowiednie argumenty dla tych funkcji, ale nie wykonuje ich samodzielnie, lecz przekazuje je do zewnętrznego systemu.
Funkcja Function calling (lub tool use) umożliwia modelom językowym interakcję ze światem zewnętrznym poza ich wbudowaną wiedzą. Zamiast bezpośrednio odpowiadać na zapytanie, model analizuje intencję użytkownika i określa, czy do jej spełnienia potrzebne jest użycie jakiegoś narzędzia.
Jak to działa?
- Definicja narzędzi: Programista dostarcza modelowi opisy dostępnych funkcji (np. wyszukiwanie w internecie, wysyłanie e-maili, dostęp do bazy danych), wraz z ich nazwami i oczekiwanymi parametrami.
- Analiza zapytania: Model otrzymuje zapytanie użytkownika (np. "Jaka jest pogoda w Warszawie?").
- Generowanie wywołania funkcji: Jeśli model uzna, że zapytanie wymaga użycia narzędzia, generuje strukturę danych (zazwyczaj JSON) zawierającą nazwę funkcji do wywołania i argumenty wyodrębnione z zapytania (np.
{"function_name": "get_weather", "parameters": {"city": "Warsaw"}}). - Wykonanie zewnętrzne: Ta struktura jest zwracana do aplikacji, która następnie wykonuje rzeczywiste wywołanie API lub funkcji. Model sam w sobie nie ma zdolności do bezpośredniego uruchamiania kodu.
- Przetwarzanie wyniku: Wynik działania funkcji (np. aktualna pogoda) jest następnie przekazywany z powrotem do modelu, który wykorzystuje go do sformułowania ostatecznej odpowiedzi dla użytkownika.
Zastosowania:
- Agenci AI: Jest to fundamentalny mechanizm dla agentów AI, którzy muszą planować i wykonywać złożone zadania, korzystając z wielu narzędzi.
- Aktualne informacje: Dostęp do bieżących danych (np. pogoda, wiadomości, kursy walut).
- Interakcja z systemami: Wykonywanie akcji w zewnętrznych systemach (np. rezerwacja lotu, dodawanie wydarzeń do kalendarza).
Function calling różni się od generowania kodu, gdzie model tworzy fragmenty kodu programistycznego, które mogą być później wykonane, ale niekoniecznie w celu wywołania predefiniowanego narzędzia w odpowiedzi na intencję użytkownika.