Responses API und function_call_output
Auf dieser Seite
Die Responses API: Der neue Endpunkt
Die Responses API ist der neue primäre Endpunkt von xAI und unterscheidet sich vom OpenAI-kompatiblen Chat-Completions-Endpunkt. Sie führt ein anderes Format für Funktionsaufrufe ein und nutzt den Typ function_call_output, um Ergebnisse von Tools zurückzugeben.
Unterschiede zu Chat Completions
Der Chat-Completions-Endpunkt (OpenAI-kompatibel) verwendet Nachrichten mit der Rolle tool, um Ergebnisse zurückzugeben. Die Responses API nutzt ein anderes Format, das um Event-Typen herum strukturiert ist.
Chat Completions (veraltetes Format)
# Das Ergebnis wird über eine Nachricht mit der Rolle "tool" zurückgegeben
messages.append({
"role": "tool",
"tool_call_id": "call_abc123",
"content": {temp: 22, city: Paris}
})
Responses API (neues Format)
# Das Ergebnis wird über ein function_call_output-Objekt zurückgegeben
{
"type": "function_call_output",
"call_id": "call_abc123",
"output": {temp: 22, city: Paris}
}
Die wesentlichen Unterschiede sind:
type: "function_call_output"ersetztrole: "tool"call_idersetzttool_call_idoutputersetztcontent
Nutzung der Responses API mit dem OpenAI SDK
Sie können den OpenAI SDK verwenden, um die Responses API von xAI aufzurufen:
from openai import OpenAI
client = OpenAI(
api_key="votre-cle-api",
base_url="https://api.x.ai/v1"
)
# Eine Antwort mit Tools erstellen
response = client.responses.create(
model="grok-4.5",
input="Wie ist das Wetter in Paris?",
tools=[{
"type": "function",
"name": "get_weather",
"description": "Holt das Wetter für eine Stadt",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}]
)
Beachten Sie, dass die Responses API input anstelle von messages verwendet und die Struktur der Tools leicht abweicht (kein verschachteltes function-Objekt).
Verarbeitung der Antwort
Die Antwort der Responses API enthält ein output-Array mit Events:
for item in response.output:
if item.type == "function_call":
print(f"Funktion: {item.name}")
print(f"Argumente: {item.arguments}")
print(f"Aufrufs-ID: {item.call_id}")
# Die Funktion ausführen
result = get_weather(city="Paris")
# Das Gespräch mit dem Ergebnis fortsetzen
follow_up = client.responses.create(
model="grok-4.5",
input=[
{"type": "function_call_output",
"call_id": item.call_id,
"output": json.dumps(result)}
],
tools=tools,
previous_response_id=response.id
)
Das Feld previous_response_id
Die Responses API führt einen Mechanismus zur Verkettung von Gesprächen über previous_response_id ein. Anstatt die gesamte Nachrichtenverlaufsgeschichte erneut zu senden, verweisen Sie einfach auf die vorherige Antwort:
# Erster Aufruf
response1 = client.responses.create(
model="grok-4.5",
input="Schauen Sie nach dem Wetter in Paris"
)
# Zweiter Aufruf (verkettet)
response2 = client.responses.create(
model="grok-4.5",
input=[{
"type": "function_call_output",
"call_id": response1.output[0].call_id,
"output": {temp: 22}
}],
previous_response_id=response1.id
)
Dies vereinfacht das Kontextmanagement und reduziert die Größe der Anfragen.
Serverseitige Speicherung von Nachrichten
Mit store_messages=True speichert xAI die Nachrichten auf ihren Servern:
response = client.responses.create(
model="grok-4.5",
input="Frage des Benutzers",
tools=tools,
store_messages=True
)
In Kombination mit previous_response_id ermöglicht dies die Aufrechterhaltung langer Gespräche, ohne die vollständige Historie bei jeder Anfrage erneut zu senden.
Wann sollte man die Responses API verwenden?
Für ein neues Projekt, das speziell auf xAI basiert, ist die Responses API die erste Wahl aus mehreren sich verstärkenden Gründen. Innovationen erscheinen hier zuerst – neue Funktionen werden der Responses API hinzugefügt, bevor sie an anderer Stelle verfügbar sind, manchmal ausschließlich. Bestimmte integrierte Server-Tools sind nur über diesen Kanal verfügbar. Und für lange Gespräche ist die Verkettung über previous_response_id strukturell effizienter als das erneute Senden der gesamten Historie bei jedem Turn: weniger übertragene Tokens und weniger Code für das Zustandmanagement auf Ihrer Seite.
Chat Completions behält zwei starke Anwendungsfälle bei: bestehender Code, der für die OpenAI API geschrieben wurde (der funktioniert, indem man einfach die Basis-URL ändert), und Projekte mit mehreren Anbietern, bei denen Portabilität Vorrang hat – in diesen Situationen wiegt die Kompatibilität schwerer als exklusive Funktionen.
Kernaussagen
- Die Responses API verwendet
function_call_outputanstelle der Rolletool. - Die Felder ändern sich:
call_idstatttool_call_id,outputstattcontent. previous_response_idermöglicht die Verkettung von Gesprächen, ohne die Historie erneut zu senden.store_messages=Trueermöglicht die serverseitige Speicherung.- Die Responses API ist der empfohlene Endpunkt für neue xAI-Projekte.
- Chat Completions bleibt für die Rückwärtskompatibilität mit OpenAI verfügbar.