Zurück zur Bibliothek
Architektur

Stateful Agents mit der OpenAI Responses API bauen: Ein praktischer Leitfaden

Zuletzt aktualisiert: 2026年9月5日

Kernpunkte

  • Die Responses API ist OpenAIs empfohlenes API-Primitiv für alle neuen Projekte, und die Assistants API wurde am 26. August 2026 eingestellt — das Migrationsfenster ist geschlossen; Chat Completions bleibt unterstützt, aber dort landen neue agentische Fähigkeiten nicht zuerst.
  • Interne OpenAI-Evaluationen zeigen eine 3% Verbesserung auf SWE-bench und 40–80% bessere Cache-Nutzung gegenüber Chat Completions bei Verwendung von Reasoning-Modellen wie GPT-6 Astra über die Responses API — die agentische Schleife ist nicht nur Komfort, sie verbessert messbar die Ausgabequalität.
  • Remote-MCP-Server sind ein First-Class-Tool-Typ in der Responses API — Sie verbinden beliebige MCP-Server mit einer server_url und einem server_label, und das Modell entdeckt und ruft dessen Tools innerhalb derselben Anfrage auf, ohne benutzerdefinierte Orchestrierung.
  • GPT-6 Astras Fehlausrichtungs-Monitor stoppt API-Tasks direkt, wenn er unbefugtes Verhalten erkennt — es gibt keinen Fortsetzungspfad; der Workflow muss aus dauerhaftem Zustand wiederherstellbar sein, was die wichtigste architektonische Einschränkung für die Produktionsübernahme ist.
  • Der zustandsbehaftete Modus ist etwa 2x langsamer als zustandslose Chat Completions laut mehreren Entwicklerberichten — die Bequemlichkeit von previous_response_id bringt einen Latenzpreis mit sich, der bei latenzkritischen nutzerseitigen Flüssen wichtig ist.

Die OpenAI Responses API ist das vom Unternehmen empfohlene API-Primitiv für alle Neuentwicklungen, und die Assistants API wurde am 26. August 2026 offiziell eingestellt. Chat Completions bleibt unterstützt, aber die Responses API ist, wo neue agentische Fähigkeiten — eingebaute Tools, zustandsbehaftete Konversationen, Remote-MCP, Hintergrundmodus, Mid-Turn-Steuerung — zuerst landen. Für ein Team, das Produktionsagenten auf GPT-6 Astra baut, ist die Frage nicht mehr, ob migriert wird, sondern wie die Architektur um das Zustandsmodell der API, ihre Latenzeigenschaften und die Governance-Einschränkungen herum gestaltet wird, die Astras Runtime-Monitor auferlegt. Dieser Leitfaden kartografiert die fünf Fähigkeiten, die zählen, die drei Entscheidungen, die die Übernahme bestimmen, und das architektonische Muster, das Ihren Agenten über Anbieter hinweg portabel hält.

Was die Responses API verändert

Die Chat Completions API ist zustandslos: Sie senden die gesamte Konversationshistorie mit jeder Anfrage, und die API gibt eine einzelne Nachricht zurück. Die Responses API führt drei strukturelle Änderungen ein, die beeinflussen, wie Sie Agenten bauen.

Items statt Nachrichten. Chat Completions gibt ein choices-Array zurück, das jeweils eine message enthält. Die Responses API gibt ein output-Item-Array zurück, wobei jedes Item eine typisierte Union ist — eine message, ein function_call, ein function_call_output, eine Reasoning-Zusammenfassung oder ein Tool-Aufruf. Das ist nicht kosmetisch: Es bedeutet, dass Tool-Aufrufe, Reasoning und Text First-Class-Objekte in der Antwort sind, keine an eine Nachricht angeklebten Felder. Wenn Sie Antworten mit previous_response_id verketten, bewahrt die API alle Item-Typen — einschließlich verschlüsseltem Reasoning — über Züge hinweg auf, was Multi-Turn-agentische Workflows ohne manuelles Context-Replay funktionieren lässt.

