Weiter zum Inhalt

GPT-6 Astra API Tutorial: Baue einen Release-Check-Agenten mit Async-Tools und Steering

Nutze GPT-6 Astra über die OpenAI API, um einen Python-Agenten für Release-Checks mit Async-Tools, Reasoning-Kontrollen, Structured Outputs und Kostentracking zu bauen – plus Computer Use und Steering testen.
Aktualisiert 7. Sept. 2026  · 14 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Als ich GPT-6 Astra zum ersten Mal in derselben Runde ein langsames und ein schnelles Tool gab, rechnete ich mit einer klassischen synchronen Schleife: Es würde das langsame Tool anfordern und meinen Code blockieren, während alle warten. Die Dokumentation zum asynchronen Toolaufruf von OpenAI versprach, dass Astra währenddessen weiterarbeiten kann, aber ich war skeptisch. Die Anwendung steuert die Hintergrundarbeit weiterhin, also entfernt Async-Tool-Calling die Orchestrierung nicht. Die Frage ist, ob sich genug ändert, damit es zählt.

Unsere Übersicht zu GPT-6 Astra behandelt Launch und Benchmarks, und unser Guide GPT-6 Astra vs. Claude Fable 5.1 vergleicht Leistung und Preise mit dem größten Wettbewerber. In diesem Tutorial bringen wir GPT-6 Astra dazu, einen Release-Check-Workflow mit Testsuite, Health-Endpoint und einem fixen Browser-Check aufzubauen. Separate Demos zeigen modellverfasste Computer Use und Steering mitten im Turn.

Wir behandeln:

  • Einen GPT-6 Astra API-Call absetzen
  • Eine synchrone Tool-Calling-Schleife als Basis bauen
  • Langsame Checks auf Async-Tool-Calling umstellen
  • Einen begrenzten Computer-Use-Check ausführen
  • Steering gegenüber einem Finish-und-Neustart-Baseline über WebSocket vergleichen
  • Den Reasoning-Aufwand nur für die finale Diagnose erhöhen
  • Einen validierten Go/No-Go-Report mit strukturierten Ausgaben zurückgeben
  • API-Kosten korrekt berechnen, inklusive Cache-Writes
  • Den Lauf live in Streamlit verfolgen
  • Edge Cases behandeln, die Async-Jobs erzeugen

TL;DR

GPT-6 Astra ergänzt die Standard-Responses-Schleife um drei API-Features: asynchrones Tool-Calling, Steering mitten im Turn über WebSockets und Änderungen des Reasoning-Aufwands mitten im Gespräch. Vier Erkenntnisse aus der Kombination aller drei in einem einzigen Release-Check-Agenten haben meine Herangehensweise verändert.

  • Async-Tool-Calling verkürzte die Wartezeit, nicht die Modellarbeit: Die Rundenzahl hängt weiterhin von der Aufrufsequenz des Modells ab.
  • Steering brauchte weniger Zeit als die Finish-und-Neustart-Baseline, auch wenn der Test nicht jede Neustart-Policy verglich.
  • Höherer Reasoning-Aufwand ändert nicht zwingend die Diagnose, obwohl mehr Reasoning-Tokens genutzt werden.
  • Gleichzeitige Checks können Race Conditions sichtbar machen, die eine sequentielle Version verdecken würde.

Diese Ergebnisse gelten für diesen Release-Check, nicht für jede Agent-Workload. Tooldauer, gemeinsamer Zustand und die Zahl der Turns des Modells können den Ausgang verändern.

Arbeiten mit der OpenAI API

Beginne deine Reise zur Entwicklung von KI-gestützten Anwendungen mit der OpenAI API.
Kurs Erkunden

Was ist die GPT-6 Astra API?

Über die GPT-6 Astra API greifst du über die Responses API auf OpenAIs neues Flaggschiffmodell zu, das am 3. September 2026 veröffentlicht wurde. Für dieses Tutorial zählt vor allem die Oberfläche: gpt-6-astra akzeptiert Text- und Bild-Eingaben über die Responses API von OpenAI. Der Reasoning-Aufwand reicht von low bis max, ohne Option none

