DokumentationTools

Entwickeln

Tools

Beschreiben Sie dem Modell Ihre Funktionen. Es entscheidet, wann es eine aufruft, Ihr Code führt sie aus und gibt ihm das Ergebnis zurück.

Auf dieser Seite
  1. Der vollständige Ablauf
  2. Beispiel
  3. Gut zu wissen

Der vollständige Ablauf

  1. Sie beschreiben die Funktion

    Ihr Name, was sie tut, und ihre Parameter, als JSON Schema.

  2. Das Modell fordert den Aufruf an

    Statt eines Textes gibt es tool_calls mit den Argumenten zurück.

  3. Ihr Code führt sie aus

    Das Modell führt selbst nichts aus. Sie behalten die Kontrolle über das, was geschieht.

  4. Das Modell antwortet

    Mit dem Ergebnis, das Sie in einer tool-Nachricht zurückgeben, schreibt es seine Antwort.

Beispiel

Eine Funktion, die angibt, ob eine Rechnung bezahlt ist. Die gezeigte Antwort stammt vom ersten Aufruf, wenn das Modell die Funktion anfordert.

import json

tools = [
    {
        "type": "function",
        "function": {
            "name": "invoice_status",
            "description": "Payment status of an invoice.",
            "parameters": {
                "type": "object",
                "properties": {"number": {"type": "string"}},
                "required": ["number"],
            },
        },
    }
]
messages = [
    {
        "role": "user",
        "content": "Has invoice 2026-114 been paid?",
    }
]

first = client.chat.completions.create(
    model="flash", messages=messages, tools=tools
)
call = first.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)

# Run the function, then return its result with the call id.
result = {
    "number": args["number"],
    "status": "paid",
    "paid_on": "2026-10-02",
}
messages.append(first.choices[0].message)
messages.append(
    {
        "role": "tool",
        "tool_call_id": call.id,
        "content": json.dumps(result),
    }
)

final = client.chat.completions.create(
    model="flash", messages=messages, tools=tools
)
print(final.choices[0].message.content)
Antwort
{
  "role": "assistant",
  "content": null,
  "tool_calls": [
    {
      "id": "call_7f3a",
      "type": "function",
      "function": { "name": "invoice_status", "arguments": "{\"number\": \"2026-114\"}" }
    }
  ]
}

Gut zu wissen

  • Eine leere Tool-Liste wird zusammen mit tool_choice entfernt, als hätten Sie keine gesendet.
  • parallel_tool_calls erlaubt dem Modell, mehrere Funktionen gleichzeitig anzufordern.
  • Prüfen Sie die Argumente, bevor Sie handeln. Das Modell kann sich irren, Ihr Code entscheidet.