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:
- Werkzeuge definieren — Beschreiben Sie in der Anfrage die verfügbaren Funktionen und Parameter
- Modellentscheidung — Das Modell entscheidet, ob ein Werkzeugaufruf nötig ist
- Aufruf zurückgeben — Das Modell liefert Funktionsname und Argumente
- Funktion ausführen — Sie führen die Funktion aus und erhalten das Ergebnis
- Dialog fortsetzen — Senden Sie das Ergebnis zurück an das Modell für die finale Antwort
OpenAI-Protokoll
Python
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
| Wert | Beschreibung |
|---|---|
"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