Die Beispiele in diesem Tutorial verwenden client.responses.create statt client.chat.completions.create, aber die Migration erfordert außerdem Änderungen an Request-, Output- und Tool-Result-Formaten. Entferne auch die benutzerdefinierten Einstellungen temperature, top_p und Log-Probabilities, da Astra sie nicht unterstützt. Bevor wir den ersten Call machen, schauen wir auf die Preise.

Was kostet GPT-6 Astra?

Für Requests mit höchstens 272.000 Input-Tokens gilt die Standardbepreisung von 10 $ pro Million gewöhnlicher Input-Tokens und 50 $ pro Million Output-Tokens. Zwischengespeicherter Input kostet 1 $ pro Million, und Cache-Writes kosten 12,50 $ pro Million. 

Sobald ein Request diesen Schwellenwert überschreitet, wendet OpenAI einen 2×-Multiplikator auf Input- und Cache-Raten und einen 1,5×-Multiplikator auf die Output-Rate an. Die höheren Sätze gelten für den gesamten Request, nicht nur für die Tokens oberhalb des Schwellenwerts. Keiner der Läufe in diesem Tutorial kam in die Nähe des Limits.

Was bauen wir mit der GPT-6 Astra API?

Die Staging-App ist ein kleines Flask-Aufgabenboard: eine Startseite, ein Formular zum Hinzufügen einer Aufgabe, ein Button zum Abhaken und ein /health Endpoint. Der vollständige Code, inklusive Staging-App, steht in diesem GitHub-Repository.

Das Staging-Task-Board, das der Agent prüft, mit Aufgabenliste und Formular zum Hinzufügen

Vor dem Testen sind drei Aufgaben vorbefüllt. Bild: Autor.

Die App hat einen eingebauten Fehler. Der Agent hat drei Checks, aber nur die Testsuite ist darauf ausgelegt, ihn zu finden.

Warum akzeptiert die App leere Aufgabentitel?

Der Endpoint zum Erstellen von Aufgaben lehnt einen leeren Titel nicht ab. Ich habe dieses Verhalten stehen lassen, damit der Agent einen bekannten Fehler finden kann, ohne ihn im Prompt zu verraten.

Welche Release-Checks kann der Agent ausführen?

Der Agent kann drei Tools aufrufen:

  • run_test_suite führt pytest aus, inklusive eines Bulk-Imports mit rund 250 HTTP-Requests. 

  • check_ui_flow nutzt Playwright, um eine Aufgabe hinzuzufügen und zu bestätigen, dass sie erscheint. 

  • check_staging_health sendet einen GET-Request an /health

Alle drei laufen gegen Staging, ohne Mocks. Der Browser-Check nutzt festen Code; die Demo für modellverfasste Computer Use folgt später.

So richtest du die GPT-6 Astra API in Python ein

Du brauchst einen OpenAI API-Key mit Zugriff auf gpt-6-astra. Erstelle einen Key unter platform.openai.com/api-keys und prüfe, dass dein Projekt gpt-6-astra aktiviert hat. In Enterprise-Workspaces ist Astra zum Launch standardmäßig deaktiviert.

Die folgenden Befehle nutzen Windows PowerShell und installieren alle Pakete für dieses Tutorial, inklusive OpenAIs realtime für die Steering-Demo.

python -m venv .venv
.venv\Scripts\Activate.ps1
Copy-Item .env.example .env
pip install "openai[realtime]" flask pytest playwright pydantic matplotlib python-dotenv streamlit
playwright install chromium

Unter macOS oder Linux ersetzt du den Aktivierungsbefehl durch source .venv/bin/activate und den Kopierbefehl durch cp .env.example .env

Füge dann den API-Key in die neue .env-Datei ein: Öffne die soeben kopierte .env und ergänze OPENAI_API_KEY=sk-.... python-dotenv lädt ihn, und das SDK greift automatisch darauf zu, sodass du den Key nie im Code übergeben musst.

Wenn projektspezifische Abhängigkeiten oder .env-Dateien neu für dich sind, erklären unsere Guides zu virtuellen Umgebungen und Umgebungsvariablen die Grundlagen. Prüfe, ob der Key funktioniert, bevor du darauf aufbaust.

