OpenAI: GPT-4.1 Nano (batch)
GPT-4.1 Nano ist das kompakte, schnell reagierende Mitglied der GPT-4.1-Familie für genau spezifizierte Text- und Bildaufgaben. Sein großer Kontext, Structured Outputs und Funktionsaufrufe unterstützen Klassifikation, Extraktion und gezielte Anwendungsschritte.
Ü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.
GPT-4.1 Nano ist OpenAIs schnellstes Mitglied der GPT-4.1-Familie, ausgelegt für Anweisungsbefolgung und Werkzeugaufrufe ohne gesonderten Denkschritt. Es nimmt Text und Bilder entgegen und erzeugt Text. Nano eignet sich für eine klar definierte Operation, bei der die Anwendung eine kompakte Antwort, einen Satz von Feldern oder die nächste Werkzeuganfrage statt einer umfassenden Untersuchung benötigt.
Ein nützliches Beispiel ist die Einordnung eingehender Nachrichten in vorgegebene Kategorien. Erklären Sie jede Kategorie und die Darstellung mehrdeutiger oder nicht passender Nachrichten. Verlangen Sie die Kategorie zusammen mit der stützenden Formulierung aus der Quelle. Definieren Sie für die Extraktion Feldnamen, zulässige Werte und den Umgang mit fehlenden Informationen. Stellen Sie für eine kurze Schreibaufgabe die Fakten bereit und verlangen Sie die konkrete Passage, die der nächste Anwendungsschritt benötigt. Beispiele und Einschränkungen sollten knapp genug bleiben, um auch bei einer großen Quellensammlung klar zu sein.
Der Hersteller nennt ein Kontextfenster von 1.047.576 Token, eine maximale Ausgabe von 32.768 Token und einen Wissensstand bis zum 1. Juni 2024. Diese Spezifikationen entsprechen dem Fenster von GPT-4.1 Mini, während Nano seine eigenständige Modellidentität und auf schnelle Reaktion ausgerichtete Rolle behält. Kennzeichnen Sie Dokumente und Gesprächsabschnitte, nehmen Sie nur operationsrelevanten Kontext auf und reservieren Sie Platz für die vollständige Antwort. Suchergebnisse oder bereitgestellter Referenztext können Fakten liefern, die neuer als das gelernte Wissen des Modells sind.
Nano unterstützt Streaming und Structured Outputs. Eine schemabeschränkte Abschlussantwort dient einem anderen Zweck als ein Funktionsaufruf: Die eine liefert der Anwendung ein fertiges Ergebnis, der andere fordert sie zu einer Operation auf. Structured Outputs unterstützt eine Teilmenge von JSON Schema. Definieren Sie erforderliche Eigenschaften und eine klare Darstellung unbekannter Werte. Behandeln Sie Ablehnungen und unvollständige Antworten separat und prüfen Sie extrahierte Werte anhand der Eingabe, statt eine gültige Form mit einer richtigen Schlussfolgerung gleichzusetzen.
Zum dokumentierten Werkzeugsatz gehören Funktionsaufrufe, Dateisuche, Codeausführung, MCP-Verbindungen und ein separates Werkzeug zur Bilderzeugung. Die Anwendung liefert Werkzeugbeschreibungen und Schemata, führt eigene Funktionen aus und gibt deren tatsächliche Ergebnisse zurück. Für den Nano-Snapshot vom 14. April 2025 empfiehlt OpenAI ausdrücklich, parallele Werkzeugaufrufe zu deaktivieren, weil das Modell dasselbe Werkzeug in einem Schritt mehrfach anfordern kann. Das ist ein snapshotspezifischer Ausführungshinweis, kein Grund, mehrere vorgeschlagene Aufrufe als abgeschlossene Aktionen zu interpretieren.
Bildeingaben ergänzen eine Textaufgabe um visuelle Belege, etwa zum Lesen einer sichtbaren Beschriftung oder zur Beschreibung des Zustands in einem Screenshot. Verwenden Sie unterstützte PNG-, JPEG-, WebP- oder nicht animierte GIF-Bilder, halten Sie Text lesbar und erklären Sie die wichtige Beobachtung. Der Bildleitfaden nennt Schwierigkeiten bei kleinem oder gedrehtem Text, präzisen räumlichen Beziehungen, Objektzählungen und einigen nicht lateinischen Schriften. Ergänzen Sie umgebenden Kontext, wenn ein Ausschnitt allein eine Beschriftung oder ein Diagramm mehrdeutig machen würde. Nanos eigene Antwort ist Text; ein Werkzeug zur Bilderzeugung liefert ein eigenes separates Artefakt. In OpenAIs dokumentiertem Ablauf zur Bildverarbeitung ist die gesamte Anfragegröße auf 512 MB begrenzt; eine Anfrage kann bis zu 1.500 Bilder enthalten. Bilder und Text müssen außerdem in den Kontext des Modells passen.
Im Dateiablauf des Herstellers erhält ein bildfähiges Modell sowohl extrahierten Text als auch Seitenbilder aus PDFs. Andere Dokumentformate liefern extrahierten Text; bei Tabellen werden bis zu den ersten 1.000 Zeilen pro Blatt ergänzend berücksichtigt. Eine Datei muss kleiner als 50 MB sein, zusammen dürfen die Dateien einer Anfrage 50 MB umfassen. Chat Completions unterstützt PDF-Dateiteile, während der dokumentierte Responses-Ablauf weitere Dateitypen akzeptiert. Eingebettete Diagramme in Nicht-PDF-Dokumenten werden nicht als Bildinhalt übergeben. Eine PDF-Darstellung ist daher hilfreich, wenn die visuellen Belege wichtig sind.
OpenAI dokumentiert Prompt-Caching für Nano und Predicted Outputs für die GPT-4.1 Nano-Reihe. Prompt-Caching verwendet im Herstellerdienst ein Eingabepräfix erneut, das die Voraussetzungen dafür erfüllt. Predicted Outputs liefert dagegen weitgehend bekannten Ausgabetext für eine Bearbeitung, etwa die Überarbeitung eines Dokuments oder einer Codedatei unter Erhaltung unveränderter Teile. Der Vorhersagepfad ist rein textbasiert und schließt unter anderem Funktionsaufrufe, logprobs und max_completion_tokens aus. Wählen Sie den Pfad passend zur tatsächlichen Operation und halten Sie sein Ergebnis mit der ursprünglichen Quelle verbunden.
Der Hersteller dokumentiert außerdem überwachtes Fine-Tuning und direkte Präferenzoptimierung für Nanos benannten GPT-4.1-Snapshot. Trainingsbeispiele und bevorzugte gegenüber verworfenen Antworten passen ein Modell an eine wiederkehrende Aufgabe an. Sie unterscheiden sich vom Kontext einer gewöhnlichen Anfrage. Beginnen Sie für einen praktischen Extraktions- oder Klassifikationsschritt mit klaren Kategorien, Beispielen und einem ausdrücklichen Abschlussformat. Prüfen Sie dann, ob die zurückgegebenen Felder die im nächsten Schritt benötigten Fakten erhalten.
Ailoot Ultra · Stapelverarbeitung POST /v1/batches openai/gpt-4.1-nano:batch
openai/gpt-4.1-nano:batchStart
GPT-4.1 Nano ist das kompakte, schnell reagierende Mitglied der GPT-4.1-Familie für genau spezifizierte Text- und Bildaufgaben. Sein großer Kontext, Structured Outputs und Funktionsaufrufe unterstützen Klassifikation, Extraktion und gezielte Anwendungsschritte.
- 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/gpt-4.1-nano: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/gpt-4.1-nano:batch, openai/gpt-4.1-nano | 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.0001 / 1K Token Ausgabe · Ausgabetoken $0.0004 / 1K Token Eingabe · Cache-Lesen $0.000025 / 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.0001 / 1K Token Ausgabe · Ausgabetoken $0.0004 / 1K Token Eingabe · Cache-Lesen $0.000025 / 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/gpt-4.1-nano: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/gpt-4.1-nano:batch', 'openai/gpt-4.1-nano']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"openai/gpt-4.1-nano: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/gpt-4.1-nano:batch
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
FAQ · OpenAI: GPT-4.1 Nano (batch)
- Welche Eingaben und Ergebnisse sind verfügbar?
POST /v1/batches·openai/gpt-4.1-nano:batch:text→text- Welche Felder verwendet die Anfrage?
POST /v1/batches·openai/gpt-4.1-nano:batch:endpoint,model,requests,completion_window,provider- Welche Grenzen gelten?
POST /v1/batches·openai/gpt-4.1-nano:batch:requests.min_items:1