OpenAI: GPT-4.1 Nano (batch)
GPT-4.1 Nano adalah anggota keluarga GPT-4.1 yang ringkas dan responsif untuk tugas teks dan gambar yang dirumuskan secara ketat. Konteks besar, Structured Outputs, dan pemanggilan fungsi mendukung klasifikasi, ekstraksi, serta langkah aplikasi yang terarah.
Tentang model
Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.
GPT-4.1 Nano adalah anggota tercepat keluarga GPT-4.1 OpenAI, dirancang untuk mengikuti instruksi dan memanggil alat tanpa tahap penalaran terpisah. Model ini menerima teks dan gambar serta menghasilkan teks. Nano cocok untuk operasi yang didefinisikan dengan baik ketika aplikasi membutuhkan jawaban ringkas, sekumpulan field, atau permintaan alat berikutnya, bukan penyelidikan luas.
Contoh yang berguna adalah mengelompokkan pesan masuk berdasarkan sekumpulan kategori yang diberikan. Jelaskan setiap kategori, tunjukkan cara merepresentasikan pesan ambigu atau di luar cakupan, dan mintalah kategori bersama frasa sumber yang mendukungnya. Untuk ekstraksi, definisikan nama field, nilai yang diizinkan, dan penanganan informasi yang tidak tersedia. Untuk tugas penulisan singkat, berikan fakta dan mintalah bagian teks tertentu yang dibutuhkan tahap aplikasi berikutnya. Contoh serta batasannya harus cukup kecil agar tetap jelas meskipun kumpulan sumber besar.
Produsen mencantumkan jendela konteks 1047576 token, keluaran maksimum 32768 token, dan batas pengetahuan 1 Juni 2024. Spesifikasi ini sesuai dengan jendela GPT-4.1 Mini sekaligus mempertahankan identitas model Nano yang terpisah dan perannya yang berorientasi pada respons cepat. Berikan label pada dokumen dan bagian percakapan, sertakan hanya konteks yang relevan dengan operasi, dan sisihkan ruang untuk jawaban lengkap. Hasil pencarian atau teks referensi yang diberikan dapat menyediakan fakta yang lebih baru daripada pengetahuan yang dipelajari model.
Nano mendukung streaming dan Structured Outputs. Respons akhir yang dibatasi skema memiliki tujuan berbeda dari panggilan fungsi: yang satu memberi aplikasi artefak lengkap, sedangkan yang lain memintanya menjalankan operasi. Structured Outputs mendukung subset JSON Schema; definisikan properti wajib dan representasi yang jelas untuk nilai yang tidak diketahui. Tangani penolakan dan respons tidak lengkap secara terpisah, serta periksa nilai hasil ekstraksi berdasarkan masukan, alih-alih menyamakan bentuk yang valid dengan kesimpulan yang benar.
Daftar alat yang didokumentasikan mencakup pemanggilan fungsi, pencarian file, interpretasi kode, koneksi MCP, serta alat pembuatan gambar terpisah. Aplikasi menyediakan deskripsi dan skema alat, menjalankan fungsi khusus, dan mengembalikan hasil sebenarnya. Untuk snapshot Nano tanggal 14 April 2025, OpenAI secara khusus menyarankan penonaktifan panggilan alat paralel karena model dapat meminta alat yang sama beberapa kali dalam satu giliran. Ini adalah pertimbangan pelaksanaan khusus snapshot, bukan alasan untuk menafsirkan beberapa panggilan yang diusulkan sebagai tindakan yang sudah selesai.
Masukan gambar menambahkan bukti visual pada tugas teks, seperti membaca label yang terlihat atau menjelaskan keadaan dalam tangkapan layar. Gunakan gambar PNG, JPEG, WebP, atau GIF nonanimasi yang didukung, jaga teks agar terbaca, dan jelaskan pengamatan yang penting. Panduan visi mencatat kesulitan dengan teks kecil atau terputar, hubungan spasial yang tepat, hitungan objek, dan sebagian tulisan non-Latin. Berikan konteks sekitar ketika potongan gambar saja akan membuat label atau diagram ambigu. Respons Nano sendiri berupa teks; alat pembuatan gambar mengembalikan artefaknya sendiri yang terpisah. Dalam alur kerja visi yang didokumentasikan OpenAI, total payload permintaan dibatasi 512 MB dan satu permintaan dapat memuat hingga 1500 gambar; gambar serta teks juga harus muat dalam konteks model.
Dalam alur kerja file produsen, model yang mendukung visi menerima teks hasil ekstraksi dan gambar halaman dari PDF. Format dokumen lain menyumbangkan teks hasil ekstraksi, dan pengayaan spreadsheet mempertimbangkan hingga 1000 baris pertama per lembar. Satu file harus berukuran di bawah 50 MB, dengan total 50 MB untuk seluruh permintaan. Chat Completions mendukung bagian file PDF, sedangkan alur kerja Responses yang didokumentasikan menerima jenis file tambahan. Bagan tertanam dalam dokumen non-PDF tidak diteruskan sebagai konten gambar, sehingga representasi PDF berguna ketika bukti visual penting.
OpenAI mendokumentasikan cache prompt untuk Nano serta Predicted Outputs untuk seri GPT-4.1 Nano. Cache prompt menggunakan kembali prefiks masukan yang memenuhi syarat dalam layanan produsen. Sebaliknya, Predicted Outputs memberikan teks keluaran yang sebagian besar telah diketahui untuk penyuntingan, seperti merevisi dokumen atau file kode sambil mempertahankan bagian yang tidak berubah. Jalur prediksi hanya untuk teks dan mengecualikan pemanggilan fungsi, logprobs, dan max_completion_tokens, di antara kontrol lainnya. Pilih jalur yang sesuai dengan operasi sebenarnya dan pertahankan hubungan hasil dengan sumber asli.
Produsen juga mendokumentasikan fine-tuning terawasi dan optimasi preferensi langsung untuk snapshot GPT-4.1 Nano dengan nama tersendiri. Contoh pelatihan dan respons yang disukai dibandingkan respons yang ditolak menyesuaikan model dengan tugas berulang; keduanya berbeda dari konteks yang diberikan pada permintaan biasa. Untuk tahap ekstraksi atau klasifikasi praktis, mulailah dengan kategori yang jelas, contoh, serta format akhir yang eksplisit, lalu periksa apakah field yang dikembalikan mempertahankan fakta yang akan digunakan tahap berikutnya.
Ailoot Ultra · Batch POST /v1/batches openai/gpt-4.1-nano:batch
openai/gpt-4.1-nano:batchMulai
GPT-4.1 Nano adalah anggota keluarga GPT-4.1 yang ringkas dan responsif untuk tugas teks dan gambar yang dirumuskan secara ketat. Konteks besar, Structured Outputs, dan pemanggilan fungsi mendukung klasifikasi, ekstraksi, serta langkah aplikasi yang terarah.
- Masukan yang diterima
- Teks
- Hasil
- Teks
Tersedia di Ailoot · masukan & metode
Ailoot Ultra · Batch POST /v1/batches
- Masukan
text- Keluaran
text- Format keluaran
- JSON inline pada results[].response.body
| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
|---|---|---|---|---|
Kolomendpoint | Jenisstring | PersyaratanWajib | Nilai & batasan /v1/chat/completions | Bawaan— |
Kolommodel | Jenisstring | PersyaratanWajib | Nilai & batasan openai/gpt-4.1-nano:batch | Bawaan— |
Kolomrequests | Jenisbatch_item[] | PersyaratanWajib | Nilai & batasan Item minimum: 1 | Bawaan— |
Kolomrequests[].custom_id | Jenisstring | PersyaratanWajib | Nilai & batasan | Bawaan— |
Kolomrequests[].body.messages | Jenismessage[] | PersyaratanWajib | Nilai & batasan | Bawaan— |
Kolomcompletion_window | Jenisstring | PersyaratanOpsional | Nilai & batasan 24h | Bawaan— |
Kolomprovider | Jenisobject|null | PersyaratanOpsional | Nilai & batasan | Bawaan— |
Kolomrequests[].body.model | Jenisstring | PersyaratanOpsional | Nilai & batasan openai/gpt-4.1-nano:batch, openai/gpt-4.1-nano | Bawaan— |
Kolomprovider.only | Jenisstring[] | PersyaratanOpsional | Nilai & batasan openai | Bawaan— |
Kolomprovider.allow_fallbacks | Jenisboolean|null | PersyaratanOpsional | Nilai & batasan false, null | Bawaan— |
Parameter metode dan siklus hidup
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakendpoint, model, requests |
Parametermaterial_types | Kontraktext |
Parameterrepresentation | Kontrakrequests[] inline; setiap item memiliki custom_id dan body |
Parameterrequest_endpoint_profile | Kontrak/v1/chat/completions |
Parameterfile_material | KontrakPemanggil dapat membaca JSONL UTF-8 aktual secara lokal ke dalam requests[]. Tidak menggunakan purpose unggahan, input_file_id, atau referensi file. Materi pelanggan yang tidak ada atau kosong menghentikan persiapan sebelum POST. |
Parameterserialization_order | Kontrakendpoint, model, provider (jika disertakan), completion_window (jika disertakan), requests paling akhir |
Parameteroptional_controls | Kontrakprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | Kontrakbody teks Chat Completions dalam envelope Batch inline yang didokumentasikan. |
Siklus hidup: asynchronous
GET /v1/batches/{operation_id} · response.id aktual dari operasi create awal; user/key/group yang sama
Paket
Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.
- Mode Fast
- Tidak ditentukan Saat mode fast dipilih
- Mode Flex
- Tidak ditentukan Saat mode flex dipilih
- Upaya penalaran maksimum
- Tidak ditentukan Saat upaya penalaran maksimum menggunakan penyesuaian default
- Harga cache eksplisit
- Tidak diaktifkan Saat cache eksplisit diminta
Tarif Ailoot
Harga menurut konfigurasi
Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.
| Konfigurasi | Jadwal tarif | Token konteks, lebih dari | Token konteks, hingga dan termasuk | Biaya |
|---|---|---|---|---|
| KonfigurasiTarif dasar token | Jadwal tarifTarif dasar | Token konteks, lebih dari— | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan $0.0001 / 1K token Keluaran · Token keluaran $0.0004 / 1K token Masukan · Pembacaan cache $0.000025 / 1K token Masukan · Penulisan cache — / 1K token Masukan · Penulisan cache, 1 jam — / 1K token |
| KonfigurasiPanjang permintaan · tingkat 1 | Jadwal tarif— | Token konteks, lebih dari0 | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan $0.0001 / 1K token Keluaran · Token keluaran $0.0004 / 1K token Masukan · Pembacaan cache $0.000025 / 1K token Masukan · Penulisan cache — / 1K token Masukan · Penulisan cache, 1 jam — / 1K token |
Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →
Contoh permintaan
Ailoot Ultra · Batch
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 · Batch
JSON inline pada results[].response.body
GET /v1/batches/{operation_id}
Periksa 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, berkas, dan bagian konten yang dikembalikan.
Pertahankan JSON status asli secara lengkap, setiap result/custom_id, serta body response atau error yang lengkap. Simpan results[] yang telah selesai sebagai JSONL tanpa penyaringan.
Jika respons asli perlu diperiksa
Pertahankan ID operasi asli. 503 result_pending_check memiliki X-Should-Retry:false; jangan pernah kirim ulang batch asli yang statusnya tidak diketahui.
Kolom respons
| Kolom | Jenis |
|---|---|
Kolomresults[].custom_id | Jenisstring |
Kolomresults[].response.body.choices[].message.content | Jenisstring|null |
Kolomresults[].error | Jenisobject|null |
Kolomusage | Jenisobject|null |
Kolomid | Jenisstring |
Kolommodel | Jenisstring |
Kolomendpoint | Jenisstring |
Kolomstatus | Jenisstring |
Kolomrequest_counts | Jenisobject |
Kolomresults[].id | Jenisstring |
Kolomresults[].response.status_code | Jenisinteger |
Kolomresults[].response.request_id | Jenisstring |
Kesalahan dan langkah berikutnya
| Respons | Kondisi | Langkah berikutnya |
|---|---|---|
Respons400 · invalid_request_error | KondisiEnvelope inline yang didokumentasikan tidak valid, ada kunci duplikat, atau terdapat konflik pada identitas item atau kemampuan model yang dikonfigurasi. | Langkah berikutnyaPerbaiki kolom yang ditunjukkan sebelum pengiriman baru apa pun. |
Respons401 · authentication_error | KondisiKunci API tidak valid. | Langkah berikutnyaGunakan kunci Ailoot yang berizin. |
Respons403 · permission_error | KondisiGrup Batch tidak tersedia. | Langkah berikutnyaPeriksa hak akses key/group. |
Respons422 · invalid_request_error | KondisiBatch menggunakan penagihan dari saldo; pembuatan dengan langganan ditolak. | Langkah berikutnyaGunakan grup berizin yang ditagih dari saldo. |
Respons422 · price_unavailable | KondisiPenawaran harga untuk input Batch tidak dapat dibuat. | Langkah berikutnyaSimpan respons; gunakan input keluarga API yang didokumentasikan. |
Respons402 · billing_error | KondisiCadangan Batch tidak tersedia. | Langkah berikutnyaSelesaikan kendala penerimaan sebelum mengirim permintaan baru. |
Respons503 · price_unavailable | KondisiHarga metode Batch/tarif native tidak tersedia. | Langkah berikutnyaSimpan respons; jangan mengganti harga. |
Respons503 · api_error | KondisiRute pemasok yang tepat tidak tersedia. | Langkah berikutnyaSimpan respons untuk perbaikan rute. |
Respons503 · result_pending_check | KondisiHasil asli perlu diperiksa; X-Should-Retry:false. | Langkah berikutnyaSimpan operation_id/id asli dan baca statusnya; jangan pernah mengulangi POST asli. |
Respons404 · not_found | KondisiOperasi status Batch tidak ada atau dimiliki oleh identitas lain. | Langkah berikutnyaGunakan id asli yang persis sama dan user/key/group yang sama. |
Alias
Alias model
Ailoot Ultra openai/gpt-4.1-nano:batch
Alias jalur metode
Gunakan jalur metode yang ditampilkan di atas.
ID pemanggil terkait
FAQ · OpenAI: GPT-4.1 Nano (batch)
- Input dan hasil apa yang tersedia?
POST /v1/batches·openai/gpt-4.1-nano:batch:text→text- Kolom apa yang digunakan permintaan?
POST /v1/batches·openai/gpt-4.1-nano:batch:endpoint,model,requests,completion_window,provider- Batasan apa yang berlaku?
POST /v1/batches·openai/gpt-4.1-nano:batch:requests.min_items:1