Wenn dein API-Key bereits mit der Responses API funktioniert, überspringe den nächsten Abschnitt und starte mit der synchronen Tool-Schleife. Der erste Request prüft nur das Setup.

Setze deinen ersten GPT-6 Astra API-Call ab

Sobald der Key gesetzt ist, muss er mit dotenv geladen werden. Danach kannst du einen OpenAI-Client erstellen und mit client.responses.create() deine erste Anfrage senden. Die kleinstmögliche Anfrage sieht so aus:

from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

client = OpenAI()
response = client.responses.create(
    model="gpt-6-astra",
    reasoning={"effort": "low"},
    input="In one sentence, what is a staging environment used for?",
)
print(response.output_text)

Das Feld usage der Antwort listet die Token-Zähler, die wir später für die Kostenberechnung brauchen.

Baue eine synchrone GPT-6 Astra Tool-Schleife

Die Snippets unten sind Auszüge; lauffähige Versionen findest du im zugehörigen GitHub-Repository.

Bevor ich irgendetwas mit Async angefasst habe, habe ich die normale Version gebaut: 

  1. Modell aufrufen

  2. Auf ein function_call-Item prüfen

  3. Passendes Tool ausführen

  4. Ergebnis mit previous_response_id zurücksenden

  5. Wiederholen, bis das Modell keine Tools mehr anfordert. 

Diese blockierende Schleife ist die Baseline für den Async-Vergleich.

for turn in range(max_turns):
    response = client.responses.create(
        model="gpt-6-astra",
        reasoning={"effort": "low"},
        tools=TOOLS,
        input=next_input,
        previous_response_id=previous_response_id,
    )
    calls = [item for item in response.output if item.type == "function_call"]
    if not calls:
        final_text = response.output_text
        break
    outputs = [
        {"type": "function_call_output", "call_id": call.call_id, "output": run_tool(call)}
        for call in calls
    ]
    next_input, previous_response_id = outputs, response.id

Was der Baseline-Run gefunden hat

Im Baseline-Run rief das Modell jedes Tool der Reihe nach auf. Es fand den bekannten Validierungsfehler und gab eine No-Go-Entscheidung zurück. Über drei Läufe lag die durchschnittliche Gesamtzeit bei 23,40 Sekunden. Dieser Durchschnitt bezieht sich auf den gesamten Run, nicht auf einzelne Toolzeiten.

Wie funktioniert Async-Tool-Calling in GPT-6 Astra?

Markiere ein Tool mit "async": true in seinem Schema, und deine App kann dieses Ergebnis zurückstellen, während das Modell entweder weiterarbeitet oder wartet. Deine Anwendung führt das Tool weiterhin aus und verwaltet den Hintergrundjob.

So führst du unabhängige Checks parallel aus

Ich habe run_test_suite und check_ui_flow als async markiert und ein App-definiertes wait_for_tasks-Tool ohne Argumente ergänzt, da diese Demo immer nur eine Charge ausstehender Arbeit gleichzeitig hat. Dieses wartende No-Arg-Tool hält das Beispiel klein. 

In einem produktiven Runner identifizierst du Jobs mit Handles, verknüpfst jedes Handle mit seiner ursprünglichen call_id und wartest nur, wenn der nächste Schritt von einem ausstehenden Ergebnis abhängt.

Gib jedes fertige Ergebnis unter seiner ursprünglichen call_id zurück und den Warte-Status unter der eigenen call_id des Wait-Tools.

TOOLS = [
    {"type": "function", "name": "run_test_suite", "async": True, ...},
    {"type": "function", "name": "check_ui_flow", "async": True, ...},
    {"type": "function", "name": "check_staging_health", ...},
    {"type": "function", "name": "wait_for_tasks", ...},
]

Für diesen Lauf reichte die App jeden markierten Aufruf an einen Thread-Pool ein. Während die Hintergrund-Checks liefen, führte sie den schnellen synchronen Health-Check aus. Anschließend blockierte sie bei wait_for_tasks, bis die ausstehenden Checks abgeschlossen waren.

