AssistantMessage lengkap setelah Claude selesai menghasilkan setiap respons. Untuk menerima pembaruan inkremental saat teks dan tool calls dihasilkan, aktifkan partial message streaming dengan mengatur include_partial_messages (Python) atau includePartialMessages (TypeScript) ke true dalam opsi Anda.
Enable streaming output
Untuk mengaktifkan streaming, aturinclude_partial_messages (Python) atau includePartialMessages (TypeScript) ke true dalam opsi Anda. Ini menyebabkan SDK menghasilkan pesan StreamEvent yang berisi raw API events saat tiba, selain AssistantMessage dan ResultMessage yang biasa.
Kode Anda kemudian perlu:
- Memeriksa tipe setiap pesan untuk membedakan
StreamEventdari tipe pesan lainnya - Untuk
StreamEvent, ekstrak fieldeventdan periksatype-nya - Cari event
content_block_deltadi manadelta.typeadalahtext_delta, yang berisi chunk teks aktual
StreamEvent, kemudian untuk content_block_delta, kemudian untuk text_delta:
StreamEvent reference
Ketika partial messages diaktifkan, Anda menerima raw Claude API streaming events yang dibungkus dalam objek. Tipe memiliki nama berbeda di setiap SDK:- Python:
StreamEvent(import dariclaude_agent_sdk.types) - TypeScript:
SDKPartialAssistantMessagedengantype: 'stream_event'
event berisi raw streaming event dari Claude API. Tipe event umum meliputi:
| Event Type | Description |
|---|---|
message_start | Awal pesan baru |
content_block_start | Awal blok konten baru (teks atau tool use) |
content_block_delta | Pembaruan inkremental ke konten |
content_block_stop | Akhir blok konten |
message_delta | Pembaruan tingkat pesan (stop reason, usage) |
message_stop | Akhir pesan |
Message flow
Dengan partial messages diaktifkan, Anda menerima pesan dalam urutan ini:include_partial_messages di Python, includePartialMessages di TypeScript), Anda menerima semua tipe pesan kecuali StreamEvent. Tipe umum meliputi SystemMessage (inisialisasi sesi), AssistantMessage (respons lengkap), ResultMessage (hasil akhir), dan pesan batas kompak yang menunjukkan kapan riwayat percakapan dikompres (SDKCompactBoundaryMessage di TypeScript; SystemMessage dengan subtype "compact_boundary" di Python).
Stream text responses
Untuk menampilkan teks saat dihasilkan, cari eventcontent_block_delta di mana delta.type adalah text_delta. Ini berisi chunk teks inkremental. Contoh di bawah mencetak setiap chunk saat tiba:
Stream tool calls
Tool calls juga streaming secara inkremental. Anda dapat melacak kapan tools dimulai, menerima input mereka saat dihasilkan, dan melihat kapan mereka selesai. Contoh di bawah melacak tool yang sedang dipanggil dan mengakumulasi input JSON saat streaming masuk. Ini menggunakan tiga tipe event:content_block_start: tool dimulaicontent_block_deltadenganinput_json_delta: chunk input tibacontent_block_stop: tool call selesai
Build a streaming UI
Contoh ini menggabungkan text dan tool streaming menjadi UI yang kohesif. Ini melacak apakah agent saat ini mengeksekusi tool (menggunakan flagin_tool) untuk menampilkan indikator status seperti [Using Read...] saat tools berjalan. Teks streaming secara normal ketika tidak dalam tool, dan penyelesaian tool memicu pesan “done”. Pola ini berguna untuk antarmuka chat yang perlu menampilkan progress selama tugas agent multi-langkah.
Keterbatasan yang Diketahui
- Structured output: hasil JSON muncul hanya di
ResultMessage.structured_outputakhir, bukan sebagai streaming deltas. Lihat structured outputs untuk detail.
Next steps
Sekarang bahwa Anda dapat stream teks dan tool calls secara real-time, jelajahi topik terkait ini:- Interactive vs one-shot queries: pilih antara input modes untuk use case Anda
- Structured outputs: dapatkan respons JSON yang diketik dari agent
- Permissions: kontrol tools mana yang dapat digunakan agent