OpenAI: GPT-4o (batch)
GPT-4o menggabungkan pemahaman teks dan gambar dengan penulisan, pemrograman, Structured Outputs, dan alat aplikasi. Gunakan model untuk menyusun respons berbasis bukti, menafsirkan bahan visual, atau mengembalikan field yang ditentukan dari kumpulan sumber yang besar.
Tentang model
Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.
GPT-4o adalah model GPT serbaguna OpenAI untuk pemahaman teks dan gambar, penulisan, serta pekerjaan aplikasi. Huruf “o” berarti “omni”, sementara model yang didokumentasikan ini menerima teks dan gambar serta mengembalikan teks, termasuk Structured Outputs. Permintaan praktis dapat menggabungkan arahan tertulis dengan foto, tangkapan layar, atau halaman dokumen dan meminta penjelasan jelas, hasil yang disunting, atau field tertentu untuk tahap aplikasi berikutnya.
Untuk laporan, sediakan dokumen sumber dan keputusan yang harus didukung laporan. Tentukan tanggal, satuan, dan label bukti yang relevan, lalu minta perbandingan yang memisahkan pengamatan, asumsi, dan informasi yang tidak tersedia. Untuk tugas visual, tunjukkan objek, grafik, atau keadaan antarmuka yang penting serta sertakan konteks di sekitarnya. Untuk perubahan kode, sediakan kode yang terdampak, perilaku yang diinginkan, dan batasan yang harus tetap utuh. Ini merupakan cara konkret menggunakan kemampuan teks dan gambar model tanpa mengandalkan prompt untuk menyiratkan keseluruhan tugas.
Profil GPT-4o OpenAI saat ini mencantumkan jendela konteks 128000 token, keluaran maksimum 16384 token, dan batas pengetahuan 1 Oktober 2023. Produsen mencantumkan beberapa snapshot GPT-4o bertanggal secara terpisah. Percakapan, bahan masukan, dan jawaban yang dihasilkan berbagi anggaran konteks, sehingga kumpulan dokumen besar tetap memerlukan penataan serta ruang untuk hasil akhirnya. Fakta yang berubah atau berasal dari sistem privat harus disediakan secara langsung atau diperoleh melalui alat yang dikonfigurasi secara eksplisit.
Panduan penglihatan menerima PNG, JPEG, WebP, dan GIF nonanimasi. GPT-4o mendukung detail gambar low, high, dan auto; high dan auto menggunakan pemrosesan berbasis petak gambar. Perbesar label kecil, jaga teks tetap tegak, dan pertahankan legenda atau diagram di sekitar saat menafsirkan grafik. Keterbatasan yang didokumentasikan mencakup pelokalan spasial yang presisi, penghitungan objek secara perkiraan, sebagian tulisan non-Latin, serta tampilan panorama atau mata ikan. Model juga dapat mendeskripsikan gambar secara keliru, jadi simpan sumber dan minta pengamatan spesifik yang mendukung interpretasi. Dalam alur penglihatan yang didokumentasikan OpenAI, total muatan permintaan dibatasi 512 MB dan satu permintaan dapat memuat hingga 1500 gambar; gambar serta teks juga harus muat dalam konteks model.
Alur masukan berkas OpenAI memberikan teks yang diekstrak dan gambar halaman PDF kepada model yang mendukung penglihatan. Dokumen kantor non-PDF memberikan teks yang diekstrak, bukan grafik tertanamnya, dan data lembar kerja dilengkapi dari hingga 1000 baris pertama per lembar. Setiap berkas harus berukuran di bawah 50 MB, dengan gabungan 50 MB untuk satu permintaan. Chat Completions mendukung bagian berkas PDF; alur Responses yang didokumentasikan menerima format berkas tambahan. Pilih representasi PDF ketika ketelitian visual penting dan jaga pengenal sumber tetap terlihat dalam hasil.
Streaming dapat mengembalikan respons saat dihasilkan. Structured Outputs membatasi respons yang telah selesai pada subset JSON Schema yang didukung, sehingga berguna untuk ekstraksi dokumen atau objek aplikasi dengan field tertentu. Mode JSON hanya menyangkut validitas JSON. Tentukan tipe yang diharapkan, nilai yang diizinkan, dan penanganan bukti yang tidak tersedia, lalu tangani penolakan eksplisit atau respons yang tidak lengkap secara terpisah. Skema tidak membuktikan kebenaran faktual suatu nilai, sehingga field yang diminta harus tetap dapat ditelusuri ke bahan yang disediakan.
Produsen mendukung pemanggilan fungsi, pencarian web, pencarian berkas, interpretasi kode, dan koneksi MCP. Fungsi khusus memerlukan deskripsi bermakna serta skema argumen; aplikasi menjalankan tindakan yang diminta dan mengembalikan hasilnya untuk langkah model berikutnya. GPT-4o juga dapat mengarahkan alat pembuatan gambar terpisah dalam alur Responses yang dikonfigurasi. Gambar buatan alat merupakan hasil tersendiri, sementara respons asli model GPT-4o yang didokumentasikan berupa teks. Penjelasan akhir agen harus menggunakan pengamatan yang benar-benar diperoleh atau dihitung, bukan menganggap usulan pemanggilan alat sebagai operasi yang telah selesai.
Predicted Outputs tersedia untuk GPT-4o ketika membuat ulang teks atau kode yang sebagian besar sudah diketahui dengan perubahan kecil. Sediakan konten yang ada dan perubahan yang presisi, lalu periksa hasil yang dikembalikan. Jalur ini hanya untuk teks, tidak dapat digabungkan dengan pemanggilan fungsi, dan mengecualikan logprobs, max_completion_tokens, serta beberapa kontrol lain. Permintaan berbasis alat merupakan pilihan terpisah ketika jawaban bergantung pada informasi baru dari operasi eksternal.
OpenAI mendokumentasikan fine-tuning untuk GPT-4o, dan panduan optimasinya secara khusus menyebut snapshot 6 Agustus 2024 untuk fine-tuning penglihatan dengan contoh gambar. Alur penyesuaian khusus snapshot itu berbeda dari permintaan biasa ke alias model. Untuk penulisan, analisis, atau ekstraksi sehari-hari, mulailah dengan arahan yang berguna dan contoh keluaran yang diinginkan. Tindak lanjut dapat menyelesaikan satu fakta yang tidak tersedia, merevisi field, atau menyempurnakan hasil yang sama sambil mempertahankan bukti serta batasan tugas.
Ailoot Ultra · Batch POST /v1/batches openai/gpt-4o:batch
openai/gpt-4o:batchMulai
GPT-4o menggabungkan pemahaman teks dan gambar dengan penulisan, pemrograman, Structured Outputs, dan alat aplikasi. Gunakan model untuk menyusun respons berbasis bukti, menafsirkan bahan visual, atau mengembalikan field yang ditentukan dari kumpulan sumber yang besar.
- 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-4o: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-4o:batch, openai/gpt-4o | 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.0025 / 1K token Keluaran · Token keluaran $0.01 / 1K token Masukan · Pembacaan cache $0.00125 / 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.0025 / 1K token Keluaran · Token keluaran $0.01 / 1K token Masukan · Pembacaan cache $0.00125 / 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-4o: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-4o:batch', 'openai/gpt-4o']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"openai/gpt-4o: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-4o:batch
Alias jalur metode
Gunakan jalur metode yang ditampilkan di atas.
ID pemanggil terkait
FAQ · OpenAI: GPT-4o (batch)
- Input dan hasil apa yang tersedia?
POST /v1/batches·openai/gpt-4o:batch:text→text- Kolom apa yang digunakan permintaan?
POST /v1/batches·openai/gpt-4o:batch:endpoint,model,requests,completion_window,provider- Batasan apa yang berlaku?
POST /v1/batches·openai/gpt-4o:batch:requests.min_items:1