Skip to Content
DokumentationAnleitungenFunction Calling

Function Calling

Function Calling ermöglicht es dem Modell, je nach Benutzeranfrage automatisch vordefinierte Werkzeugfunktionen auszuwählen und aufzurufen — für Datenabfragen, API-Aufrufe, Aufgabenausführung und mehr.

Grundkonzept

Der vollständige Ablauf eines Function Calls:

  1. Werkzeuge definieren — Beschreiben Sie in der Anfrage die verfügbaren Funktionen und Parameter
  2. Modellentscheidung — Das Modell entscheidet, ob ein Werkzeugaufruf nötig ist
  3. Aufruf zurückgeben — Das Modell liefert Funktionsname und Argumente
  4. Funktion ausführen — Sie führen die Funktion aus und erhalten das Ergebnis
  5. Dialog fortsetzen — Senden Sie das Ergebnis zurück an das Modell für die finale Antwort

OpenAI-Protokoll

function_calling.py
from openai import OpenAI import json client = OpenAI( base_url="https://api.ofox.ai/v1", api_key="<Ihr OFOXAI_API_KEY>" ) # 1. Werkzeuge definieren tools = [{ "type": "function", "function": { "name": "get_weather", "description": "Echtzeit-Wetterinformationen für eine bestimmte Stadt abrufen", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "Stadtname, z.B. Peking, Shanghai" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Temperatureinheit" } }, "required": ["city"] } } }] # 2. Anfrage senden messages = [{"role": "user", "content": "Wie ist das Wetter heute in Peking?"}] response = client.chat.completions.create( model="openai/gpt-4o", messages=messages, tools=tools, tool_choice="auto" ) message = response.choices[0].message # 3. Werkzeugaufruf verarbeiten if message.tool_calls: for tool_call in message.tool_calls: args = json.loads(tool_call.function.arguments) # 4. Eigene Funktion ausführen result = get_weather(args["city"]) # Ihre Implementierung # 5. Ergebnis an das Modell zurücksenden messages.append(message) messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": json.dumps(result) }) # Finale Antwort erhalten final = client.chat.completions.create( model="openai/gpt-4o", messages=messages, tools=tools ) print(final.choices[0].message.content)

Anthropic-Protokoll

Anthropic verwendet den tools-Parameter in einem leicht abweichenden Format:

anthropic_tools.py
import anthropic client = anthropic.Anthropic( base_url="https://api.ofox.ai/anthropic", api_key="<Ihr OFOXAI_API_KEY>" ) response = client.messages.create( model="anthropic/claude-sonnet-4.5", max_tokens=1024, tools=[{ "name": "get_weather", "description": "Echtzeit-Wetterinformationen für eine bestimmte Stadt abrufen", "input_schema": { "type": "object", "properties": { "city": {"type": "string", "description": "Stadtname"} }, "required": ["city"] } }], messages=[{"role": "user", "content": "Wie ist das Wetter heute in Peking?"}] ) # tool_use Content Block verarbeiten for block in response.content: if block.type == "tool_use": print(f"Werkzeugaufruf: {block.name}, Parameter: {block.input}")

Parallele Funktionsaufrufe

Das Modell kann in einer einzigen Antwort mehrere Werkzeugaufrufe zurückgeben, die parallel ausgeführt werden sollten:

# Das Modell kann mehrere Werkzeugaufrufe gleichzeitig anfordern if message.tool_calls: # Alle Werkzeugaufrufe parallel ausführen import asyncio async def execute_tools(tool_calls): tasks = [] for tc in tool_calls: args = json.loads(tc.function.arguments) tasks.append(execute_function(tc.function.name, args)) return await asyncio.gather(*tasks)

Parameter tool_choice

WertBeschreibung
"auto"Modell entscheidet automatisch, ob Werkzeuge aufgerufen werden (Standard)
"none"Werkzeugaufrufe deaktiviert
"required"Werkzeugaufruf erzwingen
{"type": "function", "function": {"name": "xxx"}}Aufruf eines bestimmten Werkzeugs erzwingen

Unterstützte Modelle

Folgende Modelle unterstützen Function Calling:

  • OpenAI: gpt-4o, gpt-4o-mini, o1, o3-mini
  • Anthropic: claude-opus-4, claude-sonnet-4, claude-3-5-haiku
  • Google: gemini-3.1-pro-preview, gemini-3-flash-preview, gemini-3-pro-preview
  • Weitere: deepseek-chat, qwen-max, glm-4
Last updated on