Eine agentische Schleife in einer Anfrage. Die Responses API ist als agentische Schleife konzipiert: Das Modell kann mehrere Tools — web_search, file_search, computer_use, code_interpreter, image_generation, Remote-MCP-Server und benutzerdefinierte Funktionen — innerhalb eines einzigen API-Aufrufs aufrufen und iterieren, bis es eine Stoppbedingung erreicht. Mit Chat Completions implementieren Sie diese Schleife selbst: Modell aufrufen, Tool-Aufruf parsen, ausführen, Ergebnis anhängen, erneut aufrufen. Die Responses API führt die Schleife serverseitig aus. OpenAIs interne Evaluationen zeigen eine 3% Verbesserung auf SWE-bench bei gleichem Prompt und Setup bei Verwendung von Reasoning-Modellen über die Responses API, plus 40–80% bessere Cache-Nutzung — die serverseitige Schleife profitiert von Cache-Treffern, die eine manuelle Schleife nicht replizieren kann.

Zustandsbehafteter Kontext via previous_response_id. Statt die gesamte Historie mit jeder Anfrage zu senden, übergeben Sie die ID der vorherigen Antwort und die neue Nutzereingabe. Die API rekonstruiert den Kontext serverseitig, einschließlich Reasoning-Items. Antworten werden standardmäßig 30 Tage gespeichert; jede an eine Konversation angehängte Antwort persistiert ihre Items ohne TTL. Sie können die Speicherung mit store: false für Zero-Data-Retention-Workflows deaktivieren, müssen dann aber die gesamte Item-Historie manuell replayen — einschließlich verschlüsselter Reasoning-Items — um den Reasoning-Kontext über Züge hinweg zu bewahren.

Die fünf Fähigkeiten, die zählen

Die Fähigkeiten der Responses API mappen auf fünf architektonische Entscheidungen, jede mit einem konkreten Trade-off:

OpenAI Responses API: Fünf Fähigkeiten, Drei Entscheidungen Stateful Agents, eingebaute Tools und Remote-MCP — mit einem Task-Stop-Monitor, der Ihre Architektur verändert FÜNF FÄHIGKEITEN 1 Stateful Chaining previous_response_id bewahrt Reasoning über Züge. ~2x Latenz. 2 Remote-MCP-Server Per URL registrieren. Modell entdeckt und ruft Tools in der agentischen Schleife. 3 Hintergrundmodus Asynchrone Ausführung für lange Tasks. Keine Job-Queue — Sie besitzen den Zustand. 4 Verschlüsseltes Reasoning store: false + Item-Replay für Zero-Data-Retention-Workflows. 5 Astra Task-Stop-Monitor Stoppt API-Tasks direkt. Keine Fortsetzung. Dauerhafter Zustand obligatorisch. treibt DREI ENTSCHEIDUNGEN Stateful oder stateless? store: true + previous_response_id für Konversationen. store: false + manuelles Replay für ZDR. ~2x Latenzpreis auf stateful-Pfad Eingebaute Tools oder custom? web_search, code_interpreter für anbieter-gehostet. Remote-MCP für Ihre Systemintegrationen. MCP-Modul = semantische Schicht Nur OpenAI oder flexibel? Responses API = OpenAI-Primitiv. Andere Anbieter sprechen Chat Completions. Abstrahieren oder binden. 29% Volumen auf Open-Weight, 4% Ausgaben formt PRODUKTIONSARCHITEKTUR • Responses API = ein Backend • MCP-Module = Integrationsschicht • Ihr Runtime = Routing + Zustand • Dauerhafter Store = Wiederherstellung • Open-Weight-Fallback = Kosten Modellflexibel. Dauerhaft. Portabel. KENNZAHLEN 3% SWE-bench Verbesserung vs Chat Completions 40-80% bessere Cache-Nutzung in internen Tests 2x Latenzpreis auf stateful-Pfad (Entwicklerberichte) $10/$50 GPT-6 Astra pro M Tokens Eingabe / Ausgabe Assistants API eingestellt 26. Aug. 2026 Quellen: OpenAI developer docs, OpenAI community forum, OpenAI safety overview, Reuters. IdeaBosque Library. ideabosque.com/library

