Reliability and RoutingJuly 15, 2026Big Y

Strategi Timeout AI API: Anggaran Connect, Read, Stream, dan Queue

Tetapkan anggaran timeout AI API produksi untuk connect, read, stream, queue, retry, fallback, dan observability sebelum insiden menjadi mahal.

Strategi Timeout AI API: Anggaran Connect, Read, Stream, dan Queue

Timeout bukan satu angka. Strategi timeout AI API untuk produksi membutuhkan anggaran terpisah untuk menghubungkan, membaca respons, streaming event token, menunggu dalam antrean, melakukan retry dengan aman, dan menentukan kapan fallback harus berhenti. Jika anggaran itu digabung, provider yang lambat, connection pool yang terblokir, atau stream yang setengah terbuka bisa terlihat seperti insiden yang sama.

Tujuan strategi timeout AI API adalah membuat kegagalan tetap terbatas dan dapat diamati. Permintaan chat yang dilihat pengguna mungkin memerlukan token pertama yang cepat dan batas berhenti yang tegas. Tugas riset latar belakang mungkin memerlukan deadline antrean dan polling. Pekerjaan ekstraksi skema mungkin memerlukan satu retry pada route yang sama sebelum fallback. Setiap alur kerja membutuhkan anggaran sendiri, dan setiap timeout harus meninggalkan bukti untuk engineering, finance, dan pemilik produk.

Flatkey cocok untuk pekerjaan reliabilitas ini karena kebijakan timeout lebih mudah ditinjau ketika akses model, routing, billing, analitik penggunaan, dan kontrol operasional ditangani melalui satu gateway. Gunakan checklist di bawah sebagai kebijakan aplikasi, lalu validasi baris model Flatkey saat ini, family endpoint, bukti penggunaan, dan perilaku route sebelum mengirim traffic produksi.

Strategi timeout AI API dalam satu tabel

Mulailah dengan menetapkan satu pemilik dan satu kondisi berhenti untuk setiap lapisan timeout.

Lapisan timeoutYang dilindungiAnggaran awalAturan retryAturan fallbackBukti yang dicatat
ConnectDNS, TLS, keterjangkauan gateway, dan penyiapan socketPendek, biasanya lebih rendah daripada anggaran requestRetry hanya jika tidak ada request body yang diterimaGunakan backup route hanya ketika family endpoint setaraconnect_ms, route, host, kelas error
Pool atau queue acquireMenunggu worker lokal, connection, atau slot rate-limitSangat pendek untuk pekerjaan interaktifJangan retry secara membabi buta; kurangi concurrency terlebih dahuluQueue atau kurangi beban sebelum mengganti modelusia queue, waktu tunggu pool, concurrency, pemilik
Request/readMenunggu body respons setelah request dikirimTerkait dengan UX atau deadline pekerjaanSatu atau dua retry terbatas untuk kegagalan sementaraFallback hanya ke route yang mempertahankan kontrak outputID request, status, read timeout, usage jika ada
Stream first eventMenunggu SSE pertama atau event token pertamaLebih rendah daripada deadline total streamRetry sebelum output yang terlihat pengguna dimulaiFallback hanya sebelum output parsial dikomitlatensi event pertama, model yang diminta, model yang dilayani
Stream idleJeda antar chunk stream setelah output dimulaiBerdasarkan gap antar-event normalResume hanya ketika API mendukungnya; jika tidak, berhenti dengan bersihHindari mengganti model di tengah jawabansequence terakhir, gap idle, penanda output parsial
Background queuePekerjaan jangka panjang di luar request penggunaDeadline eksplisit dan interval pollingPolling sampai state terminal atau deadlineEscalate atau cancel sebelum pekerjaan duplikatresponse/job ID, status, usia queue, alasan cancel
Fallback stopMencegah retry menjadi biaya yang tak terkendaliBatas keras untuk attempt dan spendBerhenti setelah anggaran habisTinjauan manusia untuk perubahan alur kerja berisiko tinggiattempts, alasan fallback, biaya, pemilik

Tabel ini adalah inti dari strategi timeout AI API. Angka yang tepat harus berasal dari traffic nyata, tetapi pemisahan ini harus sudah ada sebelum insiden produksi pertama.

