OpenAI: GPT-4.1 Nano (batch)
GPT-4.1 Nano is het compacte, snel reagerende lid van de GPT-4.1-familie voor nauwkeurig gespecificeerde tekst- en beeldtaken. De grote context, Structured Outputs en functieaanroepen ondersteunen classificatie, extractie en gerichte toepassingsstappen.
Over het model
Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.
GPT-4.1 Nano is OpenAI’s snelste lid van de GPT-4.1-familie, ontworpen voor instructieopvolging en hulpmiddelaanroepen zonder aparte redeneerstap. Het accepteert tekst en afbeeldingen en produceert tekst. Nano past bij een duidelijk gedefinieerde bewerking waarvoor de toepassing een compact antwoord, een verzameling velden of het volgende hulpmiddelverzoek nodig heeft in plaats van een uitgebreid onderzoek.
Een nuttig voorbeeld is het indelen van binnenkomende berichten volgens een aangeleverde verzameling categorieën. Leg elke categorie uit, laat zien hoe dubbelzinnige berichten of berichten buiten de reikwijdte moeten worden weergegeven en vraag om de categorie samen met de ondersteunende formulering uit de bron. Definieer voor extractie de veldnamen, toegestane waarden en de behandeling van ontbrekende informatie. Lever voor een korte schrijftaak de feiten aan en vraag om de specifieke passage die de volgende toepassingsstap nodig heeft. De voorbeelden en beperkingen moeten beknopt genoeg zijn om duidelijk te blijven, ook als de bronnenverzameling groot is.
De leverancier vermeldt een contextvenster van 1.047.576 tokens, maximaal 32.768 uitvoertokens en een kennisgrens van 1 juni 2024. Deze specificaties komen overeen met het venster van GPT-4.1 Mini, terwijl Nano zijn afzonderlijke modelidentiteit en op snelle reacties gerichte rol behoudt. Label documenten en gespreksgedeelten, neem alleen de context op die voor de bewerking relevant is en reserveer ruimte voor het volledige antwoord. Zoekresultaten of aangeleverde referentietekst kunnen feiten bieden die nieuwer zijn dan de aangeleerde kennis van het model.
Nano ondersteunt streaming en Structured Outputs. Een door een schema begrensd eindantwoord dient een ander doel dan een functieaanroep: het ene geeft de toepassing een voltooid resultaat, terwijl het andere haar vraagt een bewerking uit te voeren. Structured Outputs ondersteunt een deelverzameling van JSON Schema; definieer verplichte eigenschappen en een duidelijke weergave van onbekende waarden. Handel weigeringen en onvolledige antwoorden afzonderlijk af en controleer de geëxtraheerde waarden aan de hand van de invoer in plaats van een geldige vorm gelijk te stellen aan een juiste conclusie.
De gedocumenteerde hulpmiddelen omvatten functieaanroepen, bestandszoekfuncties, code-interpretatie, MCP-verbindingen en een afzonderlijk beeldgeneratiehulpmiddel. De toepassing levert hulpmiddelbeschrijvingen en schema's aan, voert eigen functies uit en retourneert hun daadwerkelijke resultaten. Voor de Nano-modelversie van 14 april 2025 raadt OpenAI expliciet aan om parallelle hulpmiddelaanroepen uit te schakelen, omdat het model in één beurt meerdere keren om hetzelfde hulpmiddel kan vragen. Dit is een uitvoeringsaandachtspunt voor die specifieke modelversie, geen reden om meerdere voorgestelde aanroepen als voltooide handelingen te interpreteren.
Beeldinvoer voegt visueel bewijsmateriaal toe aan een teksttaak, zoals het lezen van een zichtbaar label of het beschrijven van de toestand in een schermafbeelding. Gebruik ondersteunde PNG-, JPEG-, WebP- of niet-geanimeerde GIF-afbeeldingen, houd tekst leesbaar en leg uit welke waarneming belangrijk is. De beeldgids noemt problemen met kleine of gedraaide tekst, precieze ruimtelijke relaties, het tellen van objecten en sommige niet-Latijnse schriften. Voeg omringende context toe als een uitsnede alleen een label of diagram dubbelzinnig zou maken. Nano’s eigen antwoord is tekst; een beeldgeneratiehulpmiddel retourneert een eigen afzonderlijk resultaat. In OpenAI’s gedocumenteerde beeldverwerkingsproces is de totale inhoud van een verzoek beperkt tot 512 MB en kan een verzoek tot 1.500 afbeeldingen bevatten; de afbeeldingen en tekst moeten ook binnen de context van het model passen.
In het bestandsproces van de leverancier ontvangt een model met beeldbegrip zowel geëxtraheerde tekst als pagina-afbeeldingen uit PDF-bestanden. Andere documentformaten leveren geëxtraheerde tekst aan en de verrijking van spreadsheets houdt rekening met maximaal de eerste 1.000 rijen per werkblad. Een bestand moet kleiner zijn dan 50 MB, met 50 MB voor alle bestanden van een verzoek samen. Chat Completions ondersteunt PDF-bestandsdelen, terwijl het gedocumenteerde Responses-proces extra bestandstypen accepteert. Ingesloten grafieken in niet-PDF-documenten worden niet als beeldinhoud doorgegeven, dus een PDF-weergave is nuttig als het visuele bewijsmateriaal belangrijk is.
OpenAI documenteert promptcaching voor Nano en Predicted Outputs voor de GPT-4.1 Nano-serie. Promptcaching hergebruikt een geschikt invoervoorvoegsel in de dienst van de leverancier. Predicted Outputs levert daarentegen grotendeels bekende uitvoertekst aan voor een bewerking, zoals het aanpassen van een document of codebestand met behoud van de ongewijzigde delen. De voorspellingsroute werkt alleen met tekst en sluit onder andere functieaanroepen, logprobs en max_completion_tokens uit. Kies de route voor de daadwerkelijke bewerking en houd het resultaat aan de oorspronkelijke bron gekoppeld.
De leverancier documenteert ook begeleide fine-tuning en directe voorkeursoptimalisatie voor Nano’s benoemde GPT-4.1-modelversie. Trainingsvoorbeelden en verkozen tegenover afgewezen antwoorden passen een model aan een terugkerende taak aan; ze verschillen van de context die bij een gewoon verzoek wordt aangeleverd. Begin voor een praktische extractie- of classificatiestap met duidelijke categorieën, voorbeelden en een expliciet eindformaat en controleer vervolgens of de teruggegeven velden de feiten behouden die de volgende stap zal gebruiken.
Ailoot Ultra · Batchverwerking POST /v1/batches openai/gpt-4.1-nano:batch
openai/gpt-4.1-nano:batchAan de slag
GPT-4.1 Nano is het compacte, snel reagerende lid van de GPT-4.1-familie voor nauwkeurig gespecificeerde tekst- en beeldtaken. De grote context, Structured Outputs en functieaanroepen ondersteunen classificatie, extractie en gerichte toepassingsstappen.
- Toegestane invoer
- Tekst
- Resultaten
- Tekst
Beschikbaar in Ailoot · invoer en methoden
Ailoot Ultra · Batchverwerking POST /v1/batches
- Invoer
text- Uitvoer
text- Uitvoerformaat
- inline JSON uit results[].response.body
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldendpoint | Typestring | VereisteVereist | Waarden en limieten /v1/chat/completions | Standaard— |
Veldmodel | Typestring | VereisteVereist | Waarden en limieten openai/gpt-4.1-nano:batch | Standaard— |
Veldrequests | Typebatch_item[] | VereisteVereist | Waarden en limieten Minimumaantal items: 1 | Standaard— |
Veldrequests[].custom_id | Typestring | VereisteVereist | Waarden en limieten | Standaard— |
Veldrequests[].body.messages | Typemessage[] | VereisteVereist | Waarden en limieten | Standaard— |
Veldcompletion_window | Typestring | VereisteOptioneel | Waarden en limieten 24h | Standaard— |
Veldprovider | Typeobject|null | VereisteOptioneel | Waarden en limieten | Standaard— |
Veldrequests[].body.model | Typestring | VereisteOptioneel | Waarden en limieten openai/gpt-4.1-nano:batch, openai/gpt-4.1-nano | Standaard— |
Veldprovider.only | Typestring[] | VereisteOptioneel | Waarden en limieten openai | Standaard— |
Veldprovider.allow_fallbacks | Typeboolean|null | VereisteOptioneel | Waarden en limieten false, null | Standaard— |
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractendpoint, model, requests |
Parametermaterial_types | Contracttext |
Parameterrepresentation | Contractinline requests[]; elk item bevat custom_id en body |
Parameterrequest_endpoint_profile | Contract/v1/chat/completions |
Parameterfile_material | ContractDe aanroeper kan de daadwerkelijke UTF-8 JSONL lokaal in requests[] inlezen. Er wordt geen uploaddoel, input_file_id of bestandsverwijzing gebruikt. Ontbrekend of leeg klantmateriaal stopt de voorbereiding vóór POST. |
Parameterserialization_order | Contractendpoint, model, provider (indien opgegeven), completion_window (indien opgegeven), requests als laatste |
Parameteroptional_controls | Contractprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | ContractAanvraagbodies voor tekst via Chat Completions in de gedocumenteerde inline Batch-structuur. |
Levenscyclus: asynchronous
GET /v1/batches/{operation_id} · daadwerkelijke response.id uit de oorspronkelijke aanmaakrespons; dezelfde gebruiker/sleutel/groep
Tarieven
Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.
- Snelle modus
- Niet opgegeven Wanneer de snelle modus geselecteerd is
- Flex-modus
- Niet opgegeven Wanneer de flex-modus geselecteerd is
- Maximale redeneerinspanning
- Niet opgegeven Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt
- Tarieven voor expliciete caching
- Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Ailoot-tarieven
Prijzen per configuratie
Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.
| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
|---|---|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens $0.0001 / 1K tokens Uitvoer · Uitvoertokens $0.0004 / 1K tokens Invoer · Cache lezen $0.000025 / 1K tokens Invoer · Cache schrijven — / 1K tokens Invoer · Cache schrijven, 1 uur — / 1K tokens |
| ConfiguratieAanvraaglengte · niveau 1 | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens $0.0001 / 1K tokens Uitvoer · Uitvoertokens $0.0004 / 1K tokens Invoer · Cache lezen $0.000025 / 1K tokens Invoer · Cache schrijven — / 1K tokens Invoer · Cache schrijven, 1 uur — / 1K tokens |
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot Ultra · Batchverwerking
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.
Resultaten ophalen en opslaan
Ailoot Ultra · Batchverwerking
inline JSON uit results[].response.body
GET /v1/batches/{operation_id}
Taakstatus controleren
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 voltooide resultaten bewaren
Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.
Bewaar de volledige oorspronkelijke status-JSON, elk resultaat/custom_id en de volledige respons- of foutbody. Sla voltooide results[] op als JSONL, zonder te filteren.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Bewaar de oorspronkelijke bewerkings-ID. 503 result_pending_check bevat X-Should-Retry:false; dien een oorspronkelijke batch met onbekende status nooit opnieuw in.
Antwoordvelden
| Veld | Type |
|---|---|
Veldresults[].custom_id | Typestring |
Veldresults[].response.body.choices[].message.content | Typestring|null |
Veldresults[].error | Typeobject|null |
Veldusage | Typeobject|null |
Veldid | Typestring |
Veldmodel | Typestring |
Veldendpoint | Typestring |
Veldstatus | Typestring |
Veldrequest_counts | Typeobject |
Veldresults[].id | Typestring |
Veldresults[].response.status_code | Typeinteger |
Veldresults[].response.request_id | Typestring |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeOngeldige gedocumenteerde inline structuur, dubbele sleutels, ongeldige itemidentiteit of conflict met de geconfigureerde modelmogelijkheden. | Volgende stapCorrigeer de aangegeven velden vóór elke nieuwe indiening. |
Antwoord401 · authentication_error | VoorwaardeOngeldige API-sleutel. | Volgende stapGebruik de geautoriseerde Ailoot-sleutel. |
Antwoord403 · permission_error | VoorwaardeBatch-groep niet beschikbaar. | Volgende stapControleer de toegangsrechten van de sleutel/groep. |
Antwoord422 · invalid_request_error | VoorwaardeBatch wordt via het saldo gefactureerd; aanmaken via een abonnement wordt geweigerd. | Volgende stapGebruik de geautoriseerde groep die via het saldo wordt gefactureerd. |
Antwoord422 · price_unavailable | VoorwaardeVoor de Batch-invoer kan geen prijsraming worden gemaakt. | Volgende stapBewaar de respons; gebruik de gedocumenteerde invoer voor deze familie. |
Antwoord402 · billing_error | VoorwaardeReservering voor Batch niet beschikbaar. | Volgende stapLos het toelatingsprobleem op vóór een nieuwe aanvraag. |
Antwoord503 · price_unavailable | VoorwaardePrijs voor de Batch-methode/native tarieven niet beschikbaar. | Volgende stapBewaar de respons; vervang de prijzen niet. |
Antwoord503 · api_error | VoorwaardeDe exacte leveranciersroute is niet beschikbaar. | Volgende stapBewaar de respons voor het herstel van de route. |
Antwoord503 · result_pending_check | VoorwaardeHet oorspronkelijke resultaat moet gecontroleerd worden; X-Should-Retry:false. | Volgende stapBewaar de oorspronkelijke operation_id/id en lees de status ervan uit; herhaal de oorspronkelijke POST nooit. |
Antwoord404 · not_found | VoorwaardeBewerking voor de Batch-status ontbreekt of behoort toe aan een andere identiteit. | Volgende stapGebruik de exacte oorspronkelijke id en dezelfde gebruiker/sleutel/groep. |
Aliasnamen
Modelaliasnamen
Ailoot Ultra openai/gpt-4.1-nano:batch
Aliasnamen voor methodepaden
Gebruik de hierboven getoonde methodepaden.
Gerelateerde aanroeper-ID’s
FAQ · OpenAI: GPT-4.1 Nano (batch)
- Welke invoer en resultaten zijn beschikbaar?
POST /v1/batches·openai/gpt-4.1-nano:batch:text→text- Welke velden gebruikt het verzoek?
POST /v1/batches·openai/gpt-4.1-nano:batch:endpoint,model,requests,completion_window,provider- Welke limieten gelden?
POST /v1/batches·openai/gpt-4.1-nano:batch:requests.min_items:1