Zum Inhalt springen

Tool Use & Function Calling

Wissen

Ein LLM allein kann nur Text erzeugen. Erst durch Tool Use wird es zum Agent: Es kann APIs abfragen, Datenbanken durchsuchen, Dateien lesen, Code ausführen und E-Mails versenden. Tools sind die Hände und Augen des Agents.

Was ist Function Calling?

Function Calling ist der Mechanismus, mit dem ein LLM strukturiert ein Tool aufruft. Statt freitext zu antworten, gibt das Modell einen JSON-Block zurück, der genau beschreibt, welches Tool mit welchen Parametern aufgerufen werden soll.

Der Ablauf

  1. Du gibst dem LLM eine Liste verfügbarer Tools (Name, Beschreibung, Parameter)
  2. Das LLM entscheidet, ob und welches Tool es aufrufen will
  3. Es gibt einen strukturierten Tool-Call zurück (JSON)
  4. Dein System führt den Call aus und gibt das Ergebnis zurück
  5. Das LLM verarbeitet das Ergebnis und antwortet oder ruft ein weiteres Tool auf

Tool-Definition

So sieht eine typische Tool-Definition aus:

{
  "name": "search_database",
  "description": "Durchsucht die Produktdatenbank nach Artikeln",
  "parameters": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "Suchbegriff"
      },
      "category": {
        "type": "string",
        "enum": ["elektronik", "kleidung", "buecher"],
        "description": "Produktkategorie (optional)"
      },
      "max_results": {
        "type": "integer",
        "description": "Maximale Anzahl Ergebnisse",
        "default": 10
      }
    },
    "required": ["query"]
  }
}

Tool-Call durch das LLM

Wenn das LLM entscheidet, das Tool zu nutzen, antwortet es so:

{
  "tool_calls": [{
    "name": "search_database",
    "arguments": {
      "query": "USB-C Kabel",
      "category": "elektronik",
      "max_results": 5
    }
  }]
}

iWichtig

Das LLM führt den Tool-Call nicht selbst aus! Es generiert nur die Absicht. Dein Code (der "Orchestrator") führt den tatsächlichen API-Call durch und gibt das Ergebnis an das LLM zurück.

Typische Tool-Kategorien

Informationsbeschaffung:

  • Web Search -- Aktuelle Informationen aus dem Internet
  • Database Query -- Strukturierte Daten aus Datenbanken
  • File Read -- Dokumente und Dateien lesen
  • API Calls -- Externe Services abfragen (Wetter, Börse, CRM)

Aktionen ausführen:

  • File Write -- Dateien erstellen oder ändern
  • Email Send -- Nachrichten versenden
  • Code Execute -- Python, JavaScript etc. ausführen
  • Database Write -- Daten speichern oder aktualisieren

Analyse und Verarbeitung:

  • Calculator -- Mathematische Berechnungen
  • Image Analysis -- Bilder beschreiben oder analysieren
  • Data Transform -- Daten konvertieren (CSV zu JSON, etc.)

Was passiert technisch, wenn ein LLM ein Tool 'aufruft'?

Verstehen

Best Practices für Tool-Design

1. Klare Beschreibungen

Das LLM entscheidet anhand der Tool-Beschreibung, ob es ein Tool nutzen soll. Eine vage Beschreibung führt zu falschen oder ausbleibenden Tool-Calls.

// Schlecht
{ "name": "do_stuff", "description": "Macht Sachen" }

// Gut
{
  "name": "get_customer_orders",
  "description": "Ruft alle Bestellungen eines Kunden der letzten 30 Tage ab. Gibt Bestellnummer, Datum, Status und Gesamtbetrag zurück."
}

2. Wenige, fokussierte Tools

Gib dem Agent nicht 50 Tools auf einmal. Je mehr Tools verfügbar sind, desto häufiger wählt das LLM das falsche. 5-10 gut beschriebene Tools sind besser als 50 vage.

3. Sinnvolle Defaults

Mach Parameter optional, wo es sinnvoll ist. Das LLM muss nicht jeden Parameter explizit setzen, wenn ein guter Default existiert.

Multi-Tool-Orchestrierung

In der Praxis nutzen Agents oft mehrere Tools in Kombination. Ein Support-Agent könnte zum Beispiel:

  1. get_customer_info(email) -- Kundendaten laden
  2. search_orders(customer_id) -- Bestellungen suchen
  3. check_return_policy(order_id) -- Rückgaberichtlinie prüfen
  4. create_return_ticket(order_id, reason) -- Rückgabe einleiten

Das LLM entscheidet bei jedem Schritt, welches Tool als nächstes sinnvoll ist -- basierend auf den Ergebnissen der vorherigen Tools.

*Parallele Tool-Calls

Moderne APIs wie Claude und GPT unterstützen parallele Tool-Calls. Wenn der Agent erkennt, dass zwei Abfragen unabhängig sind, kann er beide gleichzeitig starten. Das spart Zeit und Kosten.

Warum sollte man einem Agent nicht 50 Tools gleichzeitig zur Verfügung stellen?

Anwenden

Aufgabe

Finde den aktuellen Bitcoin-Preis

Drücke Starten oder Space um den Agent-Loop zu starten.

Vervollständige die Tool-Definition für eine Wetter-API:

{ "name": "get_weather", "description": "Gibt das aktuelle Wetter für eine Stadt zurück", "parameters": { "type": "object", "properties": { "city": { "type": "", "description": "Name der Stadt" } }, "required": ["city"] } }

Reflektieren

Tool Use macht LLMs von Texterzeugern zu Handelnden. Die Qualität hängt von präzisen Tool-Beschreibungen und einer begrenzten Auswahl ab -- 5 bis 10 fokussierte Tools führen zu besseren Ergebnissen als eine überladene Toolbox. Weniger ist hier tatsächlich mehr.