Zum Hauptinhalt springen
Lektion 10 von 14 · Function Calling mit Grok

Responses API und function_call_output

Lektion 10 von 14 Aktualisiert am 29. Juli 2026 Entwickler
Auf dieser Seite
  1. Die Responses API: Der neue Endpunkt
  2. Unterschiede zu Chat Completions
  3. Nutzung der Responses API mit dem OpenAI SDK
  4. Verarbeitung der Antwort
  5. Das Feld previous_response_id
  6. Serverseitige Speicherung von Nachrichten
  7. Wann sollte man die Responses API verwenden?
  8. Kernaussagen

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" ersetzt role: "tool"
  • call_id ersetzt tool_call_id
  • output ersetzt content

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_output anstelle der Rolle tool.
  • Die Felder ändern sich: call_id statt tool_call_id, output statt content.
  • previous_response_id ermöglicht die Verkettung von Gesprächen, ohne die Historie erneut zu senden.
  • store_messages=True ermö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.