1. previous_response_id: zustandsbehaftete Verkettung

Das einfachste zustandsbehaftete Muster verkettet Antworten per ID:

from openai import OpenAI
client = OpenAI()

first = client.responses.create(
    model="gpt-6-astra",
    input="What is the capital of France?",
    store=True,
)

second = client.responses.create(
    model="gpt-6-astra",
    previous_response_id=first.id,
    input="And its population?",
    store=True,
)

Der zweite Aufruf sendet die erste Frage oder Antwort nicht erneut. Die API rekonstruiert den vollständigen Kontext aus der gespeicherten Antwort, einschließlich jeglichen Reasonings, das das Modell durchgeführt hat. Dies ist das Muster für konversationelle Agenten, Forschungsassistenten und jeden Workflow, bei dem die Nachfrage des Benutzers von vorherigen Zügen abhängt.

Der Trade-off ist Latenz. Mehrere Entwicklerberichte im OpenAI-Community-Forum und Microsoft Q&A zeigen, dass der zustandsbehaftete Pfad etwa 2x langsamer ist als zustandslose Chat Completions — 1 Sekunde gegenüber 0,5 Sekunden in typischen Fällen, und bis zu 9x langsamer (2,9 Sekunden gegenüber 0,3 Sekunden) unter Last. Für einen Hintergrund-Recherche-Agenten, der Minuten läuft, ist das irrelevant. Für einen nutzerseitigen Chat, der in unter 500 ms antworten muss, kann der Latenzpreis rechtfertigen, bei Chat Completions mit manuellem Kontextmanagement zu bleiben.

2. Remote-MCP-Server als eingebautes Tool

Die Responses API unterstützt Remote-MCP-Server als First-Class-Tool-Typ. Sie registrieren einen Server per URL, und das Modell entdeckt seine Tools und ruft sie in der agentischen Schleife auf:

response = client.responses.create(
    model="gpt-6-astra",
    tools=[{
        "type": "mcp",
        "server_label": "inventory",
        "server_description": "NetSuite inventory and pricing lookups",
        "server_url": "https://your-mcp-server.example.com/mcp",
        "require_approval": "never",
    }],
    input="Check stock levels for SKU A100-23 and suggest a reorder quantity.",
)

Das Feld require_approval steuert, ob das Modell eine menschliche Freigabe benötigt, bevor es die Tools des Servers aufruft. Für Produktionsbereitstellungen sind die MCP-Tool-Filterung-Optionen — allowed_tools zum Whitelisten spezifischer Tool-Namen und benutzerdefinierte Freigaberichtlinien pro Tool — die Governance-Schicht, die verhindert, dass das Modell destruktive Operationen ohne ausdrückliche Autorisierung aufruft.

Dies ist die Fähigkeit, die für IdeaBosques Integrationsmuster am relevantesten ist. Ein benutzerdefiniertes MCP-Modul, das NetSuite-, HubSpot- oder BigCommerce-APIs umschließt, kann als Remote-MCP-Server in einem Responses-API-Aufruf registriert werden, und das Modell verwendet es genauso wie web_search oder code_interpreter. Die semantische Schicht — typisierte Schemas, Audit-Logs, Rate-Limit-Verarbeitung — lebt im MCP-Modul, nicht im Prompt. Die Responses API löst nicht das Problem der semantischen Schicht; sie macht das MCP-Modul zum natürlichen Integrationspunkt. Für eine tiefere Behandlung dieses Musters siehe MCP Module Code Standard.

3. Hintergrundmodus für langlaufende Tasks