Bangun anggaran dari maksud alur kerja

Jangan menyalin satu nilai timeout ke setiap fitur AI. Timeout yang terasa longgar untuk evaluasi latar belakang bisa tidak dapat diterima dalam chat dukungan. Timeout yang baik untuk jawaban teks bisa terlalu singkat untuk workflow tool dengan konteks panjang. Tulis strategi timeout AI API berdasarkan maksud alur kerja:

  1. Chat interaktif membutuhkan anggaran event pertama, anggaran respons total, dan pesan pengguna yang ramah saat anggaran habis.
  2. UX streaming membutuhkan anggaran event pertama dan idle, karena stream yang terhubung tetapi berhenti menghasilkan event berbeda dari respons lengkap yang lambat.
  3. Ekstraksi terstruktur membutuhkan anggaran retry validitas skema, bukan loop retry umum.
  4. Pekerjaan agentic atau yang berat pada tool membutuhkan deadline antrean, batas panggilan tool, jalur cancel, dan catatan polling.
  5. Tinjauan finance, procurement, atau compliance membutuhkan fallback yang konservatif karena mengganti model dapat mengubah risiko, biaya, bukti, atau status persetujuan.

Panduan timeout OpenAI saat ini untuk SDK resmi menyatakan bahwa request default time out setelah 10 menit, dan SDK Python maupun JavaScript menyediakan opsi timeout. Default ini berguna untuk diketahui, tetapi tidak boleh menjadi kebijakan aplikasi. Tim produksi tetap memerlukan anggaran workflow yang lebih ketat untuk pengalaman pengguna, biaya, dan respons insiden.

Anggaran connect dan pool harus gagal cepat

Anggaran connect menjawab pertanyaan sempit: apakah client dapat mencapai gateway atau endpoint provider cukup cepat untuk memulai request? Anggaran ini biasanya harus jauh lebih pendek daripada anggaran read. Jika penyiapan connection gagal, tidak ada model yang menghasilkan apa pun, sehingga keputusan retry risikonya lebih rendah daripada retry setelah respons parsial.

Tim Python yang menggunakan HTTPX dapat mengekspresikannya dengan jelas karena HTTPX memisahkan timeout connect, read, write, dan pool. OpenAI Python SDK juga menerima objek httpx.Timeout, sehingga aplikasi dapat menjaga anggaran connect dan read tetap terpisah:

import os
import httpx
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["FLATKEY_API_KEY"],
    base_url="https://router.flatkey.ai/v1",
    timeout=httpx.Timeout(
        timeout=20.0,
        connect=2.0,
        read=10.0,
        write=10.0,
        pool=1.0,
    ),
    max_retries=1,
)

Bagian yang penting bukan nilai contoh tersebut. Bagian yang penting adalah bahwa strategi timeout AI API tidak menghabiskan 20 detik untuk menemukan bahwa socket tidak dapat dibuka atau bahwa pool koneksi lokal sudah jenuh.

Untuk Node.js, OpenAI JavaScript SDK menyediakan opsi timeout dalam milidetik, dan Node juga menyediakan AbortSignal.timeout(delay) untuk API yang menerima abort signal. Gunakan pola itu agar batas waktu aplikasi tetap eksplisit alih-alih bergantung pada pemanggil yang tak berbatas.

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.FLATKEY_API_KEY,
  baseURL: "https://router.flatkey.ai/v1",
  timeout: 20_000,
  maxRetries: 1,
});

Anggap timeout koneksi sebagai sinyal infrastruktur. Jika nilainya melonjak, periksa DNS, TLS, keterjangkauan gateway, batas pool, kejenuhan worker lokal, dan kebijakan egress sebelum mengubah model.

Anggaran read melindungi biaya dan pengalaman pengguna

Anggaran read adalah waktu maksimum yang akan ditunggu aplikasi untuk respons setelah permintaan diterima. Di sinilah beban kerja AI berbeda dari API JSON biasa: model mungkin sah-sah saja lambat, output bisa panjang, atau prompt dapat memicu pekerjaan tool. Karena itu, timeout read harus ditetapkan dari deadline alur kerja, bukan dari default library.

