inference.eu

Anleitungen · Tool calling

Tool Calling: offene Modelle rufen Ihre Funktionen auf

Mit Tool Calling, auch Function Calling genannt, bittet ein Modell Ihren Code um etwas, das es selbst nicht kann: eine Bestellung nachschlagen, eine Datenbank abfragen, eine E-Mail senden oder eine andere API aufrufen. Sie beschreiben die Werkzeuge, das Modell entscheidet, wann und mit welchen Argumenten es sie nutzt, und Ihr Code führt sie aus. Darauf basiert jeder Agent, im OpenAI- wie im Anthropic-Format.

  1. 01API-Format: OpenAI und Anthropic
  2. 02Rechenzentren in der EU
  3. 03Durch einen AV-Vertrag abgedeckt
tools.py
import json, os
from openai import OpenAI

client = OpenAI(base_url="https://api.inference.eu/v1", api_key=os.environ["INFERENCE_EU_API_KEY"])

def get_order_status(order_id: str) -> dict:
    return {"order_id": order_id, "status": "shipped", "carrier": "DHL", "eta": "2026-11-05"}

tools = [{
    "type": "function",
    "function": {
        "name": "get_order_status",
        "description": "Look up the shipping status of a customer order by its id.",
        "parameters": {
            "type": "object",
            "properties": {"order_id": {"type": "string", "description": "Order id, e.g. A-10293"}},
            "required": ["order_id"],
        },
    },
}]

messages = [{"role": "user", "content": "Where is my order A-10293?"}]
reply = client.chat.completions.create(model="gpt-oss-120b", messages=messages, tools=tools)
msg = reply.choices[0].message

if msg.tool_calls:
    messages.append(msg)
    for call in msg.tool_calls:
        result = get_order_status(**json.loads(call.function.arguments))
        messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
    reply = client.chat.completions.create(model="gpt-oss-120b", messages=messages, tools=tools)

print(reply.choices[0].message.content)

So funktioniert Tool Calling

Sie übergeben mit der Anfrage ein Array tools. Jedes Werkzeug hat type: "function" und ein Objekt function mit name, description und parameters als JSON Schema. Das Modell liest diese zusammen mit dem Gespräch. Hält es ein Werkzeug für nötig, antwortet es nicht mit Text, sondern liefert message.tool_calls mit id, Funktionsname und arguments als JSON-String; finish_reason ist dann tool_calls.

Das Modell führt selbst nichts aus. Ihr Code parst die Argumente, ruft die echte Funktion auf und sendet das Ergebnis als Nachricht mit role: "tool" und passender tool_call_id zurück. Danach antwortet das Modell oder fordert ein weiteres Werkzeug an.

Steuern, wann Werkzeuge genutzt werden

tool_choice steuert die Entscheidung. auto, der Standard, lässt das Modell zwischen Antwort und Werkzeug wählen. required erzwingt mindestens einen Aufruf, nützlich für Extraktionsschritte. none schaltet Werkzeuge für eine Runde ab, die Angabe einer bestimmten Funktion erzwingt genau diese. Mit parallel_tool_calls: false beschränken Sie das Modell auf einen Aufruf pro Runde, falls Ihre Werkzeuge nacheinander laufen müssen.

Gute Beschreibungen sind entscheidend. Erklären Sie, was das Werkzeug tut, wann es passt und was jeder Parameter bedeutet, mit einem Beispielwert. Halten Sie die Zahl der Werkzeuge pro Anfrage überschaubar: Wer zwischen wenigen klaren Werkzeugen wählt, irrt seltener als bei fünfzig.

Die Agenten-Schleife in der Praxis

Echte Aufgaben brauchen oft mehrere Runden: suchen, Details holen, handeln. Bauen Sie eine Schleife. Senden Sie die Anfrage; enthält die Antwort Tool Calls, führen Sie sie aus, hängen die Assistentennachricht und jedes Ergebnis an und senden erneut. Beenden Sie die Schleife, wenn das Modell mit Text antwortet oder eine selbst gewählte Höchstzahl an Runden erreicht ist.

Prüfen Sie Argumente, bevor Sie handeln, denn das Modell kann eine falsche ID oder ein fehlendes Feld liefern. Werkzeuge, die etwas verändern, etwa Zahlungen oder E-Mails, verdienen besondere Sorgfalt: Lassen Sie einen Menschen bestätigen oder beschränken Sie sie auf sichere Werte. Geben Sie Fehler als Ergebnis mit klarer Meldung zurück, damit das Modell sich korrigieren kann.

Formate, Modelle und Sonderfälle

Dieselben Werkzeuge funktionieren über die Responses API, in der Funktionsaufrufe und Ausgaben typisierte Elemente sind, und über das Anthropic-Messages-Format, in dem Werkzeuge input_schema nutzen und Aufrufe als tool_use-Blöcke kommen, die Sie mit tool_result beantworten. Wählen Sie das Format Ihres Frameworks.

Nicht jedes Modell beherrscht Werkzeuge gleich gut. Große instruktionsoptimierte Modelle wie gpt-oss-120b meistern mehrstufige Schleifen zuverlässig, kleine Modelle übersehen Aufrufe oder erfinden Argumente. Ist arguments kein gültiges JSON, senden Sie einen Fehler zurück und lassen das Modell es erneut versuchen, oder nutzen Sie strict-Schemas. Werkzeugdefinitionen zählen bei jeder Anfrage als Eingabe-Tokens.

Tool calling: häufige Fragen

Die Fragen, die uns Einkauf, Entwicklung und Rechtsabteilungen am häufigsten stellen. Etwas fehlt? Fragen Sie uns direkt.

Frage stellen

Verlagern Sie Ihre KI-Workloads auf europäische Infrastruktur

Sagen Sie uns, welche Modelle Sie nutzen und wie viel Verkehr Sie ungefähr haben. Wir antworten innerhalb eines Werktags mit Preisen und nächsten Schritten.

  • Antwort innerhalb eines Werktags
  • Preise für Ihr Volumen
  • AV-Vertrag unterschriftsreif