OpenAI: o3 (batch)
OpenAI o3 ist ein Reasoning-Modell für mehrstufige Aufgaben in Mathematik, Naturwissenschaften, Programmierung und Bildanalyse. Es gibt Text aus und unterstützt strukturierte Antworten und den Werkzeugeinsatz. Damit eignet es sich zur Untersuchung eines technischen Problems und zur Erstellung einer beleggestützten Erklärung oder eines Lösungsvorschlags.
Über das Modell
Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.
o3 ist OpenAIs vielseitiges Reasoning-Modell der o-Serie für komplexe Aufgaben. Der Hersteller hebt Mathematik, Naturwissenschaften, Programmierung, visuelles Schlussfolgern, technisches Schreiben und das Befolgen von Anweisungen hervor. Es nimmt Text und Bilder entgegen und erzeugt Text, sodass eine Aufgabe eine schriftliche Problemstellung, Code und ein Diagramm verbinden kann, statt jede Quelle als isolierte Frage zu behandeln. Das angestrebte Ergebnis ist eine durchdachte Antwort auf ein mehrstufiges Problem mit den Informationen, die zur Beurteilung dieser Antwort benötigt werden.
Stellen Sie bei einer mathematischen oder naturwissenschaftlichen Frage das vollständige Problem, Definitionen, bekannte Größen, Einheiten und Bedingungen bereit. Geben Sie an, ob Sie eine Herleitung, ein numerisches Ergebnis, einen Vergleich von Hypothesen oder eine Erklärung für eine bestimmte Zielgruppe benötigen. Ein beispielhafter Ausgabeauftrag lautet: Benennen Sie die relevanten Annahmen, stellen Sie die Lösung mit ihren Einheiten dar und erläutern Sie, welche bereitgestellten Fakten sie stützen. Fragen Sie nach einer nützlichen Erklärung in der abschließenden Antwort; OpenAIs interne Reasoning-Token werden nicht als ungefiltertes Arbeitsprotokoll des Modells offengelegt.
Stellen Sie bei Softwareaufgaben den relevanten Code, das erwartete Verhalten und den beobachteten Fehler bereit, einschließlich der genauen Fehlermeldung oder Eingabe, die ihn sichtbar macht. Bitten Sie o3, die Symptome mit einer plausiblen Ursache zu verknüpfen und eine gezielte Änderung mit Erklärung vorzuschlagen. Eine visuelle Aufgabe kann ein Diagramm, einen Screenshot oder ein grafisch dargestelltes Ergebnis enthalten: Benennen Sie die Frage sowie die wichtigen Beschriftungen oder Bereiche, bewahren Sie einen lesbaren Maßstab und fordern Sie eine Schlussfolgerung an, die sich auf das tatsächlich Sichtbare bezieht. Diese Vorbereitung gibt dem Modell ein definiertes Problem und ein konkretes Ausgabeziel statt eines unbegrenzten Auftrags, alles zu untersuchen.
OpenAI nennt ein Kontextfenster von 200.000 Token, eine maximale Ausgabe von 100.000 Token und einen Wissensstand bis zum 1. Juni 2024. Internes Schlussfolgern beansprucht neben der sichtbaren Antwort Kontext- und Ausgabekapazität. Die maximale Ausgabe ist daher keine Zusage von 100.000 sichtbaren Antwort-Token, und der Kontext bildet kein zusätzliches unabhängiges Ausgabekontingent. Lassen Sie nach dem Eingabematerial Platz für die Analyse und das gewünschte Ergebnis. Der Reasoning-Leitfaden des Herstellers beschreibt unvollständige Antworten beim Erreichen einer Kontext- oder Ausgabegrenze; dies kann geschehen, bevor eine sichtbare Antwort erscheint.
Die genaue o3-Spezifikation dokumentiert die Schnittstellen Chat Completions, Responses und Batch sowie Streaming, Structured Outputs, Funktionsaufrufe, Datei-Uploads, Bildeingaben, Dateisuche und Prompt-Caching. Zu den dokumentierten Werkzeugen zählen Web- und Dateisuche, Codeinterpretation, Bilderzeugung und MCP-Verbindungen. Ein Suchergebnis oder eine Berechnung liefert zusätzliche Belege für die Aufgabe, während ein Funktionsaufruf eine Operation von der umgebenden Anwendung anfordert. Halten Sie die zurückgegebenen Belege mit der Frage verknüpft, die sie beantworten, und unterscheiden Sie einen Handlungsvorschlag von einem bestätigten Ergebnis. Die eigene Ausgabe des Modells bleibt Text, auch wenn ein Werkzeug zur Bilderzeugung ein separates Ergebnisartefakt erstellt.
OpenAIs Reasoning-Leitfaden empfiehlt einfache, direkte Anweisungen mit klaren Grenzen zwischen Anweisungen und Ausgangsmaterial. Geben Sie das Ziel, die Bedingungen und das benötigte Antwortformat an, statt den privaten Denkprozess des Modells vorzugeben. Nutzen Sie Beispiele, wenn sie ein schwieriges Format oder eine Entscheidungsregel verdeutlichen, und halten Sie sie mit den tatsächlichen Anforderungen in Einklang. Kennzeichnen Sie bei einem langen technischen Dokument die Abschnitte und fragen Sie nach Passagen oder Beziehungen, die für eine bestimmte Frage wichtig sind; benennen Sie bei einer Codeprüfung das Verhalten und Risiko, das untersucht werden soll.
Ein nützliches Ergebnis von o3 kann eine ausgearbeitete technische Erklärung, eine Diagrammanalyse, eine dokumentierte Codekorrektur oder ein durch das bereitgestellte Material gestützter Vergleich sein. Machen Sie unbelegte Annahmen und fehlende Informationen ausdrücklich kenntlich und prüfen Sie entscheidende Berechnungen oder das Codeverhalten anhand der ursprünglichen Aufgabe. Aufgrund seines Wissensstands benötigt das Modell für aktuelle Fakten bereitgestelltes Material oder ein geeignetes Informationswerkzeug. Klare Belege, ein ausdrückliches Abschlusskriterium und genügend Ausgaberaum helfen dabei, aus einer breiten Reasoning-Aufgabe ein Ergebnis zu machen, das eine andere Person prüfen und nutzen kann.
Ailoot Ultra · Stapelverarbeitung POST /v1/batches openai/o3:batch
openai/o3:batchStart
OpenAI o3 ist ein Reasoning-Modell für mehrstufige Aufgaben in Mathematik, Naturwissenschaften, Programmierung und Bildanalyse. Es gibt Text aus und unterstützt strukturierte Antworten und den Werkzeugeinsatz. Damit eignet es sich zur Untersuchung eines technischen Problems und zur Erstellung einer beleggestützten Erklärung oder eines Lösungsvorschlags.
- Zulässige Eingaben
- Text
- Ergebnisse
- Text
In Ailoot verfügbar · Eingaben und Methoden
Ailoot Ultra · Stapelverarbeitung POST /v1/batches
- Eingabetypen
text- Ausgabetypen
text- Ausgabeformat
- eingebettetes JSON unter results[].response.body
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldendpoint | Typstring | AnforderungErforderlich | Werte und Limits /v1/chat/completions | Standard— |
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits openai/o3:batch | Standard— |
Feldrequests | Typbatch_item[] | AnforderungErforderlich | Werte und Limits Mindestanzahl Elemente: 1 | Standard— |
Feldrequests[].custom_id | Typstring | AnforderungErforderlich | Werte und Limits | Standard— |
Feldrequests[].body.messages | Typmessage[] | AnforderungErforderlich | Werte und Limits | Standard— |
Feldcompletion_window | Typstring | AnforderungOptional | Werte und Limits 24h | Standard— |
Feldprovider | Typobject|null | AnforderungOptional | Werte und Limits | Standard— |
Feldrequests[].body.model | Typstring | AnforderungOptional | Werte und Limits openai/o3:batch, openai/o3 | Standard— |
Feldprovider.only | Typstring[] | AnforderungOptional | Werte und Limits openai | Standard— |
Feldprovider.allow_fallbacks | Typboolean|null | AnforderungOptional | Werte und Limits false, null | Standard— |
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametercontent_type | Vertragapplication/json |
Parameterrequired | Vertragendpoint, model, requests |
Parametermaterial_types | Vertragtext |
Parameterrepresentation | Vertrageingebettete requests[]; jedes Element enthält custom_id und body |
Parameterrequest_endpoint_profile | Vertrag/v1/chat/completions |
Parameterfile_material | VertragDer Aufrufer kann tatsächliches UTF-8-JSONL lokal in requests[] einlesen. Es werden weder ein Upload-Zweck noch input_file_id oder eine Dateireferenz verwendet. Fehlendes oder leeres Kundenmaterial stoppt die Vorbereitung vor POST. |
Parameterserialization_order | Vertragendpoint, model, provider (falls angegeben), completion_window (falls angegeben), requests als letztes Feld |
Parameteroptional_controls | Vertragprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | VertragAnfragekörper für Text Chat Completions in der dokumentierten Inline-Batch-Struktur. |
Lebenszyklus: asynchronous
GET /v1/batches/{operation_id} · die tatsächliche response.id der ursprünglichen Erstellungsantwort; derselbe Nutzer/Schlüssel/dieselbe Gruppe
Tarife
Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.
- Schnellmodus
- Nicht angegeben Wenn der Schnellmodus ausgewählt ist
- Flex-Modus
- Nicht angegeben Wenn der Modus flex ausgewählt ist
- Maximaler Denkaufwand
- Nicht angegeben Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird
- Preise für explizites Caching
- Nicht aktiviert Wenn explizites Caching angefordert wird
Ailoot-Tarife
Preise nach Konfiguration
Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.
| Konfiguration | Tarifstaffel | Kontexttoken, mehr als | Kontexttoken, bis einschließlich | Gebühr |
|---|---|---|---|---|
| KonfigurationBasistarife für Token | TarifstaffelGrundtarif | Kontexttoken, mehr als— | Kontexttoken, bis einschließlichKeine Obergrenze | Gebühr Eingabe · Eingabetoken $0.002 / 1K Token Ausgabe · Ausgabetoken $0.008 / 1K Token Eingabe · Cache-Lesen $0.0005 / 1K Token Eingabe · Cache-Schreiben — / 1K Token Eingabe · Cache-Schreiben, 1 Stunde — / 1K Token |
| KonfigurationAnfragelängenstufe 1 | Tarifstaffel— | Kontexttoken, mehr als0 | Kontexttoken, bis einschließlichKeine Obergrenze | Gebühr Eingabe · Eingabetoken $0.002 / 1K Token Ausgabe · Ausgabetoken $0.008 / 1K Token Eingabe · Cache-Lesen $0.0005 / 1K Token Eingabe · Cache-Schreiben — / 1K Token Eingabe · Cache-Schreiben, 1 Stunde — / 1K Token |
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Beispielanfragen
Ailoot Ultra · Stapelverarbeitung
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"openai/o3:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
import json, os
from pathlib import Path
from urllib.request import Request, urlopen
def prepare_requests(customer_path):
path = Path(customer_path)
if not path.is_file(): raise ValueError("Customer JSONL file is missing")
items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
if not items: raise ValueError("Customer JSONL contains no requests")
ids = set()
for item in items:
if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
cid = item["custom_id"]
if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
ids.add(cid)
if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
supplied_model = item["body"].get("model")
if supplied_model is not None and supplied_model not in ['openai/o3:batch', 'openai/o3']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"openai/o3:batch", "requests":items}
if __name__ == "__main__":
material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
body = prepare_requests(material)
key = os.environ.get("AILOOT_API_KEY", "")
if not key: raise SystemExit("Set AILOOT_API_KEY")
request = Request("https://api.ailoot.ai/v1/batches", data=json.dumps(body, ensure_ascii=False).encode("utf-8"), headers={"Authorization":"Bearer " + key, "Content-Type":"application/json"}, method="POST")
with urlopen(request) as response:
raw = response.read()
Path("batch-create-response.json").write_bytes(raw)
print(raw.decode("utf-8"))
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
Ergebnisse abrufen und speichern
Ailoot Ultra · Stapelverarbeitung
eingebettetes JSON unter results[].response.body
GET /v1/batches/{operation_id}
Auftragsstatus prüfen
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
Alle fertiggestellten Ergebnisse aufbewahren
Bewahren Sie jede vollständig zurückgegebene Antwort, Datei und jeden Inhaltsteil auf.
Das vollständige ursprüngliche Status-JSON, jedes Ergebnis/jede custom_id und den vollständigen Antwort- oder Fehlerkörper aufbewahren. Abgeschlossene results[] ohne Filterung als JSONL speichern.
Wenn die ursprüngliche Antwort geprüft werden muss
Die ursprüngliche Vorgangs-ID beibehalten. Bei 503 result_pending_check gilt X-Should-Retry:false; einen ursprünglichen Batch mit unbekanntem Ausgang niemals erneut einreichen.
Antwortfelder
| Feld | Typ |
|---|---|
Feldresults[].custom_id | Typstring |
Feldresults[].response.body.choices[].message.content | Typstring|null |
Feldresults[].error | Typobject|null |
Feldusage | Typobject|null |
Feldid | Typstring |
Feldmodel | Typstring |
Feldendpoint | Typstring |
Feldstatus | Typstring |
Feldrequest_counts | Typobject |
Feldresults[].id | Typstring |
Feldresults[].response.status_code | Typinteger |
Feldresults[].response.request_id | Typstring |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungUngültige Struktur der dokumentierten Inline-Einbettung, doppelte Schlüssel, ungültige Identitätsangaben zu einem Element oder ein Konflikt mit den konfigurierten Modellfähigkeiten. | Nächster SchrittDie angegebenen Felder vor jeder neuen Einreichung korrigieren. |
Antwort401 · authentication_error | BedingungUngültiger API-Schlüssel. | Nächster SchrittDen autorisierten Ailoot-Schlüssel verwenden. |
Antwort403 · permission_error | BedingungGruppe für Stapelverarbeitung nicht verfügbar. | Nächster SchrittDie Berechtigung des Schlüssels bzw. der Gruppe prüfen. |
Antwort422 · invalid_request_error | BedingungStapelverarbeitung wird über das Guthaben abgerechnet; die Erstellung über ein Abonnement wird abgelehnt. | Nächster SchrittDie autorisierte Gruppe mit Guthabenabrechnung verwenden. |
Antwort422 · price_unavailable | BedingungFür die Batch-Eingabe kann kein Preisangebot erstellt werden. | Nächster SchrittAntwort aufbewahren; die dokumentierte Eingabe der API-Familie verwenden. |
Antwort402 · billing_error | BedingungReservierung für Stapelverarbeitung nicht verfügbar. | Nächster SchrittDie Zulassung klären, bevor eine neue Anfrage gestellt wird. |
Antwort503 · price_unavailable | BedingungMethodenpreis bzw. native Tarife für Stapelverarbeitung nicht verfügbar. | Nächster SchrittAntwort aufbewahren; keine anderen Preise einsetzen. |
Antwort503 · api_error | BedingungDie genaue Anbieterroute ist nicht verfügbar. | Nächster SchrittAntwort zur Reparatur der Route aufbewahren. |
Antwort503 · result_pending_check | BedingungDas ursprüngliche Ergebnis muss geprüft werden; X-Should-Retry:false. | Nächster SchrittDie ursprüngliche operation_id/id beibehalten und ihren Status lesen; den ursprünglichen POST niemals wiederholen. |
Antwort404 · not_found | BedingungDer Batch-Vorgang, dessen Status abgefragt wird, ist nicht vorhanden oder gehört einer anderen Identität. | Nächster SchrittDie genaue ursprüngliche id und denselben Nutzer/Schlüssel/dieselbe Gruppe verwenden. |
Aliasnamen
Modellaliasnamen
Ailoot Ultra openai/o3:batch
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
FAQ · OpenAI: o3 (batch)
- Welche Eingaben und Ergebnisse sind verfügbar?
POST /v1/batches·openai/o3:batch:text→text- Welche Felder verwendet die Anfrage?
POST /v1/batches·openai/o3:batch:endpoint,model,requests,completion_window,provider- Welche Grenzen gelten?
POST /v1/batches·openai/o3:batch:requests.min_items:1