Gunakan aturan berikut:

Alur kerjaAturan anggaran readYang dilakukan saat timeout
Chat atau dukunganAnggaran berdasarkan kesabaran pengguna dan SLO layananTampilkan status timeout yang mulus, catat permintaan, coba ulang hanya sebelum output terlihat oleh pengguna
Ekstraksi batchAnggaran dari deadline job dan kapasitas antreanCoba ulang rute yang sama sekali, lalu tandai record untuk ditinjau
Kode atau penalaranAnggaran dari kompleksitas tugas dan batas toolPertimbangkan mode latar belakang jika tugas memang berjalan lama
Keuangan atau pengadaanAnggaran dari SLA peninjauanBerhenti dan antrekan daripada diam-diam mengubah rute
Otomasi internalAnggaran dari deadline dependensi downstreamGagal lebih awal agar pemanggil bisa melakukan kompensasi

Strategi timeout AI API juga harus membatasi ukuran output, panggilan tool, dan upaya fallback. Timeout read saja tidak mengendalikan biaya jika lapisan retry menciptakan pekerjaan duplikat.

Anggaran streaming membutuhkan dua jam

Streaming tidak selesai hanya dengan menaikkan timeout permintaan. Respons AI yang di-stream memiliki setidaknya dua jam:

  1. Timeout event pertama: berapa lama pengguna menunggu sebelum event stream atau token pertama.
  2. Timeout idle: berapa lama aplikasi menoleransi keheningan setelah streaming dimulai.

Referensi OpenAI API menjelaskan streaming sebagai server-sent events ketika stream diaktifkan. Untuk background responses, OpenAI juga mendokumentasikan streaming dengan sequence number sehingga klien dapat melacak posisi dan melakukan reconnect jika didukung. Perbedaan itu penting: jika API bisa melanjutkan stream dari cursor, strategi timeout AI API dapat pulih dengan cara yang berbeda dibandingkan stream biasa tanpa kontrak resume.

Jangan ganti model setelah sebagian output sudah terlihat oleh pengguna kecuali produk memang dirancang untuk itu. Jawaban fallback yang dimulai di tengah jawaban sebelumnya biasanya lebih buruk daripada pesan kegagalan yang bersih. Untuk chat yang di-stream, log:

FieldMengapa ini penting
time_to_first_event_msMemisahkan latensi awal model dari total waktu penyelesaian
last_event_atMenunjukkan di mana stream menjadi idle
sequence_number atau cursorMemungkinkan resume yang aman saat API mendukungnya
partial_output_committedMencegah retry yang tidak aman setelah output terlihat
requested_model dan served_modelMenunjukkan apakah routing atau fallback mengubah perilaku
finish_reason atau event terminalMembedakan keberhasilan dari stream yang ditinggalkan

Pasangkan halaman ini dengan panduan Flatkey tentang keandalan streaming AI API ketika mode kegagalan utama adalah bentuk SSE, disconnect klien, atau penanganan output parsial.

Anggaran antrean harus berada di luar request pengguna

Beberapa tugas AI tidak cocok sebagai request sinkron. Riset multi-langkah, alur kerja tool yang panjang, peninjauan dokumen besar, dan pembuatan media yang kompleks dapat berjalan lebih lama daripada yang semestinya dibiarkan terbuka oleh sebuah request web. Kebijakan timeout harus memindahkan beban kerja tersebut ke mode antrean atau background alih-alih membuat pengguna menunggu pada satu koneksi yang rapuh.

Dokumentasi mode background OpenAI menjelaskan Responses asinkron yang dapat dipoll saat berada dalam status queued atau in_progress, dibatalkan saat diperlukan, dan di-stream dari background mode ketika dibuat dengan cara itu. Itulah model mental yang tepat untuk pekerjaan AI jangka panjang meskipun implementasi provider atau gateway berbeda: request pengguna membuat job yang tahan lama, dan aplikasi menerapkan deadline antrean, cadence polling, aturan pembatalan, serta kebijakan retensi hasil.

