OpenAI: GPT-4.1 Nano (batch)
GPT-4.1 Nano je kompaktní a rychle reagující člen rodiny GPT-4.1 pro přesně specifikované textové a obrazové úlohy. Velký kontext, Structured Outputs a volání funkcí podporují klasifikaci, extrakci a cílené aplikační kroky.
O modelu
Tento popis zahrnuje schopnosti modelu. Vstupy, výstupy a možnosti dostupné v Ailoot jsou uvedeny níže pro vybranou metodu.
GPT-4.1 Nano je nejrychlejší člen rodiny GPT-4.1 od OpenAI, navržený pro dodržování pokynů a volání nástrojů bez samostatného kroku uvažování. Přijímá text a obrázky a vytváří text. Nano se hodí pro dobře definovanou operaci, při které aplikace potřebuje stručnou odpověď, sadu polí nebo další požadavek nástroje namísto rozsáhlého zkoumání.
Užitečným příkladem je třídění příchozích zpráv podle dodané sady kategorií. Vysvětlete každou kategorii, ukažte způsob vyjádření nejasných zpráv nebo zpráv mimo rozsah a požádejte o kategorii společně se zdrojovou frází, která ji podporuje. U extrakce definujte názvy polí, povolené hodnoty a zacházení s chybějícími informacemi. U krátké písemné úlohy dodejte fakta a požádejte o konkrétní pasáž potřebnou pro další fázi aplikace. Příklady a omezení mají být dostatečně malé, aby zůstaly jasné i při velkém souboru zdrojů.
Výrobce uvádí kontextové okno 1 047 576 tokenů, maximální výstup 32 768 tokenů a znalostní mezník 1. června 2024. Tyto specifikace odpovídají oknu GPT-4.1 Mini a současně zachovávají samostatnou identitu Nano a jeho roli zaměřenou na rychlou odezvu. Označte dokumenty a oddíly konverzace, zahrňte pouze kontext relevantní pro operaci a ponechte místo pro úplnou odpověď. Výsledky vyhledání nebo dodaný referenční text mohou poskytovat fakta novější než naučené znalosti modelu.
Nano podporuje streamování a Structured Outputs. Konečná odpověď omezená schématem má jiný účel než volání funkce: první poskytuje aplikaci dokončený výstup, zatímco druhé ji žádá o provedení operace. Structured Outputs podporuje podmnožinu JSON Schema; definujte požadované vlastnosti a jasný způsob vyjádření neznámých hodnot. Odmítnutí a neúplné odpovědi zpracujte odděleně a porovnejte extrahované hodnoty se vstupem, místo ztotožnění platného tvaru se správným závěrem.
Dokumentovaná sada nástrojů zahrnuje volání funkcí, vyhledávání v souborech, spouštění kódu, připojení MCP a samostatný nástroj pro generování obrázků. Aplikace dodává popisy nástrojů a schémata, provádí vlastní funkce a vrací jejich skutečné výsledky. U verze Nano ze 14. dubna 2025 OpenAI výslovně doporučuje zakázat paralelní volání nástrojů, protože model může během jednoho tahu požádat o stejný nástroj několikrát. Jde o provozní hledisko specifické pro tuto verzi, nikoli o důvod chápat několik navržených volání jako dokončené akce.
Obrazový vstup přidává vizuální důkazy k textové úloze, například čtení viditelného popisku nebo popis stavu na snímku obrazovky. Používejte podporované obrázky PNG, JPEG, WebP nebo neanimovaný GIF, zachovejte čitelnost textu a vysvětlete důležité pozorování. Vizuální průvodce upozorňuje na potíže s malým či otočeným textem, přesnými prostorovými vztahy, počty objektů a některými nelatinkovými texty. Pokud by samotný výřez činil popisek nebo diagram nejasným, dodejte okolní kontext. Vlastní odpověď Nano je textová; nástroj pro generování obrázků vrací svůj samostatný výstup. V dokumentovaném vizuálním postupu OpenAI je celková velikost dat požadavku omezena na 512 MB a požadavek může obsahovat až 1 500 obrázků; obrázky i text se také musí vejít do kontextu modelu.
V souborovém postupu výrobce dostává model schopný vizuálního zpracování extrahovaný text i obrázky stránek PDF. Jiné formáty dokumentů přispívají extrahovaným textem a doplňování tabulkových dat zohledňuje až prvních 1 000 řádků na list. Soubor musí být menší než 50 MB a celkový limit v požadavku je 50 MB. Chat Completions podporuje souborové části PDF, zatímco dokumentovaný postup Responses přijímá další typy souborů. Vložené grafy v jiných dokumentech než PDF se nepředávají jako obrazový obsah, takže reprezentace PDF je užitečná, když na vizuálních důkazech záleží.
OpenAI dokumentuje ukládání promptů do mezipaměti pro Nano a Predicted Outputs pro řadu GPT-4.1 Nano. Mezipaměť promptů opakovaně používá způsobilý vstupní prefix ve službě výrobce. Predicted Outputs naproti tomu dodává převážně známý výstupní text pro úpravu, například revizi dokumentu nebo souboru kódu při zachování nezměněných částí. Predikční cesta je čistě textová a mimo jiné vylučuje volání funkcí, logprobs a max_completion_tokens. Zvolte cestu podle skutečné operace a zachovejte spojení výsledku s původním zdrojem.
Výrobce také dokumentuje dolaďování s učitelem a přímou optimalizaci preferencí pro pojmenovanou verzi GPT-4.1 Nano. Trénovací příklady a preferované oproti odmítnutým odpovědím přizpůsobují model opakované úloze; liší se od kontextu dodaného běžnému požadavku. Pro praktickou fázi extrakce nebo klasifikace začněte jasnými kategoriemi, příklady a výslovným konečným formátem a poté zkontrolujte, zda vrácená pole zachovávají fakta použitá v další fázi.
Ailoot Ultra · Dávka POST /v1/batches openai/gpt-4.1-nano:batch
openai/gpt-4.1-nano:batchÚvod
GPT-4.1 Nano je kompaktní a rychle reagující člen rodiny GPT-4.1 pro přesně specifikované textové a obrazové úlohy. Velký kontext, Structured Outputs a volání funkcí podporují klasifikaci, extrakci a cílené aplikační kroky.
- Přijímané vstupy
- Text
- Výsledky
- Text
Dostupné v Ailoot · vstupy a metody
Ailoot Ultra · Dávka POST /v1/batches
- Vstup
text- Výstup
text- Výstupní formát
- vložený JSON v results[].response.body
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Poleendpoint | Typstring | PožadavekPovinné | Hodnoty a limity /v1/chat/completions | Výchozí— |
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity openai/gpt-4.1-nano:batch | Výchozí— |
Polerequests | Typbatch_item[] | PožadavekPovinné | Hodnoty a limity Minimální počet položek: 1 | Výchozí— |
Polerequests[].custom_id | Typstring | PožadavekPovinné | Hodnoty a limity | Výchozí— |
Polerequests[].body.messages | Typmessage[] | PožadavekPovinné | Hodnoty a limity | Výchozí— |
Polecompletion_window | Typstring | PožadavekVolitelné | Hodnoty a limity 24h | Výchozí— |
Poleprovider | Typobject|null | PožadavekVolitelné | Hodnoty a limity | Výchozí— |
Polerequests[].body.model | Typstring | PožadavekVolitelné | Hodnoty a limity openai/gpt-4.1-nano:batch, openai/gpt-4.1-nano | Výchozí— |
Poleprovider.only | Typstring[] | PožadavekVolitelné | Hodnoty a limity openai | Výchozí— |
Poleprovider.allow_fallbacks | Typboolean|null | PožadavekVolitelné | Hodnoty a limity false, null | Výchozí— |
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktendpoint, model, requests |
Parametrmaterial_types | Kontrakttext |
Parametrrepresentation | Kontraktvložené requests[]; každá položka obsahuje custom_id a body |
Parametrrequest_endpoint_profile | Kontrakt/v1/chat/completions |
Parametrfile_material | KontraktVolající může lokálně načíst skutečný soubor JSONL v kódování UTF-8 do requests[]. Nepoužívá se účel nahrání, input_file_id ani odkaz na soubor. Chybějící nebo prázdné podklady zákazníka zastaví přípravu před POST. |
Parametrserialization_order | Kontraktendpoint, model, provider (je-li uveden), completion_window (je-li uvedeno), requests nakonec |
Parametroptional_controls | Kontraktprovider.only, provider.allow_fallbacks, completion_window |
Parametrschema_scope | KontraktTěla požadavků Text Chat Completions v dokumentované obálce pro vložené dávkové požadavky Batch. |
Životní cyklus: asynchronous
GET /v1/batches/{operation_id} · skutečné response.id z původní odpovědi na vytvoření; stejný uživatel, klíč a skupina
Tarify
Údaje o tarifech nepřidávají možnosti požadavku. Podporované parametry jsou uvedeny u vybrané metody.
- Rychlý režim
- Neuvedeno Při výběru rychlého režimu
- Režim flex
- Neuvedeno Při výběru režimu flex
- Maximální intenzita uvažování
- Neuvedeno Když se při maximální intenzitě uvažování použije výchozí úprava (default)
- Ceny explicitní mezipaměti
- Není zapnuto Při požadavku na explicitní mezipaměť
Sazby Ailoot
Ceny podle konfigurace
Přiřaďte každý poplatek k uvedeným podmínkám. Pro každou sadu alternativních konfigurací použijte jednu sazbu.
| Konfigurace | Tabulka sazeb | Tokeny kontextu, více než | Tokeny kontextu, do uvedené hodnoty včetně | Poplatek |
|---|---|---|---|---|
| KonfiguraceZákladní sazby za tokeny | Tabulka sazebZákladní sazba | Tokeny kontextu, více než— | Tokeny kontextu, do uvedené hodnoty včetněBez horní meze | Poplatek Vstup · Vstupní tokeny $0.0001 / 1K tokenů Výstup · Výstupní tokeny $0.0004 / 1K tokenů Vstup · Čtení z mezipaměti $0.000025 / 1K tokenů Vstup · Zápis do mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina — / 1K tokenů |
| KonfiguracePásmo délky požadavku 1 | Tabulka sazeb— | Tokeny kontextu, více než0 | Tokeny kontextu, do uvedené hodnoty včetněBez horní meze | Poplatek Vstup · Vstupní tokeny $0.0001 / 1K tokenů Výstup · Výstupní tokeny $0.0004 / 1K tokenů Vstup · Čtení z mezipaměti $0.000025 / 1K tokenů Vstup · Zápis do mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina — / 1K tokenů |
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
Ailoot Ultra · Dávka
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.
Přijímání a ukládání výsledků
Ailoot Ultra · Dávka
vložený JSON v results[].response.body
GET /v1/batches/{operation_id}
Ověřit stav úlohy
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
Uchovejte všechny dokončené výsledky
Uchovejte každou úplnou vrácenou odpověď, soubor i část obsahu.
Uchovejte úplný původní JSON se stavem, každý výsledek a custom_id a úplné tělo odpovědi nebo chyby. Dokončené results[] uložte jako JSONL bez filtrování.
Pokud je nutné ověřit původní odpověď
Uchovejte původní ID operace. Odpověď 503 result_pending_check obsahuje X-Should-Retry:false; původní dávku s neznámým výsledkem nikdy znovu neodesílejte.
Pole odpovědi
| Pole | Typ |
|---|---|
Poleresults[].custom_id | Typstring |
Poleresults[].response.body.choices[].message.content | Typstring|null |
Poleresults[].error | Typobject|null |
Poleusage | Typobject|null |
Poleid | Typstring |
Polemodel | Typstring |
Poleendpoint | Typstring |
Polestatus | Typstring |
Polerequest_counts | Typobject |
Poleresults[].id | Typstring |
Poleresults[].response.status_code | Typinteger |
Poleresults[].response.request_id | Typstring |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná dokumentovaná obálka vložených požadavků, duplicitní klíče, nesprávná identita položky nebo rozpor s nastavenými schopnostmi modelu. | Další krokPřed jakýmkoli novým odesláním opravte označená pole. |
Odpověď401 · authentication_error | PodmínkaNeplatný klíč API. | Další krokPoužijte autorizovaný klíč Ailoot. |
Odpověď403 · permission_error | PodmínkaSkupina pro dávkové požadavky není dostupná. | Další krokZkontrolujte oprávnění klíče a skupiny. |
Odpověď422 · invalid_request_error | PodmínkaDávkové požadavky se účtují ze zůstatku; vytvoření v rámci předplatného se odmítá. | Další krokPoužijte autorizovanou skupinu s účtováním ze zůstatku. |
Odpověď422 · price_unavailable | PodmínkaPro vstup dávky nelze vypočítat cenovou nabídku. | Další krokUchovejte odpověď; použijte dokumentovaný vstup pro danou rodinu API. |
Odpověď402 · billing_error | PodmínkaRezerva pro dávku není dostupná. | Další krokPřed novým požadavkem vyřešte podmínky přijetí. |
Odpověď503 · price_unavailable | PodmínkaCena dávkové metody nebo nativní sazby nejsou dostupné. | Další krokUchovejte odpověď; nenahrazujte ceny jinými. |
Odpověď503 · api_error | PodmínkaPřesná trasa dodavatele není dostupná. | Další krokUchovejte odpověď pro opravu směrování. |
Odpověď503 · result_pending_check | PodmínkaPůvodní výsledek vyžaduje kontrolu; X-Should-Retry:false. | Další krokUchovejte původní operation_id/id a načítejte jeho stav; původní POST nikdy neopakujte. |
Odpověď404 · not_found | PodmínkaOperace pro kontrolu stavu dávky neexistuje nebo patří jiné identitě. | Další krokPoužijte přesné původní id a stejného uživatele, klíč a skupinu. |
Aliasy
Aliasy modelu
Ailoot Ultra openai/gpt-4.1-nano:batch
Aliasy cest metod
Použijte cesty metod uvedené výše.
Související ID modelů
FAQ · OpenAI: GPT-4.1 Nano (batch)
- Jaké vstupy a výsledky jsou dostupné?
POST /v1/batches·openai/gpt-4.1-nano:batch:text→text- Jaká pole požadavek používá?
POST /v1/batches·openai/gpt-4.1-nano:batch:endpoint,model,requests,completion_window,provider- Jaké limity platí?
POST /v1/batches·openai/gpt-4.1-nano:batch:requests.min_items:1