Reduziert Async-Tool-Calling die Gesamtzeit?

Über drei Läufe senkte Async die durchschnittliche Gesamtzeit um 19,1 % von 23,40 Sekunden auf 18,94 Sekunden. Der Durchschnitt wirkte eindeutig, bis die Einzelläufe kamen; das Diagramm unten zeigt, wie stark sie tatsächlich schwankten. Drei Läufe reichen, um zu zeigen, was hier passierte, nicht um Produktionslatenz vorherzusagen.

Liniendiagramm mit Sekunden der Wall-Clock-Zeit für drei Sync- und drei Async-Läufe desselben Release-Checks

Laufzeiten variierten in beiden Modi. Bild: Autor.

Warum führten gleichzeitige Checks zu einer Race Condition?

Das parallele Ausführen des Browser-Checks und des Bulk-Import-Tests ließ die Assertion des Bulk-Imports gelegentlich fehlschlagen, weil beide Checks dieselbe In-Memory-Aufgabenliste veränderten. Das brach die Annahme des Tests über exklusiven Zugriff. Eine Isolierung der Daten entweder im Runner oder in den Tests würde das Race vermeiden.

Begrenzte GPT-6 Astra Computer Use für UI-Tests

Für Computer Use empfiehlt die Doku von GPT-6 Astra Codeausführung, während das strukturierte computer-Tool als Alternative weiter unterstützt wird. Mit Codeausführung kann ein Call mehrere Aktionen, Schleifen und Bedingungslogik kombinieren, während das computer-Tool jeweils eine strukturierte Maus- oder Tastaturaktion zurückgibt, die deine Anwendung übersetzt und abspielt.

So begrenzt du den Computer-Use-Runner

Ich nannte die Klasse BrowserSandbox, aber der Name übertreibt den Schutz. Sie gibt modellverfasstem Code eine Playwright-page, eine log()-Funktion und einen expect_text() Helper. Python kann weiterhin Built-ins in exec() injizieren, und die Seite kann zu einer anderen Origin navigieren.

sandbox_globals = {"page": self.page, "log": log, "expect_text": expect_text}
exec(code, sandbox_globals)

Behandle das als Demo-Runner, nicht als Sicherheitsgrenze. Modellverfasster Code braucht einen isolierten Prozess oder Container mit Einschränkungen für Dateisystem, Prozesse, Netzwerk und Origins.

Was passierte im UI-Check?

Ich habe die Schleife auf acht Turns begrenzt, weil ein begrenzter Check einen harten Stopp braucht. Das Modell inspizierte die Seite, fand das Formulareingabefeld, erstellte den Titel „UI flow check, cobalt otter 73921“, übermittelte die Aufgabe und bestätigte, dass der Titel erschien. Das dauerte 13 Sekunden. Unser GPT-5.4 Computer Use Tutorial zeigt ein detailliertes Beispiel mit einem Vorgängermodell von Astra.

Wie funktioniert GPT-6 Astra Steering mitten im Turn?

Steering mitten im Turn ist nur für gpt-6-astra über eine WebSocket-Verbindung verfügbar.

Öffne eine Verbindung und erstelle eine Response, dann sende ein response.steer-Event mit neuen Anweisungen, während die Response generiert wird. Ein response.steer.accepted-Event bedeutet, dass das Update in der Warteschlange ist, nicht angewendet. Bevor die automatische Fortsetzung erstellt wird, beendet der Server das aktuelle Output-Item und alle bereits laufenden gehosteten Toolarbeiten. 

Wenn noch ein Client-Tool-Ergebnis oder eine Freigabe fehlt, response.steer.pending identifiziert die fehlende Eingabe.

async with client.responses.connect() as connection:
    await connection.response.create(model="gpt-6-astra", input=TASK)
    async for event in connection:
        if event.type == "response.created" and initial_response_id is None:
            initial_response_id = event.response.id
            await asyncio.sleep(1.0)
            await connection.response.steer(
                previous_response_id=initial_response_id,
                input="Also add a rollback plan, but skip mobile.",
            )