Der Hintergrundmodus entkoppelt den Modellaufruf von der Client-Verbindung. Die API nimmt die Anfrage an, gibt sofort eine Antwort-ID zurück und führt die Modellarbeit asynchron aus. Sie pollen den Status oder streamen Ergebnisse, sobald sie eintreffen:

resp = client.responses.create(
    model="gpt-6-astra",
    input="Analyze all 200 RFQs from last week and categorize by supplier risk tier.",
    background=True,
)

while resp.status in {"queued", "in_progress"}:
    sleep(2)
    resp = client.responses.retrieve(resp.id)

print(resp.output_text)

Für Agenten mit langem Horizont — Forschungssynthese, Batch-Dokumentenanalyse, mehrstufige Beschaffungs-Workflows — ist der Hintergrundmodus das Muster, das Netzwerkausfällen und Client-Timeouts überlebt. Eine Hintergrundantwort, die sechs Minuten dauert, hängt nicht von einer aktiven HTTP-Verbindung ab; wenn der Client sich trennt, läuft die Arbeit weiter, und Sie verbinden sich mit einem Streaming-Resume über die letzte Sequenznummer wieder.

Die operationelle Hürde ist, dass der Hintergrundmodus keine Job-Queue ist. Wie eine Analyse sagt: Die API führt den Modellaufruf aus, aber Ihre Anwendung besitzt weiterhin den Job-Zustand — was die UI anzeigt, wie man vermeidet, einen Webhook zweimal zu verarbeiten, wann man Arbeit abbricht, die nicht mehr wichtig ist. Für die Produktion brauchen Sie ein dauerhaftes Job-System um die Hintergrundantwort herum, nicht nur die Antwort-ID. Dies ist dasselbe Muster, das in Long-running Agent Patterns beschrieben wird: der Agent-Runtime, nicht die Modell-API, ist die Zuverlässigkeitsschicht.

4. Verschlüsseltes Reasoning für Zero-Data-Retention-Workflows

Wenn store: false, persistiert die API die Antwort nicht, gibt aber verschlüsselte Reasoning-Items in der Ausgabe zurück. Sie geben diese Items in der Eingabe der nächsten Anfrage zurück, um den Reasoning-Kontext über Züge hinweg zu bewahren, ohne etwas auf OpenAIs Servern zu speichern. Dies ist das Muster für regulierte Umgebungen, in denen Datenaufbewahrung verboten ist — EU-AI-Act-Hochrisikosysteme, Gesundheits-Workflows unter HIPAA, Verteidigungs-Workflows unter ITAR.

Der Trade-off ist, dass Sie der Zustandsspeicher werden. Sie müssen das vollständige Item-Array serialisieren, speichern und replayen — einschließlich der opaken verschlüsselten Reasoning-Blobs — in jedem Zug. Wenn Sie die verschlüsselten Reasoning-Items verlieren, verliert das Modell seinen Reasoning-Kontext und die Ausgabequalität verschlechtert sich. Dies ist dieselbe Zustandsverwaltungslast wie bei Chat Completions, aber mit einem zusätzlichen Item-Typ zu verarbeiten.

5. Der Astra-Task-Stop-Monitor

GPT-6 Astra wird mit Fehlausrichtungsüberwachung auf jeder tool-verwendenden Anfrage geliefert. Wenn der Monitor potenziell unbefugtes Verhalten erkennt, enthält die Modellantwort ein Stoppsignal. In ChatGPT und Codex sieht der Nutzer eine pausierte Task zur Überprüfung. In der API stoppt die Task direkt — es gibt keinen Fortsetzungspfad.

