OpenAI: GPT-4.1 Nano (batch)
GPT-4.1 Nano ialah anggota keluarga GPT-4.1 yang padat dan responsif untuk tugas teks dan imej yang ditetapkan dengan ketat. Konteks besar, Structured Outputs dan panggilan fungsi menyokong pengelasan, pengekstrakan dan langkah aplikasi yang terfokus.
Tentang model
Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.
GPT-4.1 Nano ialah anggota terpantas keluarga GPT-4.1 OpenAI, direka untuk mengikuti arahan dan membuat panggilan alat tanpa langkah penaakulan berasingan. Model ini menerima teks dan imej serta menghasilkan teks. Nano sesuai untuk operasi yang ditakrifkan dengan jelas apabila aplikasi memerlukan jawapan padat, set medan atau permintaan alat seterusnya dan bukannya penyiasatan yang luas.
Contoh yang berguna ialah mengisih mesej masuk mengikut set kategori yang diberikan. Jelaskan setiap kategori, tunjukkan cara mewakili mesej yang kabur atau di luar skop dan minta kategori bersama frasa sumber yang menyokongnya. Bagi pengekstrakan, takrifkan nama medan, nilai yang dibenarkan dan pengendalian maklumat yang tiada. Bagi tugas penulisan pendek, berikan fakta dan minta petikan khusus yang diperlukan oleh peringkat aplikasi seterusnya. Contoh serta kekangan perlu cukup kecil untuk kekal jelas walaupun koleksi sumber besar.
Pengeluar menyenaraikan tetingkap konteks 1047576 token, output maksimum 32768 token dan had pengetahuan 1 Jun 2024. Spesifikasi ini sepadan dengan tetingkap GPT-4.1 Mini sambil mengekalkan identiti model Nano yang berasingan dan peranannya yang berorientasikan respons pantas. Labelkan dokumen serta bahagian perbualan, sertakan hanya konteks yang relevan dengan operasi dan sediakan ruang untuk jawapan lengkap. Hasil carian atau teks rujukan yang diberikan boleh menyediakan fakta yang lebih baharu daripada pengetahuan yang dipelajari oleh model.
Nano menyokong penstriman dan Structured Outputs. Respons akhir yang dibatasi skema mempunyai tujuan berbeza daripada panggilan fungsi: satu memberikan aplikasi artifak lengkap, manakala satu lagi memintanya melaksanakan operasi. Structured Outputs menyokong subset JSON Schema; takrifkan sifat wajib dan perwakilan yang jelas bagi nilai yang tidak diketahui. Kendalikan penolakan dan respons tidak lengkap secara berasingan, serta semak nilai yang diekstrak berdasarkan input dan bukannya menyamakan bentuk yang sah dengan kesimpulan yang betul.
Set alat yang didokumenkan merangkumi panggilan fungsi, carian fail, pentafsiran kod, sambungan MCP dan alat penjanaan imej berasingan. Aplikasi memberikan huraian dan skema alat, melaksanakan fungsi tersuai serta mengembalikan hasil sebenar. Bagi snapshot Nano bertarikh 14 April 2025, OpenAI secara khusus mengesyorkan supaya panggilan alat selari dinyahaktifkan kerana model boleh meminta alat yang sama beberapa kali dalam satu giliran. Ini ialah pertimbangan pelaksanaan khusus snapshot, bukannya alasan untuk mentafsir beberapa panggilan yang dicadangkan sebagai tindakan yang telah selesai.
Input imej menambahkan bukti visual kepada tugas teks, seperti membaca label yang kelihatan atau menghuraikan keadaan dalam tangkapan skrin. Gunakan imej PNG, JPEG, WebP atau GIF tanpa animasi yang disokong, pastikan teks boleh dibaca dan jelaskan pemerhatian yang penting. Panduan penglihatan menyatakan kesukaran dengan teks kecil atau diputar, hubungan ruang yang tepat, kiraan objek dan sesetengah tulisan bukan Latin. Berikan konteks sekeliling apabila potongan imej sahaja akan menjadikan label atau rajah kabur. Respons Nano sendiri ialah teks; alat penjanaan imej mengembalikan artifaknya sendiri yang berasingan. Dalam aliran kerja penglihatan yang didokumenkan oleh OpenAI, jumlah muatan permintaan dihadkan kepada 512 MB dan satu permintaan boleh merangkumi sehingga 1500 imej; imej serta teks juga mesti muat dalam konteks model.
Dalam aliran kerja fail pengeluar, model yang berkeupayaan penglihatan menerima teks yang diekstrak dan imej halaman daripada PDF. Format dokumen lain menyumbang teks yang diekstrak, dan pengayaan hamparan mempertimbangkan sehingga 1000 baris pertama bagi setiap helaian. Fail mestilah di bawah 50 MB, dengan jumlah gabungan 50 MB bagi satu permintaan. Chat Completions menyokong bahagian fail PDF, manakala aliran kerja Responses yang didokumenkan menerima jenis fail tambahan. Carta terbenam dalam dokumen bukan PDF tidak dihantar sebagai kandungan imej, jadi perwakilan PDF berguna apabila bukti visual penting.
OpenAI mendokumenkan cache prompt bagi Nano dan Predicted Outputs bagi siri GPT-4.1 Nano. Cache prompt menggunakan semula awalan input yang layak dalam perkhidmatan pengeluar. Sebaliknya, Predicted Outputs memberikan teks output yang sebahagian besarnya telah diketahui untuk suntingan, seperti menyemak dokumen atau fail kod sambil mengekalkan bahagian yang tidak berubah. Laluan ramalan hanya untuk teks dan mengecualikan panggilan fungsi, logprobs dan max_completion_tokens, antara kawalan lain. Pilih laluan untuk operasi sebenar dan kekalkan kaitan hasil dengan sumber asal.
Pengeluar turut mendokumenkan fine-tuning terselia dan pengoptimuman keutamaan langsung bagi snapshot GPT-4.1 Nano yang dinamakan secara khusus. Contoh latihan dan respons yang diutamakan berbanding respons yang ditolak menyesuaikan model kepada tugas berulang; kedua-duanya berbeza daripada konteks yang diberikan kepada permintaan biasa. Bagi peringkat pengekstrakan atau pengelasan praktikal, mulakan dengan kategori yang jelas, contoh dan format akhir yang nyata, kemudian periksa sama ada medan yang dikembalikan mengekalkan fakta yang akan digunakan oleh peringkat seterusnya.
Ailoot Ultra · Kelompok POST /v1/batches openai/gpt-4.1-nano:batch
openai/gpt-4.1-nano:batchPengenalan
GPT-4.1 Nano ialah anggota keluarga GPT-4.1 yang padat dan responsif untuk tugas teks dan imej yang ditetapkan dengan ketat. Konteks besar, Structured Outputs dan panggilan fungsi menyokong pengelasan, pengekstrakan dan langkah aplikasi yang terfokus.
- Input yang diterima
- Teks
- Hasil
- Teks
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · Kelompok POST /v1/batches
- Input
text- Output
text- Format output
- JSON results[].response.body sebaris
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanendpoint | Jenisstring | KeperluanDiperlukan | Nilai & had /v1/chat/completions | Lalai— |
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had openai/gpt-4.1-nano:batch | Lalai— |
Medanrequests | Jenisbatch_item[] | KeperluanDiperlukan | Nilai & had Item minimum: 1 | Lalai— |
Medanrequests[].custom_id | Jenisstring | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanrequests[].body.messages | Jenismessage[] | KeperluanDiperlukan | Nilai & had | Lalai— |
Medancompletion_window | Jenisstring | KeperluanPilihan | Nilai & had 24h | Lalai— |
Medanprovider | Jenisobject|null | KeperluanPilihan | Nilai & had | Lalai— |
Medanrequests[].body.model | Jenisstring | KeperluanPilihan | Nilai & had openai/gpt-4.1-nano:batch, openai/gpt-4.1-nano | Lalai— |
Medanprovider.only | Jenisstring[] | KeperluanPilihan | Nilai & had openai | Lalai— |
Medanprovider.allow_fallbacks | Jenisboolean|null | KeperluanPilihan | Nilai & had false, null | Lalai— |
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakendpoint, model, requests |
Parametermaterial_types | Kontraktext |
Parameterrepresentation | Kontrakrequests[] sebaris; setiap item mempunyai custom_id dan body |
Parameterrequest_endpoint_profile | Kontrak/v1/chat/completions |
Parameterfile_material | KontrakPemanggil boleh membaca JSONL UTF-8 sebenar secara setempat ke dalam requests[]. Tiada tujuan muat naik, input_file_id atau rujukan fail digunakan. Bahan pelanggan yang tiada atau kosong menghentikan persediaan sebelum POST. |
Parameterserialization_order | Kontrakendpoint, model, provider (jika dibekalkan), completion_window (jika dibekalkan), requests di akhir |
Parameteroptional_controls | Kontrakprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | KontrakBadan permintaan Chat Completions teks dalam pembungkus Batch sebaris yang didokumenkan. |
Kitar hayat: asynchronous
GET /v1/batches/{operation_id} · response.id sebenar daripada respons penciptaan asal; pengguna/kunci/kumpulan yang sama
Pelan harga
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Tidak dinyatakan Apabila mod pantas dipilih
- Mod flex
- Tidak dinyatakan Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default
- Harga cache eksplisit
- Tidak diaktifkan Apabila cache eksplisit diminta
Kadar Ailoot
Harga mengikut konfigurasi
Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.
| Konfigurasi | Jadual kadar | Token konteks, melebihi | Token konteks, sehingga dan termasuk | Caj |
|---|---|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Token konteks, melebihi— | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.0001 / 1K token Output · Token output $0.0004 / 1K token Input · Bacaan cache $0.000025 / 1K token Input · Penulisan cache — / 1K token Input · Penulisan cache, 1 jam — / 1K token |
| KonfigurasiTahap panjang permintaan 1 | Jadual kadar— | Token konteks, melebihi0 | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.0001 / 1K token Output · Token output $0.0004 / 1K token Input · Bacaan cache $0.000025 / 1K token Input · Penulisan cache — / 1K token Input · Penulisan cache, 1 jam — / 1K token |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Contoh permintaan
Ailoot Ultra · Kelompok
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.
Terima dan simpan hasil
Ailoot Ultra · Kelompok
JSON results[].response.body sebaris
GET /v1/batches/{operation_id}
Semak status tugas
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
Simpan semua hasil yang selesai
Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.
Simpan keseluruhan JSON status asal, setiap hasil/custom_id serta badan respons atau ralat yang lengkap. Simpan results[] yang telah selesai sebagai JSONL tanpa penapisan.
Jika respons asal perlu disemak
Simpan ID operasi asal. 503 result_pending_check mempunyai X-Should-Retry:false; jangan sekali-kali hantar semula kelompok asal yang hasilnya tidak diketahui.
Medan respons
| Medan | Jenis |
|---|---|
Medanresults[].custom_id | Jenisstring |
Medanresults[].response.body.choices[].message.content | Jenisstring|null |
Medanresults[].error | Jenisobject|null |
Medanusage | Jenisobject|null |
Medanid | Jenisstring |
Medanmodel | Jenisstring |
Medanendpoint | Jenisstring |
Medanstatus | Jenisstring |
Medanrequest_counts | Jenisobject |
Medanresults[].id | Jenisstring |
Medanresults[].response.status_code | Jenisinteger |
Medanresults[].response.request_id | Jenisstring |
Ralat dan langkah seterusnya
| Respons | Syarat | Langkah seterusnya |
|---|---|---|
Respons400 · invalid_request_error | SyaratPembungkus sebaris yang didokumenkan tidak sah, kunci berulang, identiti item atau keupayaan model yang dikonfigurasikan bercanggah. | Langkah seterusnyaBetulkan medan yang dinyatakan sebelum sebarang penghantaran baharu. |
Respons401 · authentication_error | SyaratKunci API tidak sah. | Langkah seterusnyaGunakan kunci Ailoot yang dibenarkan. |
Respons403 · permission_error | SyaratKumpulan kelompok tidak tersedia. | Langkah seterusnyaSemak hak akses kunci/kumpulan. |
Respons422 · invalid_request_error | SyaratKelompok menggunakan pengebilan baki; penciptaan melalui langganan ditolak. | Langkah seterusnyaGunakan kumpulan yang dibenarkan untuk pengebilan melalui baki. |
Respons422 · price_unavailable | SyaratSebut harga tidak dapat diberikan untuk input kelompok. | Langkah seterusnyaSimpan respons; gunakan input keluarga API yang didokumenkan. |
Respons402 · billing_error | SyaratRizab kelompok tidak tersedia. | Langkah seterusnyaSelesaikan isu penerimaan permintaan sebelum menghantar permintaan baharu. |
Respons503 · price_unavailable | SyaratHarga kaedah kelompok/kadar natif tidak tersedia. | Langkah seterusnyaSimpan respons; jangan gantikan harga. |
Respons503 · api_error | SyaratLaluan pembekal yang tepat tidak tersedia. | Langkah seterusnyaSimpan respons untuk pembaikan laluan. |
Respons503 · result_pending_check | SyaratHasil asal memerlukan semakan; X-Should-Retry:false. | Langkah seterusnyaSimpan operation_id/id asal dan baca statusnya; jangan sekali-kali ulang POST asal. |
Respons404 · not_found | SyaratOperasi status kelompok tiada atau dimiliki oleh identiti lain. | Langkah seterusnyaGunakan id asal yang tepat serta pengguna/kunci/kumpulan yang sama. |
Alias
Alias model
Ailoot Ultra openai/gpt-4.1-nano:batch
Alias laluan kaedah
Gunakan laluan kaedah yang dipaparkan di atas.
ID pemanggil berkaitan
FAQ · OpenAI: GPT-4.1 Nano (batch)
- Apakah input dan hasil yang tersedia?
POST /v1/batches·openai/gpt-4.1-nano:batch:text→text- Apakah medan yang digunakan oleh permintaan?
POST /v1/batches·openai/gpt-4.1-nano:batch:endpoint,model,requests,completion_window,provider- Apakah had yang terpakai?
POST /v1/batches·openai/gpt-4.1-nano:batch:requests.min_items:1