Die Verzögerung von einer Sekunde entspricht dem Experimentcode und gibt der ersten Response Zeit zum Starten. Ohne diese Verzögerung würde hier ein anderer Punkt im Response-Lebenszyklus getestet.

Was bleibt beim Steering unverändert?

Steering überschreibt die ursprüngliche Response nicht. Wenn das Update sie unterbricht, endet diese Response mit status: "incomplete" und incomplete_details.reason: "steered". Eine Nachfolger-Response führt dann mit der neuen Anweisung fort. 

Wenn die erste Response fertig ist, bevor das Update greift, bleibt sie abgeschlossen. Steering macht bereits gestartete Client-seitige Aktionen nicht rückgängig; das Verhalten liegt weiterhin bei deiner Anwendung. Wartende Steering-Updates existieren nur auf der aktuellen WebSocket-Verbindung, also protokolliere das Update, bevor du einen Reconnect versuchst.

Der Vergleichspfad lässt die erste Response fertig werden und sendet dann eine neue Anfrage mit den kombinierten Anweisungen. Über zwei Läufe lag Steering im Schnitt bei 26,91 Sekunden versus 50,02 Sekunden für diesen Finish-und-Neustart-Pfad. Dieser Vergleich deckt keine Cancel-und-Neustart-Policy ab und bewertet den finalen Text nicht auf Korrektheit.

Zwei Balkendiagramme vergleichen durchschnittliche Sekunden und durchschnittliche Kosten für Steering versus Neustart

Durchschnittswerte aus zwei Läufen für Zeit und Kosten. Bild: Autor.

Der Neustartpfad erzeugt zwei vollständige Responses, die Teile derselben Anforderungen abdecken. Das erklärt einen Teil der Zeitdifferenz, daher würde ich diese zwei Läufe nicht als generelle Benchmark für Steering sehen.

So änderst du den GPT-6 Astra Reasoning-Aufwand mitten im Gespräch

gpt-6-astra unterstützt Reasoning-Aufwand von low bis max. Höherer Aufwand kann den Einsatz von Reasoning-Tokens erhöhen, garantiert aber keine andere Antwort. Ein configuration_update ändert die nächste und spätere Responses, bis ein weiteres Update sie überschreibt, während die Request-Einstellung unverändert bleibt. 

In dieser Pipeline beendet der Report das Gespräch, daher wirkt sich das Update nur auf diesen letzten Schritt aus.

response = client.responses.create(
    model="gpt-6-astra",
    previous_response_id=previous_id,
    reasoning={"effort": "low"},  # default remains low
    input=[
        {"type": "configuration_update", "reasoning": {"effort": "high"}},
        {"role": "user", "content": "Diagnose the root cause and recommend a fix."},
    ],
)

Ich habe dieselbe Failure-Trace auf beiden Aufwandsstufen genutzt und Diagnose sowie Tokenverbrauch verglichen.

Eine Feinheit: Das Feld reasoning.effort der Antwort meldet weiterhin die Request-Einstellung, nicht den durch configuration_update gewählten Aufwand. Verlass dich nicht auf dieses Feld, um zu prüfen, ob das Update wirkte.

Hat hoher Reasoning-Aufwand die Diagnose verändert?

Im vollständigen kombinierten Lauf nutzte der eskalierte Schritt 108 Reasoning-Tokens. Jeder andere Schritt auf low nutzte null. In einem früheren isolierten Test mit längerer Failure-Trace nutzte niedriger Aufwand null Reasoning-Tokens, hoher Aufwand 318. Beide Versionen identifizierten den Validierungsfehler, also veränderte höherer Aufwand den Tokenverbrauch, nicht die Diagnose.

Configuration-Updates funktionieren nur in Standard-Requests mit einem einzelnen Agenten. Die API lehnt benachbarte Updates ab, und sie lassen sich nicht mit automatischer Kompaktierung oder automatischer Kürzung kombinieren.

So nutzt du strukturierte Ausgaben von GPT-6 Astra

Der letzte Schritt der Pipeline ruft client.responses.parse auf und ersetzt Freitext durch ein validiertes Pydantic-Modell.