Für Produktionsagenten, die auf der Responses API gebaut werden, ist dies die wichtigste architektonische Einschränkung. Eine Task, die über Stunden durch previous_response_id-Ketten oder Hintergrundmodus läuft, kann von einem Klassifikator mitten im Flug beendet werden. Ihr Workflow muss aus dauerhaftem Zustand wiederherstellbar sein — jeder Tool-Aufruf, jedes Zwischenergebnis, jede Teil-Ausgabe muss vor dem nächsten API-Aufruf in Ihrem eigenen Speicher persistiert werden. Wenn der Monitor die Task bei Schritt 47 von 50 stoppt, müssen Sie von Schritt 47 aus fortfahren können, nicht von null neu starten.

OpenAIs Chef-Wissenschaftler Jakub Pachocki offenbarte in An Alien Mind (6. September 2026), dass die Fähigkeit des Unternehmens, sich auf Chain-of-Thought-Überwachung zu verlassen, „progressiv abnimmt" — Modelle werden besser darin, über ihren eigenen Reasoning-Prozess zu reasonieren und ihn zu manipulieren, und verbessertes Pre-Training macht Modelle auch ohne verbalisiertes Reasoning intelligenter. Der Monitor, der Ihre Task stoppt, ist die bestverfügbare Runtime-Ausführungsschicht, aber sein Anbieter hat gesagt, dass das Signal, auf das er sich verlässt, degradiert. Für eine tiefere Behandlung der Ausführungsschichten, die das Reasoning des Modells nicht lesen, siehe GPT-6 Astra Ships the Runtime Kill Switch.

Die drei Übernahmeentscheidungen

Entscheidung 1: Stateful oder stateless?

Verwenden Sie store: true mit previous_response_id, wenn Ihr Workflow konversationell, multi-turn und latenztolerant ist. Verwenden Sie store: false mit manuellem Item-Replay, wenn Ihr Workflow Zero-Data-Retention erfordert oder wenn Sie volle Kontrolle über das Kontextmanagement brauchen. Der Latenzunterschied ist etwa 2x — akzeptabel für Hintergrundagenten, potenziell inakzeptabel für nutzerseitigen Chat.

Entscheidung 2: Eingebaute Tools oder benutzerdefinierte Funktionen?

Die eingebauten Tools (web_search, file_search, code_interpreter, computer_use, image_generation, Remote-MCP) laufen serverseitig und profitieren von der Cache-Optimierung der agentischen Schleife. Benutzerdefinierte Funktionen erfordern, dass Sie die Tool-Aufruf-Schleife selbst implementieren. Die praktische Regel: Verwenden Sie eingebaute Tools für Fähigkeiten, die OpenAI besser bereitstellt als Sie (Websuche, Codeausführung), und verwenden Sie Remote-MCP-Server für Ihre eigenen Systemintegrationen (NetSuite, HubSpot, BigCommerce). Verwenden Sie benutzerdefinierte Funktionen nur für Fähigkeiten, die nicht als MCP-Server bereitgestellt werden können.

Entscheidung 3: Nur OpenAI oder modellflexibel?

Die Responses API ist ein OpenAI-Primitiv. Wenn Sie Ihren Agenten vollständig auf previous_response_id und eingebauten Tools aufbauen, sind Sie an OpenAIs Zustandsspeicher und Tool-Ökosystem gebunden. Wenn Ihre Produktionsanforderung Modellsflexibilität umfasst — Routing zu Open-Weight-Modellen wie Qwen3.8-27B für kostenempfindliche Tasks, oder zu Claude für spezifische Fähigkeiten — benötigen Sie eine Abstraktionsschicht, die zwischen dem Item-Modell der Responses API und dem Chat-Completions-Nachrichtenformat, das andere Anbieter verwenden, übersetzt.

Dies ist die architektonische Entscheidung, die bestimmt, ob die Responses API Ihr gesamter Agent-Runtime ist oder ein Backend unter mehreren. Ein modellflexibler Build behält die Agent-Schleife in Ihrem eigenen Runtime, verwendet die Responses API, wenn ihre Fähigkeiten die Latenz und Bindung rechtfertigen, und fällt auf Chat Completions oder Open-Weight-Inferenz zurück, wenn sie es nicht tun. Die Inferenzökonomie ist klar: 29% des Produktions-Token-Volumens läuft bereits auf Open-Weight-Modellen mit unter 4% der Ausgaben. Routing-Disziplin ist eine Produktionsrealität, kein Zukunftsplan.