Anggaran antrean harus mendefinisikan:

Bidang queuePertanyaan kebijakan
Usia maksimum queueBerapa lama pekerjaan dapat menunggu sebelum dianggap usang?
Interval pollingSeberapa sering aplikasi harus memeriksa status tanpa menimbulkan beban berlebih?
Aturan pembatalanSiapa yang dapat membatalkan, dan apa yang terjadi pada pekerjaan parsial?
Pencegah duplikasiBagaimana Anda mencegah retry membuat pekerjaan mahal yang sama dua kali?
Notifikasi penggunaApakah pengguna melihat pending, failed, cancelled, atau completed?
Pemilik biayaKunci, tim, pelanggan, atau alur kerja mana yang memiliki pengeluaran tersebut?

Di sinilah strategi timeout AI API menjadi kebijakan operasional, bukan sekadar pengaturan SDK.

Anggaran retry sebelum anggaran fallback

Retry dan fallback adalah tindakan yang berbeda. Retry mengulangi kontrak yang sama. Fallback mengubah rute, model, penyedia, kapabilitas, biaya, atau permukaan bukti.

README Python dan JavaScript SDK OpenAI menyatakan bahwa error koneksi, timeout permintaan 408, konflik 409, batas laju 429, dan error server di-retry dua kali secara default dengan exponential backoff singkat. Itu perilaku SDK yang berguna, tetapi dapat mengejutkan tim yang menambahkan retry gateway sendiri, retry queue, dan retry job di atasnya. Hitung setiap lapisan.

Gunakan anggaran retry seperti ini:

workflow: support_chat_answer
timeouts:
  connect_ms: 2000
  first_event_ms: 5000
  stream_idle_ms: 20000
  total_ms: 30000
retry:
  sdk_max_retries: 1
  gateway_max_retries: 1
  retry_only_before_partial_output: true
fallback:
  allowed_before_first_event:
    - reviewed_support_backup_route
  blocked_after_partial_output: true
  stop_when:
    - schema_contract_changes
    - tool_support_missing
    - cost_cap_exceeded
    - data_boundary_changes
evidence:
  required:
    - workflow
    - owner_key
    - requested_model
    - served_model
    - timeout_layer
    - retry_attempt
    - fallback_reason
    - usage_units

Untuk jalur evaluasi fallback yang lebih mendalam, gunakan panduan Flatkey tentang evaluasi fallback model. Untuk perilaku khusus retry, gunakan panduan Flatkey tentang strategi retry AI API.

Bidang observabilitas menentukan apakah timeout dapat di-debug

Timeout tanpa bukti hanyalah keluhan. Strategi timeout AI API harus mewajibkan cukup banyak field untuk menjawab apa yang gagal, siapa pemiliknya, apakah model menghasilkan sesuatu, dan berapa biaya percobaan tersebut.

Bidang buktiMengapa harus ada di kebijakan timeout
Nama workflowMenghubungkan timeout ke permukaan produk
Owner key, tim, pelanggan, atau lingkunganMenetapkan pengeluaran dan kepemilikan insiden
Lapisan timeoutMemisahkan connect, pool, read, stream idle, queue, dan penghentian fallback
Model yang diminta dan model yang dilayaniMengekspos perubahan rute dan fallback
Famili endpointMemisahkan chat, responses, Anthropic, Gemini, image, video, dan bentuk lainnya
Request ID atau response/job IDMemungkinkan korelasi provider, gateway, dan aplikasi
Jumlah retry dan alasan fallbackMencegah amplifikasi retry yang tersembunyi
Satuan penggunaan dan sinyal biayaMembantu keuangan meninjau pekerjaan duplikat atau yang ditinggalkan
Flag output parsialMelindungi pengguna dari jawaban streamed yang duplikat

Situs publik Flatkey saat ini memposisikan produk di sekitar akses model terpadu, routing, billing, analitik penggunaan, dan kontrol operasional. Halaman pricing saat ini adalah jalur tinjauan untuk akses model, routing, dan opsi billing, dan snapshot API pricing 3 Juli 2026 menampilkan famili endpoint termasuk openai, anthropic, gemini, image-generation, openai-video, dan video. Perlakukan itu sebagai bukti bertanggal, bukan klaim ketersediaan permanen. Selalu validasi katalog saat ini dan jalankan tes rute kecil sebelum peluncuran produksi.