class GoNoGoReport(BaseModel):
    decision: str
    summary: str
    checks_completed: list[str]
    failures: list[str]
    risks: list[str]
    follow_up_actions: list[str]
    confidence: float

response = client.responses.parse(
    model="gpt-6-astra",
    previous_response_id=previous_id,
    text_format=GoNoGoReport,
    input=[...],
)

Pydantic prüft hier die deklarierten Feldtypen. Es beweist nicht, dass der Report zur Evidenz passt, und diese Version beschränkt decision nicht auf zwei Werte und confidence nicht auf einen Bereich.

Was hat der Go/No-Go-Report erfasst?

Der Report gab decision: "no_go" zurück. Er ordnete den erwähnten Validierungsfehler unter failures und das Nebenläufigkeitsproblem unter risks ein. Für Letzteres schrieb er: „possible interference from concurrent UI checks against shared staging data.“ Der Prompt nannte dieses Risiko nicht.

Halte Latenz und Kosten außerhalb dieses Schemas und berechne sie im Code. Das Modell füllt die Report-Felder aus der Tool-Evidenz.

Die Streamlit-Oberfläche nutzt denselben Generator wie der Kommandozeilen-Runner. Sie rendert jedes Tool-Event beim Eintreffen und zeigt dann den geparsten Report in den Tabs Report und JSON an.

Live-Fortschritt des Agenten neben dem finalen Report. Video: Autor.

Das Dashboard führt die kombinierte asynchrone Release-Pipeline mit festem Browser-Check, Reasoning-Update, strukturiertem Report und Timing-Anzeige aus. Sein Kosten-Panel liest dasselbe Ledger wie der Kommandozeilen-Runner. Es führt nicht die separaten Demos für modellverfasste Computer Use oder Steering aus.

So trackst du GPT-6 Astra API Tokenverbrauch und Kosten

Für den Modell-Tokenanteil dieser Läufe enthält das Feld usage die vier Token-Zähler, die zur Bepreisung jeder Response nötig sind. Cache-Writes haben ihren eigenen Satz, also führe sie nicht mit gewöhnlichem Input zusammen. Die Tools hier laufen in deiner Anwendung; wenn du ein gehostetes Tool mit separater Gebühr ergänzt, rechne diese Kosten ebenfalls ein.

details = usage.input_tokens_details
cached_tokens = details.cached_tokens
cache_write_tokens = details.cache_write_tokens
ordinary_tokens = usage.input_tokens - cached_tokens - cache_write_tokens

cost = (
    ordinary_tokens * PRICE_INPUT
    + cached_tokens * PRICE_CACHED_INPUT
    + cache_write_tokens * PRICE_CACHE_WRITE
    + usage.output_tokens * PRICE_OUTPUT
) / 1_000_000

Diese Berechnung deckt eine einzelne Response ab. Das Ledger wendet sie nach jeder Response an und addiert anschließend die Call-Gesamten.

Protokolliere cache_write_tokens selbst dann, wenn der Wert null ist. Andernfalls kann ein zukünftiger Cache-Write im gewöhnlichen Input versteckt sein, und das ist eine ärgerliche Art, einen Abrechnungsfehler zu entdecken.

Produktionsaspekte für den GPT-6 Astra Agenten

Bevor die Demo Deployments steuern kann, braucht sie diese Änderungen.

Tool-Berechtigungen und Isolation

Halte die Staging-Grenze ein und isoliere die BrowserSandbox wie oben beschrieben. Gib ihr keine Datenbankzugänge oder Produktionszugriff.

Async-Job-Lifecycle

In der Demo endet jeder ausstehende Job, und nichts anderes greift darauf zu. Ein deployter Runner muss die Fälle überstehen, in denen beides nicht stimmt. Er braucht für jeden Pending-Eintrag:

  • Eine Deadline und einen Endzustand, damit nichts ewig pending bleibt
  • Ein Delivery-Flag, damit Callback und Retry nicht zweimal dasselbe Ergebnis senden
  • Start- und Endzeitstempel, um Timeout von verspäteter, aber gültiger Fertigstellung zu unterscheiden
  • Ablehnung von Duplikataufrufen, damit dieselbe Aufgabe nicht doppelt gestartet wird
  • Fehlerbehandlung im Hintergrund-Thread, damit Exceptions nicht im Pool verschwinden
  • Cancellation, also das Ignorieren eines späten Ergebnisses und das Stoppen bereits laufender externer Arbeiten