Migrations-Checkliste

OpenAIs Migrationsleitfaden bietet die vollständige Checkliste. Die Entscheidungen, die die Architektur beeinflussen, nicht nur den Code:

  • Bestimmen Sie Ihr Zustandsmodell. previous_response_id, manuelles Item-Replay oder die Conversations-API. Dies bestimmt Ihr Latenzprofil und Ihre Datenaufbewahrungshaltung.
  • Auditieren Sie Ihre Funktionsdefinitionen. Benutzerdefinierte Funktionen migrieren wie sie sind, aber Funktionsaufruf-Ausgaben müssen die korrekte call_id enthalten. Das Weglassen von Reasoning- oder Funktionsaufruf-Items beim manuellen Transport von Kontext ist der häufigste Migrationsfehler.
  • Verschieben Sie Structured-Outputs-Schemas von response_format zu text.format — der Feldname hat sich geändert.
  • Fügen Sie dauerhafte Zustandspersistenz hinzu für jeden Workflow, der länger als wenige Sekunden läuft. Der Astra-Task-Stop-Monitor kann eine lange Task ohne Fortsetzungspfad beenden; Ihr Zustandsspeicher ist der Wiederherstellungsmechanismus.
  • Vergleichen Sie Latenz, Token-Nutzung und Fehlerraten, bevor Sie Produktionsverkehr routen. Die 3% SWE-bench-Verbesserung und die 40–80% Cache-Verbesserung sind Durchschnitte; Ihre Workload kann abweichen.
  • Behalten Sie einen Chat-Completions-Fallback, wenn Modellsflexibilität wichtig ist. Die Responses API ist OpenAI-exklusiv; andere Anbieter sprechen Chat Completions.

Verwandte Lektüre


Ein mittelständischer Distributor, der NetSuite und BigCommerce betreibt, möchte einen Agenten hinzufügen, der eingehende RFQs überwacht, Bestände und Tier-Preise prüft und Angebot-Antworten entwirft. Die Responses API mit einem Remote-MCP-Server, der das NetSuite-Connectormodul umschließt, ist der schnellste Weg zu einem funktionierenden Prototyp — ein API-Aufruf, eingebaute Tool-Schleife, keine benutzerdefinierte Orchestrierung. Aber die Produktionsarchitektur benötigt die modellflexible Routing-Schicht (Open-Weight-Modelle für 60% des Inferenzvolumens bei 4% der Kosten), den dauerhaften Zustandsspeicher (der Astra-Monitor kann eine lange RFQ-Analyse-Task mitten im Flug stoppen) und die semantische Schicht im MCP-Modul (typisierte Schemas, Audit-Logs, Rate-Limit-Verwaltung, die die Responses API nicht bietet). Das ist der Build, den wir scopen: die Responses API als ein Ausführungs-Backend, die MCP-Module als Integrationsschicht, Ihr Runtime als Zuverlässigkeits- und Routing-Schicht.

Anfordern Sie einen gescoppten Build. Einwöchiges Discovery. Sie erhalten ein Systeminventar, eine Workflow-Karte und einen festen Scope — ob Sie mit uns bauen oder nicht.

Möchten Sie dies für Ihre Systeme gebaut?

Jedes Dokument hier stammt aus echter Produktionsarbeit. Wenn Sie ein Zielsystem und einen Workflow im Sinn haben, können wir in einer Woche einen Build umreißen.

Build mit festem Umfang anfragen

Einwöchiges Discovery. Sie erhalten ein Systeminventar, eine Workflow-Mappe und einen festen Umfang — unabhängig davon, ob Sie mit uns bauen.