GPT-6 Sol API-Tutorial: Baue einen Migrationsagenten für Codebasen
Lerne, wie du die GPT-6 Sol API in Python nutzt. Baue einen Codebase-Migrationsagenten mit Repository-Tools, Structured Outputs, GPT-6 Luna-Triage, Steering und pytest.
Hier migrieren wir Northstar Checkout, einen kleinen fiktiven Python-Checkout-Service, mit GPT-6 Sol von einem lokalen Zahlungsadapter v1 auf v2.
Konkret zeige ich dir, wie du:
Den ersten GPT-6 Sol API-Call machst und die Usage-Felder liest
Den Migrationsvertrag definierst, bevor das Modell das Repository sieht
GPT-6 Sol restriktive Datei- und Test-Tools gibst und den Zugriff mit allowed_tools staffelst
GPT-6 Luna für die Triage nutzt und GPT-6 Sol die Shortlist verifizieren lässt
Einen strukturierten Migrationsplan zurückgibst und ihn gegen bereits gelesene Dateien von GPT-6 Sol prüfst
Die Migration über WebSocket laufen lässt und sie nach Start der Edits steuerst
Den Reasoning-Aufwand erhöhst, nachdem eine unabhängige Deployment-Probe fehlschlägt
Die aufgezeichneten Kosten aus der API-Nutzung berechnest
Erkenntnisse auf dem Weg
Vier Einsichten würden meine nächste Version prägen:
Die Acceptance-Suite zu bestehen, reichte nicht aus. Dieselbe Checkout-Anfrage an einen anderen Server zeigte weiterhin eine rohe Adapter-Exception.
Das Erhöhen des Aufwands hatte einen klaren Auslöser. Nach dem Scheitern der Deployment-Probe fand GPT-6 Sol den Bug in von einem Prozess gehaltenem Zustand und reparierte die Retries über Server hinweg.
Ein Steer macht einen Edit nicht rückgängig, aber das Modell kann es. GPT-6 Sol hatte bereits einen öffentlichen Parameter umbenannt, als die neue Anforderung kam, und machte die Umbenennung rückgängig.
Die Shortlist von GPT-6 Luna hatte volle Recall, aber ihre Einsparungen sind nicht belegt. GPT-6 Sol suchte vor dem Planen trotzdem darüber hinaus.
Was ist GPT-6 Sol?
GPT-6 Sol ist die mittlere Stufe der GPT-6-Familie von OpenAI, die API-Model-ID ist gpt-6-sol. Unser Leitfaden zu den GPT-6-Modellstufen deckt Launch und Benchmarks ab. OpenAIs GPT-6 Guidance ordnet GPT-6 Astra an die Spitze, GPT-6 Sol in die Mitte und GPT-6 Luna als günstigste Stufe ein.
GPT-6 Sol hat ein Kontextfenster von 1.050.000 Tokens und liefert bis zu 128.000 Output-Tokens. Der Reasoning-Aufwand reicht von none bis max und ist standardmäßig medium. Chat Completions unterstützt die Funktionsaufrufe von GPT-6 Sol nur bei none, daher verwenden alle Anfragen hier die Responses API.
Preisgestaltung und API-Support bestimmen, wie das Harness jede Anfrage sendet.
Was kostet die GPT-6 Sol API?
GPT-6 Sol kostet 2 $ pro Million Input-Tokens und 10 $ pro Million Output-Tokens für Anfragen bis 272.000 Input-Tokens, laut OpenAIs Preisseite. Zwischengespeicherter Input kostet 0,20 $ pro Million, Cache-Writes 2,50 $. GPT-6 Lunas Preise für dieselben vier Kategorien liegen bei 0,10 $, 0,01 $, 0,125 $ und 0,50 $.
Über 272.000 Input-Tokens wird die gesamte Anfrage mit dem 2-fachen Input- und Cache-Satz sowie dem 1,5-fachen Output-Satz abgerechnet. Keine Anfrage in diesem Projekt kam in die Nähe.
Welche API-Features nutzt dieses Tutorial?
Das Harness – die Python-Umgebung rund um das Modell – nutzt diese GPT-6-Regler:
Alle vier Regler bleiben in derselben Responses-API-Response-Kette.
Was bauen wir mit der GPT-6 Sol API?
Wir bauen einen Agenten, der Northstar Checkout von Payments Adapter v1 auf v2 umstellt. Beide Adapter sind lokale Platzhalter, die ich für dieses Experiment geschrieben habe – keine echten Payment-SDKs. Der vollständige Code, Fixtures und ein aufgezeichneter Lauf sind in diesem GitHub-Repository.
Das Repository mischt Payment-Code mit unabhängigen Modulen, daher muss GPT-6 Sol die betroffenen Dateien selbst finden. V2 bricht vier Adapterverträge:
Die Zahlungserstellung wechselt von client.charge(...) zu client.payments.create(...)
Result-Dictionaries werden zu typisierten Objekten mit Beträgen vom Typ Money
Abgelehnte Karten liefern einen Status statt eine Exception zu werfen
Webhooks ändern Namen, Hülle und Signatur-Header
Suchen-und-Ersetzen erledigt die Methodenumbenennung. Keine der Verhaltensänderungen werden so abgedeckt.
Eine Migrationsschleife, zwei GPT-6-Modelle. Bild: Autor.
GPT-6 Sol erhält die Spezifikation, den Dateibaum und restriktive Tools, die stufenweise aufrufbar werden. Es weiß nicht, welche Dateien geändert werden müssen oder dass sich eine Anforderung ändern wird.
Warum ist diese API-Migration anspruchsvoll?
Zwei Teile der Spez sind Fallen. Keiner ist ein absichtlich eingeschleuster Bug; beide entstehen aus v2-Verhalten in Kombination mit vorhandenem Code:
Idempotenz. V2 vergleicht Parameter bei wiederholter request_id, aber Checkout setzt bei jedem Versuch eine frische order_id in die Metadaten, deshalb wird ein naiver Retry abgelehnt statt dedupliziert.
Refund-Totale. Der v2-Webhook payment.refunded meldet den bisher insgesamt erstatteten Betrag, während der alte Handler jeden Wert mit += addiert.
Beides übersteht einen Type-Checker. Du findest es nur, wenn du Checkout und Refunds End-to-End ausführst.
Zahlungsänderungen betreffen mehrere Northstar-Module. Bild: Autor.
Die Karte trennt direkte Adapter-Imports von Modulen, die vom Zahlungs-Verhalten abhängen. Diese indirekten Verbindungen sind der Grund, warum ein Antwortschlüssel für das gesamte Repository wichtig ist.
Wie testen wir die Migration?
Eine zurückgehaltene Acceptance-Suite, vor dem ersten Modellaufruf geschrieben, entscheidet über das Ergebnis. GPT-6 Sol sieht sie nie; das Harness führt sie mit pytest gegen die migrierte Kopie aus. Sie prüft, dass:
Checkout über v2 gelingt und ein Retry mit demselben Idempotency-Key nur einmal belastet
Eine abgelehnte Karte weiterhin den öffentlichen Fehler CheckoutDeclined auslöst
Eine Vollerstattung, zwei Teil-Erstattungen und ein erneut zugestellter Webhook stets korrekte Totale hinterlassen
Keine v1-Referenzen mehr vorhanden sind, vendor/ und MIGRATION.md unberührt bleiben und die sichtbaren Tests bestehen
Der ursprüngliche Code besteht bereits Checks für unveränderte Schnittstellen und geschützte Dateien; die restlichen Checks messen die Migration. Ein separater Antwortschlüssel listet die nötigen Änderungen – gelesen wird er nur vom Harness.
Die Verzeichnisse acceptance/ und probes/ liegen außerhalb der kopierten Repository-Version, die beiden Modellen zugänglich ist. Der Antwortschlüssel liegt unter acceptance/ und kann daher weder in GPT-6 Lunas Input noch in den Dateibaum oder ein Repo-Tool gelangen.
Das Read-Gate kann Pfade aus GPT-6 Sols eigenem Plan zurückgeben. Die Answer-Key-Coverage wird nur für die Auswertung aufgezeichnet; fehlende Ground-Truth-Pfade werden nie an GPT-6 Sol zurückgespielt.
Nach der Suite läuft eine Deployment-Probe. Keiner der Checks akzeptiert die „fertig“-Meldung des Modells als Beweis.
So richtest du die GPT-6 Sol API in Python ein
Du brauchst Python 3.10 oder neuer und einen API-Key mit Zugriff auf beide Modelle. Die Requirements beinhalten das realtime-Extra für Steering:
git clone https://github.com/KhalidAbdelaty/gpt-6-sol-api.git
cd gpt-6-sol-api
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install-r requirements.txt
Copy-Item .env.example .envBereitgestellt von
Unter macOS oder Linux verwende source .venv/bin/activate und cp .env.example .env und trage dann OPENAI_API_KEY=... in .env ein.
Wenn dein Key mit der Responses API schon funktioniert, kannst du den nächsten Abschnitt überspringen.
Mach deinen ersten GPT-6 Sol API-Call
Die kleinste sinnvolle Anfrage bestätigt Key, Model-ID und die Usage-Felder, die du für die Kosten brauchst:
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI()
response = client.responses.create(
model="gpt-6-sol",input="In one sentence, why is a breaking API migration harder than renaming a function?",)print(response.reasoning.effort, response.output_text)print(response.usage)Bereitgestellt von
Die Antwort meldet den Aufwand medium und usage enthält cached_tokens und cache_write_tokens. Lass temperature und top_p weg. Beide führen zu 400, wenn der Aufwand nicht none ist.
Erster GPT-6 Sol-Request liefert Usage. Bild: Autor.
Mit welchem Reasoning-Aufwand solltest du starten?
Starte mit medium, dem Standard, und belasse die Einstellung auf Anfrage-Ebene für den gesamten Lauf dort. Die meisten Migrations-Turns sind Reads und kleine Edits. Die Deployment-Probe liefert später den Grund, den Aufwand zu erhöhen.
So fügst du einem Coding-Agenten sichere Repository-Tools hinzu
Die Tool-Schicht bestimmt die Berechtigungen des Agenten. GPT-6 Sol bekommt diese Funktions-Tools mit strict: true:
list_files und search_code finden relevanten Code
read_file liefert eine Repository-Datei zurück
edit_file ändert genau ein Vorkommen
run_tests führt ein erlaubtes pytest-Target aus
Strikte Schemas prüfen die Argument-Form, nicht die Pfadsicherheit, deshalb erzwingt Python die Schreibgrenze:
READ_ONLY =("vendor/","MIGRATION.md","conftest.py")if write:if rel_posix.startswith(READ_ONLY)or rel_posix in READ_ONLY:raise ToolError(f"{rel_posix} is read-only")# the spec and both adaptersifnot rel_posix.startswith(("northstar/","tests/"))ornot rel_posix.endswith(".py"):raise ToolError("writes are limited to Python files under northstar/ and tests/")Bereitgestellt von
Der Pfad wird zuerst aufgelöst, daher schlagen ../ und absolute Pfade fehl. edit_file ersetzt genau ein exaktes Match, und run_tests akzeptiert nur Targets unter tests/.
Das Harness gibt einen blockierten Aufruf als ERROR: Tool-Output zurück, und die Schleife läuft weiter. Unser Guide zum Agent-Harness-Engineering erklärt, warum diese Checks ins Harness und nicht ins Prompt gehören.
So testest du die Dateigrenze
Rufe jedes Tool mit einem Input auf, den es ablehnen muss:
Ein Pfad mit ..
Ein absoluter Pfad
Ein Write unter vendor/
Ein Test-Target mit Shell-Befehl
Keiner davon darf durchkommen. Ein Edit mit mehr als einer Übereinstimmung sollte nach mehr Kontext fragen. Eigene Funktionen bündeln die Regeln an einem gut testbaren Ort.
So nutzt du GPT-6 Luna für Repository-Triage
Repository-Triage ist eine enge Klassifizierungsaufgabe: Relevanz je Datei bewerten und v1-Referenzen zitieren. GPT-6 Luna erledigt genau diese Aufgabe und sonst nichts – und läuft zuerst, bevor GPT-6 Sol irgendetwas gesucht hat.
classFileVerdict(BaseModel):
path:str
relevance: Literal["high","medium","low","none"]
legacy_references:list[str]
triage = client.responses.parse(model="gpt-6-luna",input=spec_and_all_files,
text_format=TriageResult)# a list of FileVerdictBereitgestellt von
Der Input ist die Spez plus alle Python-Dateien unter northstar/ und tests/. Alles mit Bewertung high oder medium kommt auf die Shortlist, die GPT-6 Sol als Nächstes erhält.
So prüfst du die GPT-6 Luna-Shortlist
Vergleiche die Shortlist mit dem früheren Antwortschlüssel und schau zuerst auf die Recall. GPT-6 Luna hat jede betroffene Datei behalten und ein paar unnötige ergänzt.
GPT-6 Luna verengt 56 auf 16. Bild: Autor.
Eine Shortlist ist ein Hinweis, keine Grenze.
So nutzt du allowed_tools für gestaffelte Berechtigungen
allowed_tools ist ein tool_choice-Modus, der festlegt, welche Tools das Modell aufrufen darf, während die volle Tool-Liste bestehen bleibt. So bleibt der erste Durchlauf von GPT-6 Sol read-only: Die volle Liste ist auf jeder Anfrage definiert, aber nur Listen und Suchen sind aufrufbar.
defallowed(names):return{"type":"allowed_tools","mode":"auto","tools":[{"type":"function","name": n}for n in names]}
response = client.responses.create(
model="gpt-6-sol", instructions=INSTRUCTIONS, tools=TOOLS,# full list, every time
tool_choice=allowed(["list_files","search_code"]),
reasoning={"effort":"medium"},input=inspect_prompt, store=True,)Bereitgestellt von
Das Ändern von tools zwischen Phasen überschreibt das zwischengespeicherte Prefix. Der Function-Calling-Guide empfiehlt allowed_tools, wenn sich nur die aufrufbare Teilmenge ändern soll.
Warum startet ein Coding-Agent im Read-Only-Modus?
Ein Read-Only-Durchlauf trennt Diagnose von Aktion. GPT-6 Sol bekam die GPT-6 Luna-Shortlist mit dem klaren Hinweis, dass sie falsch sein kann, und seine Suchen nach v1-Imports, charge-Aufrufen und Webhook-Namen brachten alle betroffenen Dateien eigenständig zutage.
Es ging auch über die Liste hinaus, markierte Order-Modelle, den Order-Store, Serializer und den Ledger-Export als Downstream-Abhängigkeiten zum Prüfen. Keines davon brauchte am Ende Änderungen – aber das findest du nur durchs Lesen heraus. Ich würde allowed_tools für jeden Agenten beibehalten, der Dateien editiert.
So nutzt du Structured Outputs für einen Migrationsplan
Ein Migrationsplan ist die Stelle, an der sich der Agent vor Schreibzugriff auf konkrete Dateien festlegt. Beim Planen kommt read_file hinzu, und der Plan kommt über Structured Outputs zurück – mit abgeschalteten Tools:
plan = client.responses.parse(
model="gpt-6-sol", instructions=INSTRUCTIONS, tools=TOOLS, tool_choice="none",
reasoning={"effort":"medium"}, previous_response_id=last_id,input=PLAN_REQUEST, text_format=MigrationPlan,# files, evidence, risks)Bereitgestellt von
Der Plan deckte alle nötigen Änderungen ab und warnte, dass eine frische Order-ID bei einem Retry die v2-Metadaten verändert. Diese Warnung kehrt später zurück.
So verifizierst du einen strukturierten Migrationsplan
Bevor Schreibzugriff gewährt wird, prüft das Harness Struktur, Evidenz und Abdeckung des Plans.
Drei Checks testen einen Migrationsplan. Bild: Autor.
Der Plan bestand alle Gates. Er schlug außerdem vor, einen öffentlichen Parameter in client.py umzubenennen, um v2 zu spiegeln – im Cleanup-Abschnitt der Spez vorgeschlagen. Dieser Vorschlag wird zum Steering-Test.
So baust du einen GPT-6 Sol Coding-Agenten mit der Responses API
Ein GPT-6 Sol Coding-Agent nutzt eine Tool-Schleife: auf eine Response warten, ihre Funktionsaufrufe ausführen und Outputs zurückgeben. Unser Guide zur OpenAI Responses API erklärt Request- und Tool-Result-Formate. Diese Migration hält die Schleife auf einer WebSocket-Verbindung, weil Steering sie braucht.
with client.responses.connect()as conn:
conn.response.create(**base, previous_response_id=plan_id,input=[start_message])for event in conn:if event.type=="response.incomplete":
reason =getattr(event.response.incomplete_details,"reason",None)if reason =="steered":continue# keep reading for the automatic successorraise RuntimeError(reason or"response incomplete")if event.type!="response.completed":continue
calls =[i for i in event.response.output if i.type=="function_call"]ifnot calls:break# GPT-6 Sol says it's done here; the held-out tests decide whether it is
outputs =[{"type":"function_call_output","call_id": c.call_id,"output": tools.run(c.name, c.arguments)}for c in calls]
conn.response.create(**base, previous_response_id=event.response.id,input=outputs)Bereitgestellt von
base hält Modell, Instructions, Tools und Aufwand medium für Prompt-Caching konstant. GPT-6 Sol führte die sichtbaren Tests während der Arbeit aus, schrieb aber auch die meisten neuen Tests – sie taugen daher nicht als unabhängiger Check.
Wie funktioniert Steering während eines Turns in GPT-6 Sol?
Steering während des Turns fügt einer laufenden Response eine Anweisung hinzu, ohne sie abzubrechen. Nach response.created sendest du response.steer auf derselben Verbindung mit der ID dieser Response, und der Server wendet die Anweisung in einer Nachfolger-Response an.
Die neue Anforderung kam vom Storefront-Team: CheckoutClient-Signaturen „müssen exakt bleiben wie heute“, weil ein anderer Service sie aufruft. Ich wollte keinen Timer darüber entscheiden lassen, wann das ankommt, also beobachtet das Harness das Repository. Nach jedem Batch von Tool-Calls vergleicht es die öffentlichen Signaturen auf Disk mit den Originalen, und die erste Abweichung scharfstellt das Steering:
if steer_state =="idle"and signature_changes(repo):# CheckoutClient, compared with ast
steer_state ="armed"if event.type=="response.created"and steer_state =="armed":
conn.response.steer(previous_response_id=event.response.id,input=STEER_TEXT)
steer_state ="sent"Bereitgestellt von
So landet das Steering garantiert nach der widersprochenen Umbenennung – genau die Situation, die es zu testen gilt. Früher gesendet, wäre es nur ein längeres Prompt.
Der Server meldete dann den Steering-Lebenszyklus:
response.steer.accepted bedeutete, das Update ist in der Queue, noch nicht angewendet
response.incomplete beendete die ursprüngliche Response mit Grund steered
Eine nachfolgende response.created lief mit der neuen Anforderung weiter
Wartet die Response auf ein Tool-Result, sendet der Server response.steer.pending und hält das Steering, bis das Harness es zurückgibt. Beantworte Tool-Calls weiter, während ein Steering aussteht.
Was bleibt beim Steering unverändert?
Steering ändert, was das Modell als Nächstes tut. OpenAIs Guide ist klar: Ein Steer überschreibt nicht bereits gesendeten Output, macht frühere Aktionen nicht rückgängig und bricht bereits gestartete Tools nicht ab.
Als das Steering eintraf, lag die Umbenennung bereits in client.py auf Disk. GPT-6 Sol machte sie rückgängig, und ein zurückgehaltener Signatur-Check bestätigte später die finale Schnittstelle.
Einen Edit kann man zurückrollen. Ein Tool, das bereits ein externes System aufgerufen hat, hinterließe nichts rückgängig zu machen – protokolliere daher den Repo-Zustand, wenn jedes Steering ankommt.
Kann GPT-6 Sol eine Python-Codebasis migrieren?
In diesem Repository ja, aber nicht in einem Durchlauf. Die erste Migration erfüllte den ursprünglichen Vertrag, dann deckte die Deployment-Probe einen fehlenden Fall auf.
Was zeigte die zurückgehaltene Testsuite?
Als GPT-6 Sol die Migration als abgeschlossen meldete, bestand die zurückgehaltene Suite ohne Reparatur-Runde. Für Refunds ersetzte GPT-6 Sol die Addition durch ein kumulatives Lesen, das auch außer der Reihenfolge zugestellte Webhooks ignoriert:
- order.refunded_cents += data["amount_refunded"]
+ order.refunded_cents = max(order.refunded_cents, refunded["cents"])Bereitgestellt von
Für Idempotenz behielt GPT-6 Sol eine frische order_id pro Versuch bei und ergänzte im Order-Store einen Request-Cache, der Wiederholungen beantwortet, bevor sie v2 erreichen. Dieser Cache lebt im Prozessspeicher – gleich wichtig.
Können Structured Outputs falsch liegen?
Ja. Der erste Report bezeichnete einen aktualisierten Webhook-Test als Regression und ließ das Risiko von Retries über Server hinweg aus – obwohl der Plan diese Falle benannt hatte.
Structured Outputs validieren das Schema, nicht die Aussagen. Prüfe Report-Felder gegen aufgezeichnete Evidenz und nimm eine leere Risikoliste nie als Beweis, dass kein Risiko bleibt.
Was übersahen die Acceptance-Tests?
Die Suite übersah einen Retry, der an eine andere App-Instanz ging. Ich ergänzte eine Deployment-Probe mit zwei Clients, die sich einen Payment-Prozessor teilen, aber nicht denselben Prozessspeicher.
Die Probe schlug fehl. Der Retry auf der zweiten Instanz warf payments_adapter_v2.IdempotencyConflict – eine Adapter-Exception, die die Storefront nie sehen sollte.
Nur ein Deployment mit mehr als einem Prozess legt diesen Fehler offen – der Auslöser für die Reasoning-Eskalation.
So änderst du den Reasoning-Aufwand mitten im Gespräch
Ein configuration_update-Input ändert den Reasoning-Aufwand für die nächste und jede folgende Response, bis ein weiteres Update kommt. Der Aufwand auf Anfrage-Ebene bleibt unverändert, das gecachte Prefix überlebt. Nach dem Probenfehler sendete das Harness diese Anfrage, wie im Reasoning-Guide beschrieben:
Die Migrations-Requests setzen store=True, daher kann das Harness nach Schließen des WebSockets die gespeicherte Response-Kette mit einer regulären Responses-API-Anfrage fortsetzen.
response = client.responses.create(
model="gpt-6-sol", reasoning={"effort":"medium"},# unchanged, so the prefix survives
instructions=INSTRUCTIONS, tools=TOOLS, tool_choice=allowed(DIAGNOSE_TOOLS),
previous_response_id=last_id,input=[{"type":"configuration_update","reasoning":{"effort":"high"}},{"role":"user","content": probe_failure + DIAGNOSE_FIRST}],)
active_effort ="high"# the harness records it; the response won'tBereitgestellt von
GPT-6 Sol erhält den Fehler und die Deployment-Form, aber keinen Hinweis auf die Lösung. DIAGNOSE_TOOLS erlaubt Lesen und Testen, kein Editieren. Unveränderte Tools und text.format bewahren das gecachte Prefix.
Ein API-Detail ist unglücklich: response.reasoning.effort meldet nach einem Update weiterhin die Anfrage-Einstellung. Das Harness kann den aktiven Aufwand nicht aus der Response auslesen, daher zeichnet es den Wert beim Senden des Updates selbst auf und taggt jede spätere Response damit.
Hat die Reparatur bei high Aufwand funktioniert?
Ja. GPT-6 Sol verfolgte das Scheitern bis zum lokalen Store des zweiten Servers und folgte dann der frischen Order-ID in die Payment-Metadaten. Der geteilte Prozessor sah unterschiedliche Parameter für dieselbe request_id.
Der Fix machte die Order-ID zu einer Funktion der Request-ID, sodass jeder Server dieselbe berechnet:
GPT-6 Sol fügte außerdem einen sichtbaren Test für den Fall hinzu. Die Probe und die Acceptance-Suite bestanden, dann setzte ein configuration_update den Aufwand zurück auf medium. Der finale Report beschrieb das echte Scheitern diesmal korrekt.
Die Streamlit-App des Projekts spielt den gespeicherten Lauf ohne API-Calls ab. Das Video geht von der Übersicht zu den Steering-Events und dann zu den Acceptance- und Probe-Ergebnissen.
Streamlit spielt Migration und Reparatur ab. Video: Autor.
Was das nicht zeigt: ob medium dieselbe Zeile gefunden hätte. Ich habe nur den eskalierten Pfad gefahren, der Beleg ist also, dass high hier funktionierte – nicht, dass es nötig war.
Was kostet ein GPT-6 Sol Coding-Agent?
Dieser aufgezeichnete Lauf kostete 0,7082 $: 0,7051 $ für GPT-6 Sol und 0,0031 $ für GPT-6 Luna. Jeder Responses-API-Call liefert vier berechnungsrelevante Token-Zähler, daher bepreise jede Response separat mit den oben genannten Sätzen.
details = usage.input_tokens_details
cached, written = details.cached_tokens, details.cache_write_tokens
ordinary = usage.input_tokens - cached - written # cache writes have their own rate
cost =(
ordinary * PRICE_INPUT
+ cached * PRICE_CACHED_INPUT
+ written * PRICE_CACHE_WRITE
+ usage.output_tokens * PRICE_OUTPUT
)/1_000_000Bereitgestellt von
Über den gesamten Lauf kamen 91% von GPT-6 Sols Input aus dem Cache.
Plan und erster Report fügten jeweils ein Response-Schema hinzu und lasen nichts aus dem Cache. Der Prompt-Caching-Guide führt text.format unter den Einstellungen, die das Prefix ändern. Cache-Writes kosteten in diesem Lauf mehr als Output – halte daher Instructions und Tools konstant und erwarte, dass Requests mit zusätzlichem Schema ein neues Prefix schreiben.
Hat GPT-6 Luna Arbeit gespart?
Nicht nachweislich. GPT-6 Luna verengte 56 Dateien auf 16, während GPT-6 Sol zusätzlich 16 unabhängig öffnete. Ohne Baseline „ohne GPT-6 Luna“ kann ich nicht behaupten, dass die Shortlist das Gesamtlesen reduziert hat.
Wann sollte ein Coding-Agent GPT-6 Sol vs. GPT-6 Luna nutzen?
Nutze GPT-6 Sol dort, wo ein Fehlgriff teuer ist – also Planen, Editieren, Testfehler lesen – und GPT-6 Luna für enge Klassifizierung, die du prüfen kannst. In diesem Build verengte GPT-6 Luna einmal die Suche, und GPT-6 Sol traf jede Entscheidung, die Dateien veränderte.
Deployment-Checkliste für GPT-6 Sol Coding-Agenten
Eine produktive Payments-Migration braucht mehr Kontrollen als dieses lokale Experiment. Meistens liegen sie im Harness, nicht im Modell:
Jede Migration in einem disposable Branch, Worktree oder Container ausführen
Die Schleife bei einer festen Turn-Anzahl und Dollar-Grenze stoppen
Auch das Deployment-Setup testen: Checks über mehrere Instanzen in die zurückgehaltene Suite aufnehmen
Secrets und Kundendaten aus Prompts und Tool-Logs entfernen
Einen Menschen den finalen Diff vor dem Merge freigeben lassen
Die saubere Ausgangsversion für ein Rollback verfügbar halten
Der Check über mehrere Instanzen ist die Lehre dieses Laufs – teuer erkauft. Ein Testvertrag beweist nur, was er abdeckt, und jeder Punkt auf der Liste begrenzt den Schaden, wenn er weniger abdeckt als gedacht.
Abschlussgedanken
Northstar erreichte zuerst einen bestandenen Vertrag, während ein Retry auf einem anderen Server die Idempotenz noch brach – ein Risiko, das der Migrationsplan vor jedem Edit benannt hatte. Eine fehlgeschlagene Probe und eine gezielte Reparatur lieferten das Ergebnis, das der ursprüngliche Vertrag verfehlt hatte.
Ich würde den GPT-6 Luna-Triage-Schritt nur behalten, wenn er tatsächliches Lesen spart, GPT-6 Sol für Routineturns auf medium lassen und den Aufwand erhöhen, wenn ein unabhängiger Check scheitert. Vor allem würde ich Deployment-Checks vor dem ersten Lauf in den Vertrag schreiben – nicht nach der ersten Überraschung.
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.
FAQs
Funktioniert der WebSocket-Modus mit store=false oder Zero Data Retention?⌄
Ja. Die Verbindung hält den jüngsten Response-Zustand im Speicher, daher funktioniert previous_response_id mit store=false auf derselben Verbindung. Nach einem Reconnect ist dieser Zustand weg und die Anfrage gibt previous_response_not_found zurück.
Was passiert mit einem gequeueten Steer, wenn die WebSocket-Verbindung abbricht?⌄
Behandle es als unbekannt. Gequeuetes Steering lebt nur auf der aktuellen Verbindung, und Verbindungen dauern bis zu 60 Minuten. OpenAI rät daher, nicht anzunehmen, dass es überlebt hat. Logge jedes gesendete Steering und vergleiche es mit der Response-Historie, bevor du es erneut abspielst.
Kann ich das integrierte apply_patch-Tool von OpenAI mit GPT-6 Sol nutzen?⌄
Ja, die GPT-6 Sol-Modellseite führt apply_patch als unterstützt auf. Deine Anwendung wendet jeden Patch dennoch lokal an und braucht daher weiterhin eigene Pfad-Checks.
Teilen sich GPT-6 Sol und GPT-6 Luna denselben Gesprächszustand?⌄
Nein. Die Anwendung übergibt die GPT-6 Luna-Shortlist an die nächste GPT-6 Sol-Anfrage; die API-Calls teilen sich den Zustand nicht automatisch.
Sollte ich statt Datei-Tools das ganze Repository an GPT-6 Sol senden?⌄
Bei einem so kleinen Repository wie Northstar kannst du das tun. Der Haken: Ein eingefügtes Repository bleibt über previous_response_id im Gesprächskontext, daher verarbeitet jeder spätere Turn diese Tokens weiterhin – meist als gecachten Input. Eine Tool-Schleife fügt nur Dateien hinzu, die GPT-6 Sol anfordert, und hält jeden Edit als überprüfbaren Tool-Call fest.
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.
Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
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.
Hier migrieren wir Northstar Checkout, einen kleinen fiktiven Python-Checkout-Service, mit GPT-6 Sol von einem lokalen Zahlungsadapter v1 auf v2.
Konkret zeige ich dir, wie du:
Den ersten GPT-6 Sol API-Call machst und die Usage-Felder liest
Den Migrationsvertrag definierst, bevor das Modell das Repository sieht
GPT-6 Sol restriktive Datei- und Test-Tools gibst und den Zugriff mit
allowed_toolsstaffelstGPT-6 Luna für die Triage nutzt und GPT-6 Sol die Shortlist verifizieren lässt
Einen strukturierten Migrationsplan zurückgibst und ihn gegen bereits gelesene Dateien von GPT-6 Sol prüfst
Die Migration über WebSocket laufen lässt und sie nach Start der Edits steuerst
Den Reasoning-Aufwand erhöhst, nachdem eine unabhängige Deployment-Probe fehlschlägt
Die aufgezeichneten Kosten aus der API-Nutzung berechnest
Erkenntnisse auf dem Weg
Vier Einsichten würden meine nächste Version prägen:
Was ist GPT-6 Sol?
GPT-6 Sol ist die mittlere Stufe der GPT-6-Familie von OpenAI, die API-Model-ID ist
gpt-6-sol. Unser Leitfaden zu den GPT-6-Modellstufen deckt Launch und Benchmarks ab. OpenAIs GPT-6 Guidance ordnet GPT-6 Astra an die Spitze, GPT-6 Sol in die Mitte und GPT-6 Luna als günstigste Stufe ein.GPT-6 Sol hat ein Kontextfenster von 1.050.000 Tokens und liefert bis zu 128.000 Output-Tokens. Der Reasoning-Aufwand reicht von
nonebismaxund ist standardmäßigmedium. Chat Completions unterstützt die Funktionsaufrufe von GPT-6 Sol nur beinone, daher verwenden alle Anfragen hier die Responses API.Preisgestaltung und API-Support bestimmen, wie das Harness jede Anfrage sendet.
Was kostet die GPT-6 Sol API?
GPT-6 Sol kostet 2 $ pro Million Input-Tokens und 10 $ pro Million Output-Tokens für Anfragen bis 272.000 Input-Tokens, laut OpenAIs Preisseite. Zwischengespeicherter Input kostet 0,20 $ pro Million, Cache-Writes 2,50 $. GPT-6 Lunas Preise für dieselben vier Kategorien liegen bei 0,10 $, 0,01 $, 0,125 $ und 0,50 $.
Über 272.000 Input-Tokens wird die gesamte Anfrage mit dem 2-fachen Input- und Cache-Satz sowie dem 1,5-fachen Output-Satz abgerechnet. Keine Anfrage in diesem Projekt kam in die Nähe.
Welche API-Features nutzt dieses Tutorial?
Das Harness – die Python-Umgebung rund um das Modell – nutzt diese GPT-6-Regler:
Steering während der Antwort aktualisiert eine laufende Antwort
configuration_updateändert den Reasoning-Aufwand ohne das zwischengespeicherte Prefix neu zu schreibenallowed_toolslegt die aufrufbare Teilmenge pro Anfrage festStructured Outputs definieren die Felder für Plan und Report
Alle vier Regler bleiben in derselben Responses-API-Response-Kette.
Was bauen wir mit der GPT-6 Sol API?
Wir bauen einen Agenten, der Northstar Checkout von Payments Adapter v1 auf v2 umstellt. Beide Adapter sind lokale Platzhalter, die ich für dieses Experiment geschrieben habe – keine echten Payment-SDKs. Der vollständige Code, Fixtures und ein aufgezeichneter Lauf sind in diesem GitHub-Repository.
Das Repository mischt Payment-Code mit unabhängigen Modulen, daher muss GPT-6 Sol die betroffenen Dateien selbst finden. V2 bricht vier Adapterverträge:
Die Zahlungserstellung wechselt von
client.charge(...)zuclient.payments.create(...)Result-Dictionaries werden zu typisierten Objekten mit Beträgen vom Typ
MoneyAbgelehnte Karten liefern einen Status statt eine Exception zu werfen
Webhooks ändern Namen, Hülle und Signatur-Header
Suchen-und-Ersetzen erledigt die Methodenumbenennung. Keine der Verhaltensänderungen werden so abgedeckt.
Eine Migrationsschleife, zwei GPT-6-Modelle. Bild: Autor.
GPT-6 Sol erhält die Spezifikation, den Dateibaum und restriktive Tools, die stufenweise aufrufbar werden. Es weiß nicht, welche Dateien geändert werden müssen oder dass sich eine Anforderung ändern wird.
Warum ist diese API-Migration anspruchsvoll?
Zwei Teile der Spez sind Fallen. Keiner ist ein absichtlich eingeschleuster Bug; beide entstehen aus v2-Verhalten in Kombination mit vorhandenem Code:
Idempotenz. V2 vergleicht Parameter bei wiederholter
request_id, aber Checkout setzt bei jedem Versuch eine frischeorder_idin die Metadaten, deshalb wird ein naiver Retry abgelehnt statt dedupliziert.Refund-Totale. Der v2-Webhook
payment.refundedmeldet den bisher insgesamt erstatteten Betrag, während der alte Handler jeden Wert mit+=addiert.Beides übersteht einen Type-Checker. Du findest es nur, wenn du Checkout und Refunds End-to-End ausführst.
Zahlungsänderungen betreffen mehrere Northstar-Module. Bild: Autor.
Die Karte trennt direkte Adapter-Imports von Modulen, die vom Zahlungs-Verhalten abhängen. Diese indirekten Verbindungen sind der Grund, warum ein Antwortschlüssel für das gesamte Repository wichtig ist.
Wie testen wir die Migration?
Eine zurückgehaltene Acceptance-Suite, vor dem ersten Modellaufruf geschrieben, entscheidet über das Ergebnis. GPT-6 Sol sieht sie nie; das Harness führt sie mit pytest gegen die migrierte Kopie aus. Sie prüft, dass:
Checkout über v2 gelingt und ein Retry mit demselben Idempotency-Key nur einmal belastet
Eine abgelehnte Karte weiterhin den öffentlichen Fehler
CheckoutDeclinedauslöstEine Vollerstattung, zwei Teil-Erstattungen und ein erneut zugestellter Webhook stets korrekte Totale hinterlassen
CheckoutClient-Methodensignaturen unverändert bleibenKeine v1-Referenzen mehr vorhanden sind,
vendor/undMIGRATION.mdunberührt bleiben und die sichtbaren Tests bestehenDer ursprüngliche Code besteht bereits Checks für unveränderte Schnittstellen und geschützte Dateien; die restlichen Checks messen die Migration. Ein separater Antwortschlüssel listet die nötigen Änderungen – gelesen wird er nur vom Harness.
Die Verzeichnisse
acceptance/undprobes/liegen außerhalb der kopierten Repository-Version, die beiden Modellen zugänglich ist. Der Antwortschlüssel liegt unteracceptance/und kann daher weder in GPT-6 Lunas Input noch in den Dateibaum oder ein Repo-Tool gelangen.Das Read-Gate kann Pfade aus GPT-6 Sols eigenem Plan zurückgeben. Die Answer-Key-Coverage wird nur für die Auswertung aufgezeichnet; fehlende Ground-Truth-Pfade werden nie an GPT-6 Sol zurückgespielt.
Nach der Suite läuft eine Deployment-Probe. Keiner der Checks akzeptiert die „fertig“-Meldung des Modells als Beweis.
So richtest du die GPT-6 Sol API in Python ein
Du brauchst Python 3.10 oder neuer und einen API-Key mit Zugriff auf beide Modelle. Die Requirements beinhalten das
realtime-Extra für Steering:Unter macOS oder Linux verwende
source .venv/bin/activateundcp .env.example .envund trage dannOPENAI_API_KEY=...in.envein.Wenn dein Key mit der Responses API schon funktioniert, kannst du den nächsten Abschnitt überspringen.
Mach deinen ersten GPT-6 Sol API-Call
Die kleinste sinnvolle Anfrage bestätigt Key, Model-ID und die Usage-Felder, die du für die Kosten brauchst:
Die Antwort meldet den Aufwand
mediumundusageenthältcached_tokensundcache_write_tokens. Lasstemperatureundtop_pweg. Beide führen zu 400, wenn der Aufwand nichtnoneist.Erster GPT-6 Sol-Request liefert Usage. Bild: Autor.
Mit welchem Reasoning-Aufwand solltest du starten?
Starte mit
medium, dem Standard, und belasse die Einstellung auf Anfrage-Ebene für den gesamten Lauf dort. Die meisten Migrations-Turns sind Reads und kleine Edits. Die Deployment-Probe liefert später den Grund, den Aufwand zu erhöhen.So fügst du einem Coding-Agenten sichere Repository-Tools hinzu
Die Tool-Schicht bestimmt die Berechtigungen des Agenten. GPT-6 Sol bekommt diese Funktions-Tools mit
strict: true:list_filesundsearch_codefinden relevanten Coderead_fileliefert eine Repository-Datei zurückedit_fileändert genau ein Vorkommenrun_testsführt ein erlaubtes pytest-Target ausStrikte Schemas prüfen die Argument-Form, nicht die Pfadsicherheit, deshalb erzwingt Python die Schreibgrenze:
Der Pfad wird zuerst aufgelöst, daher schlagen
../und absolute Pfade fehl.edit_fileersetzt genau ein exaktes Match, undrun_testsakzeptiert nur Targets untertests/.Das Harness gibt einen blockierten Aufruf als
ERROR:Tool-Output zurück, und die Schleife läuft weiter. Unser Guide zum Agent-Harness-Engineering erklärt, warum diese Checks ins Harness und nicht ins Prompt gehören.So testest du die Dateigrenze
Rufe jedes Tool mit einem Input auf, den es ablehnen muss:
Ein Pfad mit
..Ein absoluter Pfad
Ein Write unter
vendor/Ein Test-Target mit Shell-Befehl
Keiner davon darf durchkommen. Ein Edit mit mehr als einer Übereinstimmung sollte nach mehr Kontext fragen. Eigene Funktionen bündeln die Regeln an einem gut testbaren Ort.
So nutzt du GPT-6 Luna für Repository-Triage
Repository-Triage ist eine enge Klassifizierungsaufgabe: Relevanz je Datei bewerten und v1-Referenzen zitieren. GPT-6 Luna erledigt genau diese Aufgabe und sonst nichts – und läuft zuerst, bevor GPT-6 Sol irgendetwas gesucht hat.
Der Input ist die Spez plus alle Python-Dateien unter
northstar/undtests/. Alles mit Bewertunghighodermediumkommt auf die Shortlist, die GPT-6 Sol als Nächstes erhält.So prüfst du die GPT-6 Luna-Shortlist
Vergleiche die Shortlist mit dem früheren Antwortschlüssel und schau zuerst auf die Recall. GPT-6 Luna hat jede betroffene Datei behalten und ein paar unnötige ergänzt.
GPT-6 Luna verengt 56 auf 16. Bild: Autor.
Eine Shortlist ist ein Hinweis, keine Grenze.
So nutzt du
allowed_toolsfür gestaffelte Berechtigungenallowed_toolsist eintool_choice-Modus, der festlegt, welche Tools das Modell aufrufen darf, während die volle Tool-Liste bestehen bleibt. So bleibt der erste Durchlauf von GPT-6 Sol read-only: Die volle Liste ist auf jeder Anfrage definiert, aber nur Listen und Suchen sind aufrufbar.Das Ändern von
toolszwischen Phasen überschreibt das zwischengespeicherte Prefix. Der Function-Calling-Guide empfiehltallowed_tools, wenn sich nur die aufrufbare Teilmenge ändern soll.Warum startet ein Coding-Agent im Read-Only-Modus?
Ein Read-Only-Durchlauf trennt Diagnose von Aktion. GPT-6 Sol bekam die GPT-6 Luna-Shortlist mit dem klaren Hinweis, dass sie falsch sein kann, und seine Suchen nach v1-Imports, charge-Aufrufen und Webhook-Namen brachten alle betroffenen Dateien eigenständig zutage.
Es ging auch über die Liste hinaus, markierte Order-Modelle, den Order-Store, Serializer und den Ledger-Export als Downstream-Abhängigkeiten zum Prüfen. Keines davon brauchte am Ende Änderungen – aber das findest du nur durchs Lesen heraus. Ich würde
allowed_toolsfür jeden Agenten beibehalten, der Dateien editiert.So nutzt du Structured Outputs für einen Migrationsplan
Ein Migrationsplan ist die Stelle, an der sich der Agent vor Schreibzugriff auf konkrete Dateien festlegt. Beim Planen kommt
read_filehinzu, und der Plan kommt über Structured Outputs zurück – mit abgeschalteten Tools:Der Plan deckte alle nötigen Änderungen ab und warnte, dass eine frische Order-ID bei einem Retry die v2-Metadaten verändert. Diese Warnung kehrt später zurück.
So verifizierst du einen strukturierten Migrationsplan
Bevor Schreibzugriff gewährt wird, prüft das Harness Struktur, Evidenz und Abdeckung des Plans.
Drei Checks testen einen Migrationsplan. Bild: Autor.
Der Plan bestand alle Gates. Er schlug außerdem vor, einen öffentlichen Parameter in
client.pyumzubenennen, um v2 zu spiegeln – im Cleanup-Abschnitt der Spez vorgeschlagen. Dieser Vorschlag wird zum Steering-Test.So baust du einen GPT-6 Sol Coding-Agenten mit der Responses API
Ein GPT-6 Sol Coding-Agent nutzt eine Tool-Schleife: auf eine Response warten, ihre Funktionsaufrufe ausführen und Outputs zurückgeben. Unser Guide zur OpenAI Responses API erklärt Request- und Tool-Result-Formate. Diese Migration hält die Schleife auf einer WebSocket-Verbindung, weil Steering sie braucht.
basehält Modell, Instructions, Tools und Aufwandmediumfür Prompt-Caching konstant. GPT-6 Sol führte die sichtbaren Tests während der Arbeit aus, schrieb aber auch die meisten neuen Tests – sie taugen daher nicht als unabhängiger Check.Wie funktioniert Steering während eines Turns in GPT-6 Sol?
Steering während des Turns fügt einer laufenden Response eine Anweisung hinzu, ohne sie abzubrechen. Nach
response.createdsendest duresponse.steerauf derselben Verbindung mit der ID dieser Response, und der Server wendet die Anweisung in einer Nachfolger-Response an.Die neue Anforderung kam vom Storefront-Team:
CheckoutClient-Signaturen „müssen exakt bleiben wie heute“, weil ein anderer Service sie aufruft. Ich wollte keinen Timer darüber entscheiden lassen, wann das ankommt, also beobachtet das Harness das Repository. Nach jedem Batch von Tool-Calls vergleicht es die öffentlichen Signaturen auf Disk mit den Originalen, und die erste Abweichung scharfstellt das Steering:So landet das Steering garantiert nach der widersprochenen Umbenennung – genau die Situation, die es zu testen gilt. Früher gesendet, wäre es nur ein längeres Prompt.
Der Server meldete dann den Steering-Lebenszyklus:
response.steer.acceptedbedeutete, das Update ist in der Queue, noch nicht angewendetresponse.incompletebeendete die ursprüngliche Response mit GrundsteeredEine nachfolgende
response.createdlief mit der neuen Anforderung weiterWartet die Response auf ein Tool-Result, sendet der Server
response.steer.pendingund hält das Steering, bis das Harness es zurückgibt. Beantworte Tool-Calls weiter, während ein Steering aussteht.Was bleibt beim Steering unverändert?
Steering ändert, was das Modell als Nächstes tut. OpenAIs Guide ist klar: Ein Steer überschreibt nicht bereits gesendeten Output, macht frühere Aktionen nicht rückgängig und bricht bereits gestartete Tools nicht ab.
Als das Steering eintraf, lag die Umbenennung bereits in
client.pyauf Disk. GPT-6 Sol machte sie rückgängig, und ein zurückgehaltener Signatur-Check bestätigte später die finale Schnittstelle.Einen Edit kann man zurückrollen. Ein Tool, das bereits ein externes System aufgerufen hat, hinterließe nichts rückgängig zu machen – protokolliere daher den Repo-Zustand, wenn jedes Steering ankommt.
Kann GPT-6 Sol eine Python-Codebasis migrieren?
In diesem Repository ja, aber nicht in einem Durchlauf. Die erste Migration erfüllte den ursprünglichen Vertrag, dann deckte die Deployment-Probe einen fehlenden Fall auf.
Was zeigte die zurückgehaltene Testsuite?
Als GPT-6 Sol die Migration als abgeschlossen meldete, bestand die zurückgehaltene Suite ohne Reparatur-Runde. Für Refunds ersetzte GPT-6 Sol die Addition durch ein kumulatives Lesen, das auch außer der Reihenfolge zugestellte Webhooks ignoriert:
Für Idempotenz behielt GPT-6 Sol eine frische
order_idpro Versuch bei und ergänzte im Order-Store einen Request-Cache, der Wiederholungen beantwortet, bevor sie v2 erreichen. Dieser Cache lebt im Prozessspeicher – gleich wichtig.Können Structured Outputs falsch liegen?
Ja. Der erste Report bezeichnete einen aktualisierten Webhook-Test als Regression und ließ das Risiko von Retries über Server hinweg aus – obwohl der Plan diese Falle benannt hatte.
Structured Outputs validieren das Schema, nicht die Aussagen. Prüfe Report-Felder gegen aufgezeichnete Evidenz und nimm eine leere Risikoliste nie als Beweis, dass kein Risiko bleibt.
Was übersahen die Acceptance-Tests?
Die Suite übersah einen Retry, der an eine andere App-Instanz ging. Ich ergänzte eine Deployment-Probe mit zwei Clients, die sich einen Payment-Prozessor teilen, aber nicht denselben Prozessspeicher.
Die Probe schlug fehl. Der Retry auf der zweiten Instanz warf
payments_adapter_v2.IdempotencyConflict– eine Adapter-Exception, die die Storefront nie sehen sollte.Nur ein Deployment mit mehr als einem Prozess legt diesen Fehler offen – der Auslöser für die Reasoning-Eskalation.
So änderst du den Reasoning-Aufwand mitten im Gespräch
Ein
configuration_update-Input ändert den Reasoning-Aufwand für die nächste und jede folgende Response, bis ein weiteres Update kommt. Der Aufwand auf Anfrage-Ebene bleibt unverändert, das gecachte Prefix überlebt. Nach dem Probenfehler sendete das Harness diese Anfrage, wie im Reasoning-Guide beschrieben:Die Migrations-Requests setzen
store=True, daher kann das Harness nach Schließen des WebSockets die gespeicherte Response-Kette mit einer regulären Responses-API-Anfrage fortsetzen.GPT-6 Sol erhält den Fehler und die Deployment-Form, aber keinen Hinweis auf die Lösung.
DIAGNOSE_TOOLSerlaubt Lesen und Testen, kein Editieren. Unveränderte Tools undtext.formatbewahren das gecachte Prefix.Ein API-Detail ist unglücklich:
response.reasoning.effortmeldet nach einem Update weiterhin die Anfrage-Einstellung. Das Harness kann den aktiven Aufwand nicht aus der Response auslesen, daher zeichnet es den Wert beim Senden des Updates selbst auf und taggt jede spätere Response damit.Hat die Reparatur bei
highAufwand funktioniert?Ja. GPT-6 Sol verfolgte das Scheitern bis zum lokalen Store des zweiten Servers und folgte dann der frischen Order-ID in die Payment-Metadaten. Der geteilte Prozessor sah unterschiedliche Parameter für dieselbe
request_id.Der Fix machte die Order-ID zu einer Funktion der Request-ID, sodass jeder Server dieselbe berechnet:
GPT-6 Sol fügte außerdem einen sichtbaren Test für den Fall hinzu. Die Probe und die Acceptance-Suite bestanden, dann setzte ein
configuration_updateden Aufwand zurück aufmedium. Der finale Report beschrieb das echte Scheitern diesmal korrekt.Die Streamlit-App des Projekts spielt den gespeicherten Lauf ohne API-Calls ab. Das Video geht von der Übersicht zu den Steering-Events und dann zu den Acceptance- und Probe-Ergebnissen.