Steering und irreversible Aktionen

Ein Steering kann zukünftige Anweisungen ändern, aber keinen abgeschlossenen Seiteneffekt rückgängig machen. Wenn ein Tool ein externes System bereits verändert hat, muss eine separate Tool-Aktion das kompensieren.

Misalignment Monitoring

Automatisches Stoppen gilt für Responses-API-Requests, die persistentes Reasoning, WebSockets oder OpenAI-Kompaktierung nutzen. Andere Requests können Alarme auslösen, werden aber nicht automatisch gestoppt. 

Vor dem Streaming kann Misalignment Monitoring einen abgedeckten Lauf mit HTTP 403 und dem Code misalignment_policy_violation blockieren. Ein Streaming-Client kann stattdessen nach Beginn der Ausgabe einen Fehler erhalten. Die API bietet keinen allgemeinen Resume-Pfad für das gestoppte Gespräch.

Deployment-Checkliste für den GPT-6 Astra Agenten

Bevor du diesen Agenten von der lokalen Demo ins Deployment bringst, füge diese Kontrollen hinzu. Sie gehören in den Anwendungscode, nicht in die Modellanweisungen.

  • Setze explizite Timeouts für die HTTP-Calls der Staging-App und die WebSocket-Verbindung

  • Logge gewöhnlichen Input, gecachten Input, Cache-Writes, Output, Response-ID und Turn-Anzahl

  • Löse Alarme bei unvollständigen Läufen oder Läufen aus, die das Turn-Limit erreichen. Setze einen separaten Alarm für Budgetüberschreitungen

  • Pinne die Version des openai-SDKs und prüfe Async-, Steering- und configuration_update-Verhalten vor einem Upgrade erneut

Wann solltest du GPT-6 Astra Async-Tools oder Steering nutzen?

Wähle den einfachsten Weg, der zur Aufgabe passt.

  • Starte mit einem synchronen Request und strukturierten Ausgaben, wenn Tools schnell zurückkehren und die Anforderungen stabil sind.
  • Füge Async-Tool-Calling hinzu, wenn das Modell oder ein anderes Tool während eines langsamen Calls sinnvolle Arbeit leisten kann und die gesparte Zeit den Mehraufwand für Jobmanagement rechtfertigt.
  • Nutze Steering mitten im Turn, wenn sich Anforderungen während eines Laufs ändern.

Fazit

Der synchrone Release-Check wurde nützlicher, sobald sich langsame Tools überlappen konnten, auch wenn es kein klarer Durchmarsch war. Über drei Läufe reduzierte Async die mittlere Zeit von 23,40 Sekunden auf 18,94 Sekunden und deckte dann ein Shared-State-Race auf, das die sequentielle Schleife versteckt hatte. 

Ich würde Browser und Testdaten isolieren, Routine-Turns auf low lassen und den Reasoning-Aufwand nur erhöhen, wenn die Evidenz einen genaueren Blick erfordert. Wenn Tools schnell fertig sind und Anforderungen stabil bleiben, endet man am besten bei der synchronen Schleife mit strukturierten Ausgaben. Nutze Async, wenn unabhängige Arbeiten sich überlappen können, und Steering, wenn sich Anweisungen während einer Response ändern.

Für API-Grundlagen empfehle ich unseren Kurs Working with the OpenAI API. Für größere Agentensysteme sieh dir unseren Kurs Building Scalable Agentic Systems an.

FAQs

Kann ich Chat Completions mit GPT-6 Astra verwenden?

Für reinen Text ja. Für Tool-Calling nein: Astra erfordert die Responses API, daher nutzt jedes Beispiel hier client.responses.create.

Welche Modelle unterstützen Async-Tool-Calling und Steering?

Async-Tool-Calling wurde mit GPT-6 Astra eingeführt. Steering mitten im Turn ist Astra-only und nur über WebSocket verfügbar; GPT-5.6 und älter unterstützen es gar nicht.

