pro Model HubDocs
Funktionen

Tool-Calling

Das Modell Funktionen deiner Anwendung aufrufen lassen (Function Calling).

Beim Tool-Calling beschreibst du dem Modell Funktionen deiner Anwendung – z. B. „Wetter abfragen“ oder „Bestellung suchen“. Das Modell entscheidet, ob und mit welchen Argumenten es eine Funktion braucht, und antwortet dann mit einem strukturierten Aufruf statt mit Text. Ausführen musst du die Funktion selbst; das Ergebnis schickst du zurück, und das Modell formuliert daraus die Antwort.

Tool-Calling unterstützen:

Ablauf

import json

tools = [{
    "type": "function",
    "function": {
        "name": "get_order_status",
        "description": "Liefert den Status einer Bestellung anhand der Bestellnummer.",
        "parameters": {
            "type": "object",
            "properties": {"order_id": {"type": "string", "description": "Bestellnummer, z. B. A-1042"}},
            "required": ["order_id"],
        },
    },
}]

def get_order_status(order_id: str) -> dict:
    return {"order_id": order_id, "status": "versendet", "carrier": "DHL"}  # deine Logik

messages = [{"role": "user", "content": "Wo ist meine Bestellung A-1042?"}]
response = client.chat.completions.create(model="mistral-small-24b", messages=messages, tools=tools)
message = response.choices[0].message

# 1. Das Modell fordert Tool-Aufrufe an (finish_reason == "tool_calls")
while message.tool_calls:
    messages.append(message)  # Aufruf in den Verlauf übernehmen
    for call in message.tool_calls:
        args = json.loads(call.function.arguments)
        result = get_order_status(**args)
        # 2. Ergebnis mit der passenden tool_call_id zurückgeben
        messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
    # 3. Das Modell formuliert die Antwort (oder ruft weitere Tools auf)
    response = client.chat.completions.create(model="mistral-small-24b", messages=messages, tools=tools)
    message = response.choices[0].message

print(message.content)

Parameter

ParameterBeschreibung
toolsListe der Funktionen mit name, description und parameters (JSON Schema)
tool_choice"auto" (Standard): Modell entscheidet. "none": keine Tools. "required": mindestens ein Tool-Aufruf. {"type": "function", "function": {"name": "..."}}: genau diese Funktion

Das Modell kann mehrere Tools in einer Antwort aufrufen (z. B. das Wetter für zwei Städte). Führe dann alle aus und gib jedes Ergebnis als eigene tool-Nachricht zurück.

tool_choice: "required" und das Erzwingen einer bestimmten Funktion setzen nicht alle Modelle um. Wo es nicht funktioniert, steht es auf der Modellseite unter API-Hinweise. Mit "auto" und einer klaren Beschreibung der Funktion rufen alle Modelle zuverlässig Tools auf.

Tipps

  • Beschreibungen sind der Prompt: Das Modell entscheidet anhand von description der Funktion und der Parameter. Schreibe dort, wann die Funktion passt und in welchem Format die Werte sein müssen.
  • Argumente prüfen: arguments ist ein JSON-String, den das Modell erzeugt hat. Validiere ihn, bevor du damit etwas ausführst – besonders bei schreibenden Aktionen.
  • Wenige Tools: Jede Funktionsbeschreibung kostet bei jedem Request Input-Token. Gib nur die Tools mit, die im jeweiligen Schritt sinnvoll sind.
  • Fehler zurückgeben: Schlägt eine Funktion fehl, gib die Fehlermeldung als Ergebnis zurück. Das Modell kann dann nachfragen oder es anders versuchen.

Auf dieser Seite