Streaming API AI: SSE dan timeout
Pahami event Chat dan Responses, parsing SSE, output efektif pertama, timeout per fase, serta diagnosis cancellation 499.
Streaming API AI mengirim event saat model menghasilkan output, bukan menunggu seluruh body. Cara ini meningkatkan respons yang dirasakan, tetapi tidak selalu mengurangi latensi model dan mengharuskan klien membaca protokol endpoint yang benar.
Chat Completions mengirim completion chunk, sedangkan Responses memakai response event bertipe. Klien bisa menerima HTTP 200 tetapi tidak menampilkan apa pun jika mengharapkan bentuk yang salah.
Mulai tanpa buffering
curl -N -sS https://modelflare.dev/v1/responses \
-H "Authorization: Bearer $MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"YOUR_RESPONSES_MODEL","input":"Explain SSE.","stream":true}'
Uji permintaan yang sama tanpa streaming untuk memisahkan validasi dari parsing. Gunakan ID dari Model & Harga.
Perlakukan SSE sebagai protokol
Server-Sent Events berisi record berbingkai, bukan potongan JSON acak. Klien harus mencegah buffering pada HTTP, proxy, dan UI; menggabungkan pembacaan parsial; mengenali teks, reasoning, alat, selesai, dan error; mempertahankan cancellation serta usage akhir; lalu menutup setelah terminal event.
Ukur tiap fase
| Ukuran | Arti |
|---|---|
| Koneksi dan autentikasi | Mencapai gateway dan memvalidasi kunci |
| Header upstream | Rute terpilih mulai merespons |
| Output efektif pertama | Event teks, reasoning, atau alat pertama yang berguna |
| Teks terlihat pertama | Konten pertama yang dilihat pengguna |
| Waktu total | Selesai, gagal, atau dibatalkan |
Tool call dapat menjadi output efektif sebelum teks terlihat. Untuk operasi, ukur output efektif pertama; untuk UX, ukur juga teks terlihat pertama.
Timeout berdasarkan fase
Pisahkan timeout koneksi, header atau output pertama, idle stream, dan deadline total. Reasoning atau alat mungkin lebih lama sebelum memberi teks. Tentukan anggaran dari workload nyata, bukan satu timeout global yang singkat.
Jika klien, browser, atau proxy menutup lebih dulu, Modelflare dapat mencatat 499. Ini bukti cancellation downstream, bukan bukti tunggal kegagalan model atau channel. Bandingkan Abort, timeout proxy, output pertama, model, grup, dan waktu.
Saat teks tidak muncul
- Ulangi dengan "stream": false.
- Pastikan model mendukung endpoint.
- Tangkap event mentah sebelum UI.
- Cari event alat atau reasoning tanpa teks.
- Singkirkan buffering perantara.
- Periksa terminal event pada parser.
- Bandingkan status, waktu, dan cancellation.
Jika non-streaming berhasil dan event mentah tiba, masalah biasanya ada pada parsing atau rendering. Jika tidak ada event, gunakan panduan error. Untuk format, lihat Responses API atau Chat Completions.