🎯 Definicja
Function Calling (Tool Use) to mechanizm, w którym model językowy zamiast generować tekst bezpośrednio, decyduje o wywołaniu zewnętrznej funkcji lub API — zwraca ustrukturyzowany JSON z nazwą funkcji i parametrami, które aplikacja następnie wykonuje.
🔑 Kluczowe punkty
- Model nie wykonuje funkcji — tylko decyduje kiedy i z jakimi argumentami ją wywołać
- Odpowiedź modelu to JSON, nie tekst narracyjny
- Fundament architektury agentów AI
- Natywnie wspierane przez: GPT-4, Claude 3+, Gemini, Llama 3.1+
- Pozwala LLM na: czytanie danych, zapis, wywoływanie API, uruchamianie kodu
📚 Szczegółowe wyjaśnienie
Przepływ
1. Użytkownik: "Jaka jest jakość tabeli customers?"
2. Aplikacja wysyła: prompt + definicje narzędzi (JSON Schema)
3. LLM odpowiada: {"tool": "get_data_quality", "args": {"table": "customers"}}
4. Aplikacja wykonuje funkcję, dostaje wynik
5. Wynik trafia z powrotem do LLM jako kolejna wiadomość
6. LLM generuje ostateczną odpowiedź użytkownikowi
Definicja narzędzia (JSON Schema)
tools = [
{
"type": "function",
"function": {
"name": "get_data_quality_score",
"description": "Pobiera wynik jakości danych dla wskazanej tabeli z Ataccama ONE",
"parameters": {
"type": "object",
"properties": {
"table_name": {
"type": "string",
"description": "Nazwa tabeli w formacie schema.table"
},
"metric": {
"type": "string",
"enum": ["completeness", "accuracy", "consistency"],
"description": "Metryka jakości do sprawdzenia"
}
},
"required": ["table_name"]
}
}
}
]Parallel Tool Calls
Modele mogą wywołać wiele funkcji jednocześnie:
Model: [call get_schema("customers"), call get_dq_score("customers")]
→ oba wywołania wykonują się równolegle
→ wyniki trafiają do modelu w jednym batchu
💡 Przykład zastosowania
Chatbot do Ataccama: użytkownik pyta “pokaż mi reguły DQ dla tabeli orders”. Model wywołuje get_dq_rules(table="orders") → aplikacja odpytuje Ataccama API → wyniki wracają do modelu → model prezentuje je w czytelnej formie. Bez Function Calling model mógłby tylko halucynować o regułach.