Funktionsaufruf (Function Calling / Tool Calling)
Technisches Protokoll und Standard für die Interaktion von LLMs mit externer Software. Anstelle von Freitext gibt das Modell ein valides JSON-Objekt zurück, das den Funktionsnamen und typisierte Argumente gemäß dem JSON-Schema enthält. Dies ermöglicht es dem Backend, Aktionen in echten APIs deterministisch auszuführen.
1. Konzeptüberblick und das systemische Problem
Ein Sprachmodell ist in seinen eigenen Kontext eingeschlossen: Es kennt weder die aktuelle exakte Uhrzeit noch kann es Geld von einem Konto abbuchen oder den Status eines Containers in Docker überprüfen.
Ohne einen Mechanismus zur Interaktion mit Code konnte ein Chatbot Aktionen nur simulieren, indem er vagen Text zurückgab: „Ich habe Ihr Guthaben überprüft, es beträgt $50“ (selbst wenn das Guthaben $0 betrug).
Function Calling (Funktionsaufruf oder Tool Calling) verwandelt einen Textgenerator in einen System-Orchestrator. Das Modell analysiert den Prompt, erkennt, dass ihm Daten fehlen, und generiert anstelle von Text maschinenlesbares JSON:
{
"name": "fetch_user_balance",
"arguments": "{\"account_id\": \"ACC-9481\"}"
}
Mentales Modell: Wenn die LLM das Gehirn ist, dann sind Function Calls die Nervenimpulse, die Befehle an die Muskeln (Ihren Code und Ihre APIs) senden, um physische Aktionen auszuführen.
┌─────────────────────────────────────────────────────────────┐
│ АРХІТЕКТУРА FUNCTION CALLING │
├─────────────────────────────────────────────────────────────┤
│ 1. ЗАПИТ КОРИСТУВАЧА: │
│ «Яка погода у Львові?» │
├─────────────────────────────────────────────────────────────┤
│ │ │
│ ▼ Запит до LLM (разом зі схемою) │
├─────────────────────────────────────────────────────────────┤
│ 2. ВІДПОВІДЬ LLM (finish_reason: "tool_calls"): │
│ { "name": "get_weather", "args": { "city": "Lviv" } } │
├─────────────────────────────────────────────────────────────┤
│ │ │
│ ▼ Бекенд виконує реальний API-запит│
├─────────────────────────────────────────────────────────────┤
│ 3. ВАШ СЕРВЕР ➔ OpenWeatherMap ➔ Отримує { temp: 18, rain: 0}│
├─────────────────────────────────────────────────────────────┤
│ │ │
│ ▼ Відправка результату назад у LLM │
├─────────────────────────────────────────────────────────────┤
│ 4. ФІНАЛЬНА ВІДПОВІДЬ ЛЮДИНІ: │
│ «У Львові зараз +18°C, без опадів, гарного дня!» │
└─────────────────────────────────────────────────────────────┘
2. Praxisbeispiel: Schema-Beschreibung und Aufruf via cURL
So sieht die Registrierung eines Tools im OpenAI / Anthropic Tool Calling Standard aus:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "Заблокуй картку користувача 5501"}
],
"tools": [
{
"type": "function",
"function": {
"name": "block_payment_card",
"description": "Безпечне блокування банківської картки користувача у разі втрати",
"parameters": {
"type": "object",
"properties": {
"card_id": {
"type": "integer",
"description": "Унікальний ідентифікатор картки в системі"
},
"reason": {
"type": "string",
"enum": ["lost", "stolen", "fraud"],
"description": "Причина блокування"
}
},
"required": ["card_id", "reason"]
}
}
}
],
"tool_choice": "auto"
}'
Was das Modell zurückgibt:
{
"role": "assistant",
"content": null,
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "block_payment_card",
"arguments": "{\"card_id\": 5501, \"reason\": \"lost\"}"
}
}
]
}
3. Vier Sicherheitsregeln für die Arbeit mit Function Calling
- Strenge Argumentvalidierung (Pydantic / Zod): Vertrauen Sie niemals blind den Argumenten aus dem JSON des Modells. Parsen Sie diese immer über ein Validierungsschema, bevor Sie eine SQL-Abfrage ausführen oder Geld abbuchen.
- Kontrollschleuse für destruktive Aktionen (Human-in-the-Loop): Wenn eine Funktion eine irreversible Operation durchführt (
delete_database,transfer_funds), muss der Backend-Prozess angehalten werden und eine Bestätigung durch einen menschlichen Nutzer verlangen. - Begrenzung des Tool-Kontexts: Übergeben Sie dem Modell nicht hunderte Funktionen gleichzeitig. Dies verwässert die Aufmerksamkeit (Attention Saturation) und erhöht die Wahrscheinlichkeit fehlerhafter Aufrufe. Nutzen Sie dynamische Filterung oder MCP.
- Schutz vor Endlosschleifen (Infinite Tool Loop): Setzen Sie stets ein hartes Limit für die Anzahl sequenzieller Funktionsaufrufe (z. B. maximal 5 Iterationen pro Anfrage).
4. Zusammenfassung
Function Calling ist die Brücke, die die Welt der statistischen Sprachmodellierung mit der deterministischen Welt der Programmierung verbindet. Genau dieser Mechanismus bildet das Kernstück aller modernen AI-Agenten, MCP-Server und autonomen Entwickler-Assistenten.
FAQ: Funktionsaufruf (Function Calling / Tool Calling)
Verwandte Begriffe
Tool-Schemas (Tools & JSON Schema)
Standardisierter formaler Beschreibungsschnittstelle für Tools großer Sprachmodelle unter Verwendung des JSON-Schema-Standards. Enthält den Funktionsnamen, eine detaillierte textuelle Beschreibung ihres Zwecks, eine Liste der erforderlichen Parameter sowie die Wertetypen.
KI-Agenten (Autonome Agenten)
Ein autonomes System auf Basis eines großen Sprachmodells, das nicht nur auf Nachrichten antwortet, sondern eigenständig eine Abfolge von Aktionen plant, externe Tools (Browser, Terminal, Datenbanken) nutzt und komplexe Aufgaben ohne ständige menschliche Aufsicht ausführt.
Agenten-Handlungszyklus (Thought ➔ Action ➔ Observation / ReAct)
Fundamentales algorithmisches Muster für autonome Agenten (bekannt als ReAct: Reasoning + Acting). Es besteht aus einem iterativen Zyklus mit drei Schritten: 1) Thought – Analyse der Situation; 2) Action – Aufruf eines Tools; 3) Observation – Analyse des Ergebnisses und Anpassung des Plans.
MCP (Model Context Protocol)
Ein offener Standard von Anthropic auf Basis von JSON-RPC 2.0 für die einheitliche bidirektionale Anbindung von KI-Assistenten an externe Tools, Datenbanken und Systemumgebungen.