Was bricht, wenn ich eine bestehende Anfrage auf gpt-6-astra umstelle?

Drei Dinge. reasoning.effort: "none" führt zu HTTP 400, also starte mit low. temperature, top_p und Log-Probability-Einstellungen müssen raus. Und Tool-Calling muss zur Responses API wechseln, falls noch nicht geschehen.

Ersetzt Async-Tool-Calling parallele Toolaufrufe?

Nein, sie lösen unterschiedliche Probleme. Parallele Toolaufrufe lassen das Modell mehrere Tools in einem Turn anfordern; Async erlaubt deiner App, das Ergebnis eines Tools aufzuschieben, während das Modell weitermacht.

Warum endete mein Async-Toolaufruf mit einem fehlenden function_call_output?

Dieser Fehler kann auftreten, wenn ein nicht-async Toolaufruf in derselben Charge noch nicht aufgelöst wurde. Async stellt nur den markierten Call zurück; jeder andere Toolaufruf braucht weiterhin zuerst ein Output.

Erfordert Async-Tool-Calling WebSockets?

Nein. Die oben gezeigte Async-Implementierung nutzt reguläre Requests der Responses API.

Wurde der Bug mit dem leeren Titel jemals vom UI-Check statt von der Testsuite erwischt?

Nein. Nur die Testsuite prüfte die Validierung leerer Titel; UI- und Health-Checks testeten anderes Verhalten.

Warum verwenden wir previous_response_id in der Tool-Schleife?

Es verknüpft jedes Tool-Ergebnis mit der Response, die es angefordert hat. Die Schleife kann dasselbe Responses-API-Gespräch fortsetzen, ohne jedes Mal das gesamte Transkript erneut zu senden.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Ich bin Dateningenieur und Community-Builder und arbeite mit Datenpipelines, Cloud- und KI-Tools. Außerdem schreibe ich praktische, super nützliche Tutorials für DataCamp und angehende Entwickler.

Themen
Künstliche Intelligenz
Große Sprachmodelle
KI-Agenten

Lerne KI mit DataCamp!

Lernpfad

Associate AI Engineer für Entwickler

26 Std.
Lerne, wie du KI mithilfe von APIs und Open-Source-Bibliotheken in Softwareanwendungen integrierst. Starte noch heute deine Reise zum AI Engineer!
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow
Verwandt

Blog

Arten von KI-Agenten: Ihre Rollen, Strukturen und Anwendungen verstehen

Lerne die wichtigsten Arten von KI-Agenten kennen, wie sie mit ihrer Umgebung interagieren und wie sie in verschiedenen Branchen eingesetzt werden. Verstehe einfache reflexive, modellbasierte, zielbasierte, nutzenbasierte, lernende Agenten und mehr.

Blog

Die 36 wichtigsten Fragen und Antworten zum Thema generative KI für 2026

Dieser Blog hat eine ganze Reihe von Fragen und Antworten zu generativer KI, von den Grundlagen bis hin zu fortgeschrittenen Themen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

5 Min.

Tutorial

30 coole Python-Tricks für besseren Code mit Beispielen

Wir haben 30 coole Python-Tricks zusammengestellt, mit denen du deinen Code verbesserst und deine Python-Kompetenzen ausbaust.
Kurtis Pykes 's photo

Kurtis Pykes

15 Min.

Tutorial

Python-Tutorial zum Verknüpfen von Zeichenfolgen

Lerne verschiedene Methoden zum Verknüpfen von Zeichenfolgen in Python kennen, mit Beispielen, die jede Technik zeigen.
DataCamp Team's photo

DataCamp Team

5 Min.

Tutorial

Abstrakte Klassen in Python: Ein umfassender Leitfaden mit Beispielen

Lerne mehr über abstrakte Klassen in Python, wozu sie gut sind und wie du mit dem Modul „abc“ einheitliche Schnittstellen sicherstellen kannst. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Derrick Mwiti's photo

Derrick Mwiti

10 Min.

Mehr AnzeigenMehr Anzeigen