Menangani alasan berhenti
Pelajari cara menangani berbagai nilai stop_reason dalam respons API Messages Claude untuk membangun aplikasi yang lebih robust.
Ketika Anda membuat permintaan ke Messages API, respons Claude menyertakan field stop_reason
yang menunjukkan mengapa model berhenti menghasilkan responsnya. Memahami nilai-nilai ini sangat penting untuk membangun aplikasi yang robust yang menangani berbagai jenis respons dengan tepat.
Untuk detail tentang stop_reason
dalam respons API, lihat referensi Messages API.
Apa itu stop_reason?
Field stop_reason
adalah bagian dari setiap respons Messages API yang berhasil. Tidak seperti error, yang menunjukkan kegagalan dalam memproses permintaan Anda, stop_reason
memberi tahu Anda mengapa Claude berhasil menyelesaikan generasi responsnya.
Nilai stop reason
end_turn
Alasan berhenti yang paling umum. Menunjukkan Claude menyelesaikan responsnya secara alami.
max_tokens
Claude berhenti karena mencapai batas max_tokens
yang ditentukan dalam permintaan Anda.
stop_sequence
Claude menemukan salah satu dari stop sequence kustom Anda.
tool_use
Claude memanggil tool dan mengharapkan Anda untuk mengeksekusinya.
pause_turn
Digunakan dengan server tools seperti web search ketika Claude perlu menjeda operasi yang berjalan lama.
refusal
Claude menolak untuk menghasilkan respons karena masalah keamanan.
Praktik terbaik untuk menangani stop reasons
1. Selalu periksa stop_reason
Jadikan kebiasaan untuk memeriksa stop_reason
dalam logika penanganan respons Anda:
2. Tangani max_tokens dengan baik
Ketika respons terpotong karena batas token:
3. Implementasikan logika retry untuk pause_turn
Untuk server tools yang mungkin berhenti sementara:
Stop reasons vs. errors
Penting untuk membedakan antara nilai stop_reason
dan error yang sebenarnya:
Stop reasons (respons berhasil)
- Bagian dari body respons
- Menunjukkan mengapa generasi berhenti secara normal
- Respons berisi konten yang valid
Errors (permintaan gagal)
- Kode status HTTP 4xx atau 5xx
- Menunjukkan kegagalan pemrosesan permintaan
- Respons berisi detail error
Pertimbangan streaming
Ketika menggunakan streaming, stop_reason
adalah:
null
dalam eventmessage_start
awal- Disediakan dalam event
message_delta
- Tidak disediakan dalam event lainnya
Pola umum
Menangani workflow tool use
Memastikan respons lengkap
Dengan menangani nilai stop_reason
dengan benar, Anda dapat membangun aplikasi yang lebih robust yang menangani berbagai skenario respons dengan baik dan memberikan pengalaman pengguna yang lebih baik.