Analisis 10.000 dokumen dalam semalam.
Routing batch async dengan ~50% biaya realtime. Ekstraksi JSON terstruktur. Progres + pemulihan kegagalan berbasis SQLite. ~120 baris Python.
Arsitektur — Dua skrip + SQLite
- enqueue.py — mengiterasi direktori dokumen, mengirim satu batch request per dokumen, mencatat job_id di SQLite. Idempoten: menjalankan ulang melewati dokumen yang sudah diantrekan.
- poll_results.py — worker latar belakang yang mem-polling semua job
queuedsetiap 30 dtk, menyimpan hasil + error. Berhenti saat tak ada baris queued tersisa. - SQLite — state satu file. Tidak perlu Redis maupun Postgres untuk skala ini.
Kenapa batch: pada 10.000 dokumen dengan rata-rata 5.000 token masing-masing, realtime menghabiskan biaya sekitar dua kali lipat dibanding batch. SLA-nya 15-30 menit per dokumen, tapi kami tidak masalah — kami menjalankannya semalaman.
1. Definisikan output — Skema JSON untuk model
Kami memakai response_format: json_object + skema inline di system prompt. Untuk validasi lebih ketat, ganti ke response_format: json_schema dengan bentuk yang sama — didukung di sebagian besar model yang lebih baru.
Output schema
2. Enqueue — Kirim batch request
Enqueue every doc
Jalankan ini sekali. Skrip menelusuri direktori, mengantrekan setiap dokumen, lalu keluar. SQLite mengingat apa yang sudah diantrekan — aman untuk dijalankan ulang.
3. Polling untuk penyelesaian — Poller latar belakang
Mem-polling setiap job yang queued tiap 30 dtk. Menyimpan hasil ke SQLite. Menyimpan error ke SQLite. Keluar saat tak ada lagi baris queued.
Background poller
4. Laporan progres — Lihat sejauh mana progresmu
Jalankan kapan saja untuk memeriksa % selesai + akumulasi penghematan batch.
Progress report
Tips produksi
- Webhook alih-alih polling — untuk >1.000 dokumen, konfigurasikan webhook
batch.completed(lihat /docs/webhooks) dan lewati poller. Anoman mendorong hasil begitu siap. - Retry per dokumen — jika sebuah dokumen gagal dengan
guardrail_error(redaksi PII menghapus terlalu banyak konten), coba ulang dengan headerx-anoman-policy-groupyang menunjuk ke policy group yang lebih permisif. - Dokumen panjang — untuk dokumen >50K token, pecah dan jalankan beberapa batch job per dokumen, lalu gabungkan hasilnya. Lebih murah dibanding realtime-dengan-konteks-panjang.
- Batas biaya — tetapkan anggaran bulanan per key. Pipeline yang lepas kendali kena 402 alih-alih menguras dompetmu.
- Promosi otomatis ke realtime — Anoman otomatis mempromosikan batch job pada 80% SLA. Kamu tidak akan melewatkan tenggat, tapi kamu berhenti berhemat pada job-job tertentu itu. Muncul di trace.
Lihat ekonomi batch di dashboard.
Penghematan per hari dirinci per model.