KI-Agenten und Function Calling: Tools für LLMs entwickeln

AI2026-09-25TryQuickToolBox

Sie bauen einen KI-Agenten, der Echtzeitdaten abrufen, Berechnungen durchführen oder mit externen APIs interagieren muss. Aber wie überbrücken Sie die Lücke zwischen der Textgenerierung des LLM und der tatsächlichen Codeausführung? Function Calling (auch bekannt als Tool-Nutzung) ist die Antwort. Es ermöglicht LLMs, bestimmte Aktionen anzufordern, und Ihr Code führt sie aus. Dieser Leitfaden führt Sie durch die Gestaltung, Implementierung und Fehlerbehebung von Function Calling für KI-Agenten.

Was ist Function Calling?

Function Calling ist ein Mechanismus, bei dem ein LLM eine strukturierte Anfrage zum Aufruf einer von Ihnen definierten Funktion ausgeben kann. Anstatt freien Text zu generieren, gibt das Modell ein JSON-Objekt mit dem Funktionsnamen und den Argumenten zurück. Ihre Anwendung führt dann die Funktion aus und speist das Ergebnis zurück in das Modell. Dies ermöglicht es Agenten, Aktionen jenseits der Textgenerierung auszuführen, wie das Abfragen von Datenbanken, das Senden von E-Mails oder das Aufrufen von APIs.

Große LLM-Anbieter wie OpenAI, Anthropic und Google unterstützen Function Calling. Die Kernidee ist konsistent: Sie beschreiben verfügbare Tools, das Modell entscheidet, wann es sie verwendet, und Sie übernehmen die Ausführung.

Tools für LLMs entwerfen

Gut gestaltete Tools sind entscheidend für zuverlässiges Agentenverhalten. Befolgen Sie diese Prinzipien:

Beispiel: Wetter-Tool

Hier ist eine einfache Tool-Definition im JSON-Schema-Format, das häufig mit der OpenAI-API verwendet wird:

{
  "name": "get_weather",
  "description": "Get the current weather for a given city",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {
        "type": "string",
        "description": "The city name, e.g., San Francisco"
      },
      "unit": {
        "type": "string",
        "enum": ["celsius", "fahrenheit"],
        "description": "Temperature unit"
      }
    },
    "required": ["city"]
  }
}

Function Calling implementieren: Schritt für Schritt

Lassen Sie uns eine minimale Agentenschleife mit der OpenAI-API erstellen (das Muster gilt auch für andere Anbieter).

1. Definieren Sie Ihre Tools

Erstellen Sie eine Liste von Tool-Schemata und eine Zuordnung von Funktionsnamen zu tatsächlichen Python-Funktionen.

import json
import openai

# Tool schemas
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather for a city",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                },
                "required": ["city"]
            }
        }
    }
]

# Actual functions
def get_weather(city: str, unit: str = "celsius") -> dict:
    # In reality, call a weather API
    return {"city": city, "temperature": 22, "unit": unit, "condition": "sunny"}

# Map names to functions
function_map = {
    "get_weather": get_weather
}

2. Erstellen Sie die Agentenschleife

Die Agentenschleife sendet Nachrichten an das LLM, prüft auf Tool-Aufrufe, führt sie aus und wiederholt dies, bis das Modell eine endgültige Antwort zurückgibt.

def run_agent(user_message: str):
    messages = [{"role": "user", "content": user_message}]
    
    while True:
        response = openai.ChatCompletion.create(
            model="gpt-4",
            messages=messages,
            tools=tools,
            tool_choice="auto"
        )
        
        message = response.choices[0].message
        messages.append(message)
        
        # If no tool calls, return the content
        if not message.get("tool_calls"):
            return message["content"]
        
        # Execute each tool call
        for tool_call in message.tool_calls:
            function_name = tool_call.function.name
            arguments = json.loads(tool_call.function.arguments)
            
            if function_name in function_map:
                result = function_map[function_name](**arguments)
            else:
                result = {"error": f"Unknown function: {function_name}"}
            
            # Append tool result to messages
            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": json.dumps(result)
            })

Diese Schleife läuft weiter, bis das LLM eine Antwort ohne Tool-Aufrufe produziert, was anzeigt, dass es genügend Informationen hat.

3. Fehler und Randfälle behandeln

Realitätsnahe Agenten müssen Folgendes bewältigen:

Best Practices für zuverlässige Agenten

Vergleich der Function-Calling-Unterstützung

Anbieter Feature-Name Format
OpenAI Function Calling JSON Schema
Anthropic Tool Use JSON Schema
Google Function Calling OpenAPI Schema

Fortgeschrittene Muster

Wenn Ihr Agent wächst, sollten Sie diese Muster in Betracht ziehen:

Debugging von Function Calling

Wenn etwas schiefgeht, prüfen Sie:

Verwenden Sie Logging, um den vollständigen Nachrichtenverlauf und Tool-Aufrufe zu erfassen. Oft liegt das Problem in einer Diskrepanz zwischen erwarteten und tatsächlichen Argumenten.

FAQ

Was ist der Unterschied zwischen Function Calling und Tool-Nutzung?

Sie beziehen sich auf dasselbe Konzept. OpenAI nennt es "Function Calling", während Anthropic "Tool Use" verwendet. Beide ermöglichen es LLMs, die Ausführung externer Funktionen anzufordern.

Kann ich Function Calling mit Open-Source-Modellen verwenden?

Ja, einige Open-Source-Modelle wie Llama 3.1 unterstützen Function Calling, und Frameworks wie LangChain bieten Abstraktionen. Die Unterstützung variiert jedoch, und Sie müssen möglicherweise feinabstimmen oder bestimmte Prompt-Formate verwenden.

Wie verhindere ich, dass das LLM gefährliche Funktionen aufruft?

Setzen Sie gefährliche Funktionen niemals direkt aus. Verwenden Sie Allowlists, validieren Sie Eingaben und implementieren Sie Berechtigungsprüfungen. Für sensible Vorgänge ist eine menschliche Bestätigung vor der Ausführung erforderlich.

Bereit, Ihren eigenen KI-Agenten zu bauen? Beginnen Sie mit der Definition eines einfachen Tools und testen Sie die Agentenschleife. Weitere Entwicklertools finden Sie in unserem JSON Formatter, um Tool-Aufruf-Payloads zu debuggen.