Metrik latency AI API: TTFT, response pertama, dan kecepatan output

Panduan Request Timeline untuk memisahkan upstream Header, SSE Event pertama, response efektif, teks terlihat, total latency, dan output speed.

Latency AI API bukan satu angka. Untuk streaming request, catat waktu upstream Header, SSE Event tidak kosong pertama, Content atau Action efektif pertama, teks terlihat pertama, dan penyelesaian response. Semua milestone menjawab pertanyaan berbeda dan tidak boleh disebut “TTFT” secara bersamaan.

Untuk chat teks, Time to First Visible Text biasanya mewakili pengalaman pengguna. Pada workflow reasoning atau Tool, Function Arguments dapat menjadi output efektif lebih awal. Generation Speed diukur terpisah setelah output dimulai.

Bangun Request Timeline sebelum menamai metrik

Gunakan Clock monotonik dan satu Origin:

t0  gateway menerima request
t1  memulai upstream request
t2  upstream response headers tiba
t3  SSE Event tidak kosong pertama
t4  Content atau Action efektif pertama
t5  Text Delta terlihat pertama
t6  upstream Body selesai atau tertutup
t7  gateway Handler selesai

Tidak semua request memiliki semua milestone. Nilai yang tidak ada tetap absent, bukan 0.

Field Pengukuran Batas penting
auth_ms Autentikasi Local phase
distribution_ms Channel Selection dan Routing Local phase
body_read_ms Membaca Request Body Menemukan upload lambat
upstream_headers_ms Upstream Start hingga Headers Origin bukan Gateway Receipt
first_sse_event_ms Receipt hingga Event pertama Bisa hanya Metadata
first_response_ms Receipt hingga Content/Action efektif Text, Reasoning, Function Arguments
first_text_delta_ms Receipt hingga teks terlihat Dapat tidak ada
upstream_done_ms Receipt hingga upstream tutup Close tidak selalu sukses
total_handler_ms Receipt hingga akhir relay Gateway E2E terdekat
visible_output_tps Tokens / visible window Diagnosis pengguna, bukan system TPS

Jangan mengurangi duration dengan Origin berbeda.

TTFT memiliki beberapa arti praktis

Panduan benchmark NVIDIA NIM biasanya memasukkan network, queue, dan prompt prefill ke TTFT serta mengecualikan response awal kosong. Stream modern dapat mengirim Metadata, Reasoning, Function Arguments, Tool Input, atau Heartbeat sebelum teks.

Nama Definisi Penggunaan
Time to Headers Start hingga Upstream Headers Network dan Admission
Time to First Event Hingga SSE Event tidak kosong Transport Liveness
Time to First Effective Response Hingga Content/Action berguna Agent dan Reasoning
Time to First Visible Text Hingga teks dapat dirender Pengalaman chat

Dashboard TTFT harus menjelaskan definisi yang dipakai.

Pisahkan responsivitas dan Generation Speed

end_to_end_latency = final_response_time - request_start_time
visible_generation_window = final_response_time - first_visible_text_time
visible_output_tps = output_tokens / visible_generation_window_seconds

Inter-token Latency mengecualikan TTFT dan biasanya membagi waktu tersisa dengan output_tokens - 1. Jangan hitung SSE Event sebagai Token; satu Event dapat berisi nol atau beberapa Token.

Teks cepat dengan TPS rendah terasa responsif lalu melambat. Teks lambat dengan TPS tinggi terasa diam lalu selesai cepat. Per-user TPS dan Aggregate Throughput juga berbeda.

Reasoning dan Tool dapat muncul sebelum teks

Pada Text-only, first_response_ms dan first_text_delta_ms berdekatan. Function Arguments pada 1,8 detik dan teks pada 6,4 detik berarti Action sudah tersedia tetapi pengguna belum melihat prosa.

  • Terminal Agent dapat memakai First Effective Action;
  • UI teks memakai First Visible Text;
  • Tool API mungkin tidak menghasilkan teks;
  • SSE Envelope awal hanya membuktikan koneksi.

Panduan AI API Streaming menjelaskan parsing, Cancellation, dan Idle Timeout. Hitung metrik setelah Event diklasifikasikan dengan benar.

Diagnosis tahap lambat dalam urutan tetap

Gejala Metrik Periksa
Lambat sebelum Headers upstream_headers_ms Network, Admission, Queue, Route, Region
Headers cepat, Output terlambat first_response_ms Model Queue, Prefill, Reasoning, Inflight
Event cepat, Output terlambat Gap SSE→Response Metadata, Heartbeat, Reasoning Startup
Action cepat, Text terlambat Gap Response→Text Tool/Reasoning, Composition
Text cepat, Generation lambat visible_output_tps Decode, Contention, Long Context
Upstream normal Local fields Auth, Policy, Client Upload

Satu metrik tidak membuktikan Root Cause. Gabungkan Route, Region, Provider, dan Concurrent Load.

Baca tiga synthetic trace

Trace A: menunggu Headers

Metric Value
upstream_headers_ms 6.100 ms
first_response_ms 6.350 ms
first_text_delta_ms 6.400 ms
total_handler_ms 9.200 ms
visible_output_tps 42

Sebagian besar waktu sebelum Headers. Periksa Route, Admission, Network, Region, dan Load sebelum UI.

Trace B: Action sebelum teks

Metric Value
upstream_headers_ms 240 ms
first_response_ms 2.900 ms
first_text_delta_ms 8.700 ms
total_handler_ms 10.200 ms
visible_output_tps 55

Action muncul pada 2,9 detik, teks 5,8 detik kemudian. Periksa Reasoning atau Tool; menambah Header Timeout tidak membantu.

Trace C: mulai cepat, generasi lambat

Metric Value
upstream_headers_ms 260 ms
first_response_ms 420 ms
first_text_delta_ms 430 ms
total_handler_ms 20.430 ms
visible_output_tps 9,8

Teks mulai cepat tetapi generation hampir 20 detik. Bandingkan Output Length, Context, Channel, Inflight, dan Provider. First-output Timeout tidak mendeteksi pola ini.

Bandingkan hanya pada kondisi terkontrol

Catat Model dan Route, distribusi Token, Streaming, Reasoning Effort, Tools, Region, Network Path, Concurrency, Sampling, Max Output, Warmup, Retry Policy, Sample Size, dan Percentile Method.

Bandingkan p50, p95, p99, bukan satu Average. Pertahankan Timeout dan Error. Prompt, panjang, atau Concurrency berbeda tidak boleh menjadi ranking kecepatan model.

Simpan Metadata, bukan Content

Request ID, Timestamp, Model, Group, Channel Reference, Status, Token Counts, Timing Fields, Event Counts, Inflight, Coarse Region, dan classifier seperti upstream_headers_slow biasanya cukup.

Prompt, Response, API Key, dan identitas plaintext tidak diperlukan. Terapkan Retention dan Access Control pada Metadata.

Mulai investigasi dari Timeline, gunakan Reliable AI API Routing untuk membandingkan Attempts dan AI API Error Troubleshooting untuk menghubungkan Timing dengan terminal Status. Dengan itu Admission, Model Startup, Reasoning/Tools, Visible Generation, dan local Overhead dapat dipisahkan.