Rencana rollout praktis

Gunakan urutan rollout ini saat menambahkan atau merevisi strategi timeout AI API:

  1. Pilih satu workflow dan beri nama pemiliknya.
  2. Pilih anggaran connect, pool, read, stream first-event, stream idle, queue, retry, dan fallback.
  3. Nonaktifkan lapisan retry duplikat atau turunkan agar jumlah total percobaan menjadi jelas.
  4. Tambahkan logging lapisan timeout sebelum mengubah perilaku rute.
  5. Jalankan kasus uji normal, lambat, dibatasi laju, streamed, dan kegagalan terkontrol.
  6. Konfirmasi bahwa retry berhenti sebelum output parsial diduplikasi.
  7. Konfirmasi bahwa fallback mempertahankan tools, skema, boundary data, dan ekspektasi biaya yang diperlukan.
  8. Tinjau log request, satuan penggunaan, dan bukti biaya di Flatkey.
  9. Pindahkan hanya workflow yang telah diuji ke produksi.
  10. Ulangi untuk workflow berikutnya alih-alih menyatakan satu kebijakan timeout global.

Strategi timeout AI API terbaik cukup kecil untuk diuji dan cukup ketat untuk menghentikan. Strategi itu harus membuat timeout menjadi biasa saja: satu lapisan gagal, anggaran retry jelas, fallback tetap berada dalam kontrak yang disetujui atau berhenti, dan log menunjukkan apa yang terjadi.

Pertanyaan yang sering diajukan

Apa itu strategi timeout AI API?

Strategi timeout AI API adalah kebijakan di tingkat workflow yang menetapkan anggaran terpisah untuk setup koneksi, waktu permintaan/read, event pertama streaming, jeda idle streaming, queue background, retry, fallback, dan observabilitas.

Mengapa tidak menggunakan timeout default SDK?

Default SDK adalah pagar pengaman yang luas. Aplikasi produksi membutuhkan anggaran yang lebih ketat berdasarkan pengalaman pengguna, biaya, perilaku retry, dan risiko alur kerja. SDK resmi OpenAI menyediakan pengaturan timeout, sehingga tim dapat menetapkan batas khusus per alur kerja.

Apakah setiap timeout harus memicu fallback?

Tidak. Timeout koneksi mungkin aman untuk di-retry atau dialihkan. Timeout idle stream setelah sebagian output yang terlihat oleh pengguna biasanya harus dihentikan dengan bersih. Alur kerja keuangan atau kepatuhan mungkin memerlukan antrean atau peninjauan manusia вместо fallback otomatis.

Berapa kali sebuah request AI seharusnya diberi retry?

Hitung semua lapisan retry secara keseluruhan: SDK, gateway, worker, queue, dan aplikasi. Jaga totalnya tetap kecil, log setiap percobaan, dan berhenti sebelum retry menimbulkan biaya ganda atau output yang terlihat oleh pengguna menjadi tidak konsisten.

Apa yang harus diukur tim terlebih dahulu?

Mulailah dengan tingkat timeout per lapisan, waktu ke event pertama, kegagalan idle stream, penggandaan retry, tingkat fallback, biaya per hasil yang diterima, dan usia antrean yang belum terselesaikan. Metrik tersebut menunjukkan apakah kebijakan timeout melindungi alur kerja atau justru menyembunyikan insiden.

Bagaimana Flatkey membantu operasi timeout?

Flatkey memberi tim satu permukaan gateway untuk akses model yang terhubung, routing, penagihan, analitik penggunaan, dan kontrol operasional. Gunakan untuk meninjau model saat ini dan path endpoint, mengamati bukti request, serta menjaga keputusan timeout, retry, fallback, dan biaya tetap terikat pada satu owner key.

Mulailah dengan harga Flatkey, pilih satu alur kerja, lalu dapatkan key dan uji anggaran timeout sebelum merutekan traffic produksi melaluinya.