Fitur ini memenuhi syarat untuk Zero Data Retention (ZDR). Ketika organisasi Anda memiliki pengaturan ZDR, data yang dikirim melalui fitur ini tidak disimpan setelah respons API dikembalikan.
"Extended thinking" (pemikiran diperpanjang) memberikan Claude kemampuan penalaran yang ditingkatkan untuk tugas-tugas kompleks, sekaligus menyediakan berbagai tingkat transparansi ke dalam proses pemikiran langkah demi langkahnya sebelum memberikan jawaban akhir.
Pemikiran diperpanjang tersedia pada semua model Claude saat ini. Cara Anda mengaktifkannya bergantung pada model:
| Model | Pemikiran diperpanjang manual (budget_tokens) | Direkomendasikan |
|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Tidak didukung (error 400) | Pemikiran adaptif, selalu aktif; gunakan effort untuk mengontrol kedalaman |
| Claude Mythos Preview | Didukung | Pemikiran adaptif, aktif secara default |
| Claude Opus 4.8 | Tidak didukung (error 400) | Pemikiran adaptif dengan effort |
| Claude Opus 4.7 | Tidak didukung (error 400) | Pemikiran adaptif dengan effort |
| Claude Sonnet 5 | Tidak didukung (error 400) | Pemikiran adaptif dengan effort |
| Claude Opus 4.6 | Tidak digunakan lagi | Pemikiran adaptif dengan effort |
| Claude Sonnet 4.6 | Tidak digunakan lagi | Pemikiran adaptif dengan effort |
| Claude Opus 4.5 | Didukung | N/A |
| Claude Haiku 4.5 | Didukung | N/A |
| Model Claude 4 sebelumnya | Didukung | N/A |
Dengan pemikiran adaptif, model memutuskan kapan dan seberapa banyak berpikir pada setiap permintaan. Pada Claude Mythos Preview, Claude Fable 5, dan Claude Mythos 5, thinking: {type: "disabled"} tidak didukung. Untuk perbedaan perilaku per model (output pemikiran, pemikiran berselang, dan preservasi blok), lihat Perbedaan pemikiran di seluruh versi model.
Ketika pemikiran diperpanjang diaktifkan, Claude membuat blok konten thinking tempat ia mengeluarkan penalaran internalnya. Claude menggabungkan wawasan dari penalaran ini sebelum menyusun respons akhir.
Respons API mencakup blok konten thinking, diikuti oleh blok konten text.
Berikut adalah contoh format respons default:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Untuk informasi lebih lanjut tentang format respons pemikiran diperpanjang, lihat Referensi Messages API.
Berikut adalah contoh penggunaan pemikiran diperpanjang di Messages API:
Untuk mengaktifkan pemikiran diperpanjang, tambahkan objek thinking dengan type diatur ke enabled dan nilai budget_tokens. Pada model di mana pemikiran diperpanjang manual tidak digunakan lagi atau tidak didukung (lihat Model yang didukung), gunakan type: "adaptive" sebagai gantinya seperti yang dijelaskan dalam Pemikiran adaptif.
Parameter budget_tokens menetapkan jumlah maksimum token yang dapat digunakan Claude untuk proses penalaran internalnya. Batas ini berlaku untuk token pemikiran penuh, bukan untuk output yang diringkas. Anggaran yang lebih besar dapat meningkatkan kualitas respons dengan memungkinkan analisis yang lebih menyeluruh untuk masalah kompleks, meskipun Claude mungkin tidak menggunakan seluruh anggaran yang dialokasikan, terutama pada rentang di atas 32k.
budget_tokens tidak digunakan lagi pada Claude Opus 4.6 dan Claude Sonnet 4.6 dan akan dihapus dalam rilis model mendatang. Gunakan pemikiran adaptif dengan parameter effort untuk mengontrol kedalaman pemikiran sebagai gantinya.
Claude Mythos Preview, Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6, dan Claude Sonnet 4.6 mendukung hingga 128k token output. Claude Haiku 4.5 mendukung hingga 64k. Lihat ikhtisar model untuk batas pada model lama. Pada Message Batches API, header beta output-300k-2026-03-24 menaikkan batas output menjadi 300k untuk Claude Opus 4.8, Opus 4.7, Sonnet 5, Opus 4.6, dan Sonnet 4.6.
budget_tokens harus diatur ke nilai yang lebih kecil dari max_tokens. Namun, saat menggunakan pemikiran berselang dengan alat, Anda dapat melebihi batas ini karena batas token menjadi seluruh jendela konteks Anda. Karena budget_tokens harus lebih kecil dari max_tokens, pemikiran diperpanjang tidak dapat digabungkan dengan max_tokens: 0 (pre-warming cache).
Field display pada konfigurasi thinking mengontrol bagaimana konten thinking dikembalikan dalam respons API. Field ini menerima dua nilai:
"summarized": Blok thinking berisi teks thinking yang diringkas. Lihat Summarized thinking untuk detailnya. Ini adalah default pada Claude Opus 4.6, Claude Sonnet 4.6, dan model Claude 4 sebelumnya."omitted": Blok thinking dikembalikan dengan field thinking kosong. Field signature tetap membawa thinking lengkap yang terenkripsi untuk kontinuitas multi-turn (lihat Enkripsi thinking). Ini adalah default pada Claude Fable 5, Claude Mythos 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, dan Claude Mythos Preview.Mengatur display: "omitted" berguna ketika aplikasi Anda tidak menampilkan konten thinking kepada pengguna. Manfaat utamanya adalah time-to-first-text-token yang lebih cepat saat streaming: Server melewati streaming token thinking sepenuhnya dan hanya mengirimkan signature, sehingga respons teks akhir mulai di-stream lebih cepat.
Berikut adalah beberapa pertimbangan penting untuk omitted thinking:
signature untuk merekonstruksi thinking asli untuk konstruksi prompt (lihat Mempertahankan blok thinking). Teks apa pun yang Anda tempatkan di field thinking dari blok omitted yang dikirim bolak-balik akan diabaikan.display tidak valid dengan thinking.type: "disabled" (tidak ada yang perlu ditampilkan).thinking.type: "adaptive" dan model melewati thinking untuk permintaan sederhana, tidak ada blok thinking yang dihasilkan terlepas dari nilai display.Field signature identik baik display bernilai "summarized" maupun "omitted". Mengganti nilai display di antara giliran dalam sebuah percakapan didukung.
Pada Claude Mythos Preview, display secara default adalah "omitted". Contoh-contoh di bagian ini meneruskan display secara eksplisit sehingga berlaku untuk semua model, tetapi pada Mythos Preview Anda dapat membiarkannya tidak diatur dan menerima perilaku yang sama. Untuk menerima pemikiran yang diringkas pada Mythos Preview, atur display: "summarized" secara eksplisit.
Pipeline otomatis yang tidak pernah menampilkan konten pemikiran kepada pengguna akhir dapat melewati overhead penerimaan token pemikiran melalui jaringan. Aplikasi yang sensitif terhadap latensi mendapatkan kualitas penalaran yang sama tanpa menunggu teks pemikiran di-stream sebelum respons akhir dimulai.
Ketika display: "omitted" diatur, respons berisi blok thinking dengan field thinking kosong:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}Saat streaming dengan display: "omitted", tidak ada event thinking_delta yang dipancarkan; lihat Streaming pemikiran untuk urutan event.
Dengan "extended thinking" (pemikiran diperpanjang) diaktifkan, Messages API untuk model Claude 4 mengembalikan ringkasan dari proses pemikiran lengkap Claude. Pemikiran yang diringkas memberikan manfaat kecerdasan penuh dari pemikiran diperpanjang, sekaligus mencegah penyalahgunaan. Ini adalah perilaku default pada model Claude 4 ketika field display pada konfigurasi thinking tidak disetel atau disetel ke "summarized". Pada Claude Fable 5, Claude Mythos 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, dan Claude Mythos Preview, display secara default disetel ke "omitted", sehingga Anda harus menyetel display: "summarized" secara eksplisit untuk menerima pemikiran yang diringkas.
Berikut adalah beberapa pertimbangan penting untuk pemikiran yang diringkas:
Dalam kasus langka di mana Anda memerlukan akses ke output pemikiran penuh untuk model Claude 4, hubungi tim penjualan Anthropic.
Anda dapat melakukan streaming respons pemikiran diperpanjang menggunakan server-sent events (SSE).
Ketika streaming diaktifkan untuk pemikiran diperpanjang, Anda menerima konten pemikiran melalui event thinking_delta.
Ketika display: "omitted" diatur, tidak ada event thinking_delta yang dipancarkan. Lihat Mengontrol tampilan pemikiran.
Untuk dokumentasi lebih lanjut tentang streaming melalui Messages API, lihat Streaming Messages.
Berikut cara menangani streaming dengan pemikiran:
Contoh output streaming:
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-6", "stop_reason": null, "stop_sequence": null}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": "", "signature": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "I need to find the GCD of 1071 and 462 using the Euclidean algorithm.\n\n1071 = 2 × 462 + 147"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n462 = 3 × 147 + 21\n147 = 7 × 21 + 0\n\nSo GCD(1071, 462) = 21"}}
// Additional thinking deltas...
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 0}
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "The greatest common divisor of 1071 and 462 is **21**."}}
// Additional text deltas...
event: content_block_stop
data: {"type": "content_block_stop", "index": 1}
event: message_delta
data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}}
event: message_stop
data: {"type": "message_stop"}Ketika display: "omitted" diatur, blok pemikiran terbuka, satu signature_delta tiba, dan blok ditutup tanpa event thinking_delta apa pun. Streaming teks dimulai segera setelahnya:
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"EosnCkYICxIMMb3LzNrMu..."}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"text","text":""}}Saat menggunakan streaming dengan pemikiran diaktifkan, Anda mungkin memperhatikan bahwa teks terkadang tiba dalam potongan yang lebih besar bergantian dengan pengiriman token demi token yang lebih kecil. Ini adalah perilaku yang diharapkan, terutama untuk konten pemikiran.
Sistem streaming perlu memproses konten dalam batch untuk kinerja optimal, yang dapat menghasilkan pola pengiriman "berpotongan" ini, dengan kemungkinan penundaan antara event streaming.
Pemikiran diperpanjang dapat digunakan bersama dengan penggunaan alat, memungkinkan Claude untuk bernalar melalui pemilihan alat dan pemrosesan hasil.
Saat menggunakan pemikiran diperpanjang dengan penggunaan alat, perhatikan batasan berikut:
Batasan pilihan alat: Penggunaan alat dengan pemikiran hanya mendukung tool_choice: {"type": "auto"} (default) atau tool_choice: {"type": "none"}. Menggunakan tool_choice: {"type": "any"} atau tool_choice: {"type": "tool", "name": "..."} akan menghasilkan error karena opsi ini memaksa penggunaan alat, yang tidak kompatibel dengan pemikiran diperpanjang.
Mempertahankan blok pemikiran: Selama penggunaan alat, Anda harus meneruskan blok thinking kembali ke API untuk pesan asisten terakhir. Sertakan blok lengkap yang tidak dimodifikasi kembali ke API untuk mempertahankan kontinuitas penalaran.
Anda tidak dapat mengalihkan pemikiran di tengah giliran asisten, termasuk selama loop penggunaan alat. Seluruh giliran asisten harus beroperasi dalam satu mode pemikiran:
Dari perspektif model, loop penggunaan alat adalah bagian dari giliran asisten. Giliran asisten tidak selesai sampai Claude menyelesaikan respons penuhnya, yang mungkin mencakup beberapa panggilan alat dan hasil.
Misalnya, urutan ini semuanya merupakan bagian dari satu giliran asisten:
User: "What's the weather in Paris?"
Assistant: [thinking] + [tool_use: get_weather]
User: [tool_result: "20°C, sunny"]
Assistant: [text: "The weather in Paris is 20°C and sunny"]Meskipun ada beberapa pesan API, loop penggunaan alat secara konseptual merupakan bagian dari satu respons asisten yang berkelanjutan.
Ketika konflik pemikiran di tengah giliran terjadi (seperti mengaktifkan atau menonaktifkan pemikiran selama loop penggunaan alat), API secara otomatis menonaktifkan pemikiran untuk permintaan tersebut. Untuk menjaga kualitas model dan tetap sesuai distribusi, API dapat:
Ini berarti bahwa mencoba mengalihkan pemikiran di tengah giliran tidak akan menyebabkan error, tetapi pemikiran akan dinonaktifkan secara diam-diam untuk permintaan tersebut. Untuk mengonfirmasi apakah pemikiran aktif, periksa keberadaan blok thinking dalam respons.
Praktik terbaik: Rencanakan strategi pemikiran Anda di awal setiap giliran daripada mencoba mengalihkan di tengah giliran.
Contoh: Mengalihkan pemikiran setelah menyelesaikan giliran
User: "What's the weather?"
Assistant: [tool_use] (thinking disabled)
User: [tool_result]
Assistant: [text: "It's sunny"]
User: "What about tomorrow?"
Assistant: [thinking] + [text: "..."] (thinking enabled - new turn)Dengan menyelesaikan giliran asisten sebelum mengalihkan pemikiran, Anda memastikan bahwa pemikiran benar-benar diaktifkan untuk permintaan baru.
Mengalihkan mode pemikiran juga membatalkan caching prompt untuk riwayat pesan. Untuk detail lebih lanjut, lihat bagian Pemikiran diperpanjang dengan caching prompt.
Selama penggunaan alat, Anda harus meneruskan blok thinking kembali ke API, dan Anda harus menyertakan blok lengkap yang tidak dimodifikasi kembali ke API. Ini sangat penting untuk mempertahankan alur penalaran model dan integritas percakapan.
Meskipun Anda dapat menghilangkan blok thinking dari giliran peran assistant sebelumnya, selalu teruskan kembali semua blok pemikiran ke API untuk percakapan multi-giliran apa pun. API:
Blok mana yang disimpan bergantung pada model. Lihat Preservasi blok pemikiran berdasarkan model untuk default per kelas. Untuk mengganti default, gunakan strategi pengeditan konteks clear_thinking_20251015.
Saat mengalihkan mode pemikiran selama percakapan, ingat bahwa seluruh giliran asisten (termasuk loop penggunaan alat) harus beroperasi dalam satu mode pemikiran. Untuk detail lebih lanjut, lihat Mengalihkan mode pemikiran dalam percakapan.
Ketika Claude memanggil alat, ia menjeda konstruksi responsnya untuk menunggu informasi eksternal. Ketika hasil alat dikembalikan, Claude melanjutkan membangun respons yang sudah ada tersebut. Ini mengharuskan mempertahankan blok pemikiran selama penggunaan alat, karena beberapa alasan:
Kontinuitas penalaran: Blok pemikiran menangkap penalaran langkah demi langkah Claude yang mengarah ke permintaan alat. Ketika Anda mengirimkan hasil alat, menyertakan pemikiran asli memastikan Claude dapat melanjutkan penalarannya dari tempat ia berhenti.
Pemeliharaan konteks: Meskipun hasil alat muncul sebagai pesan pengguna dalam struktur API, hasil tersebut merupakan bagian dari alur penalaran yang berkelanjutan. Mempertahankan blok pemikiran menjaga alur konseptual ini di seluruh beberapa panggilan API. Untuk informasi lebih lanjut tentang manajemen konteks, lihat panduan tentang jendela konteks.
Penting: Saat menyediakan blok thinking, seluruh urutan blok thinking yang berurutan harus cocok dengan output yang dihasilkan oleh model selama permintaan asli; Anda tidak dapat mengatur ulang atau memodifikasi urutan blok-blok ini.
Jika blok pemikiran dimodifikasi, API mengembalikan invalid_request_error 400 yang pesannya berisi `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified. Penyebab paling umum adalah kode aplikasi yang memfilter blok konten berdasarkan tipe dan menghapus blok redacted_thinking, atau yang membangun ulang pesan asisten alih-alih mengembalikannya apa adanya. Lihat Blok pemikiran tidak dapat dimodifikasi untuk error lengkap dan langkah perbaikan.
Pemikiran diperpanjang dengan penggunaan alat pada model Claude 4 mendukung "interleaved thinking" (pemikiran berselang), yang memungkinkan Claude untuk berpikir di antara panggilan alat dan membuat penalaran yang lebih canggih setelah menerima hasil alat.
Dengan pemikiran berselang, Claude dapat:
Cara Anda mengaktifkan pemikiran berselang bergantung pada model:
| Model | Pemikiran berselang |
|---|---|
| Claude Fable 5 Claude Mythos 5 | Otomatis dengan pemikiran adaptif. Penalaran antar-alat dipindahkan ke dalam blok pemikiran. Tidak perlu header beta. |
| Claude Mythos Preview | Otomatis. Setiap langkah penalaran antar-alat dipindahkan ke dalam blok pemikiran alih-alih teks biasa. Tidak perlu atau didukung header beta. |
| Claude Opus 4.8 | Otomatis dengan pemikiran adaptif (satu-satunya mode pemikiran yang didukung). Tidak perlu header beta. |
| Claude Opus 4.7 | Otomatis dengan pemikiran adaptif (satu-satunya mode pemikiran yang didukung). Tidak perlu header beta. |
| Claude Opus 4.6 | Otomatis dengan pemikiran adaptif. Header beta interleaved-thinking-2025-05-14 tidak digunakan lagi dan diabaikan dengan aman jika disertakan. |
| Claude Sonnet 5 | Otomatis dengan pemikiran adaptif. Header beta interleaved-thinking-2025-05-14 tidak digunakan lagi dan diabaikan dengan aman jika disertakan. |
Model Claude 4 sebelumnya di sini berarti Claude Sonnet 4.5, Claude Opus 4.1 (tidak digunakan lagi), Claude Opus 4 (dihentikan, kecuali di Google Cloud), dan Claude Sonnet 4 (dihentikan, kecuali di Bedrock dan Google Cloud).
Berikut adalah beberapa pertimbangan penting untuk pemikiran berselang:
budget_tokens dapat melebihi parameter max_tokens, karena mewakili total anggaran di seluruh blok pemikiran dalam satu giliran asisten.interleaved-thinking-2025-05-14 dalam permintaan ke model apa pun tanpa mengembalikan error. Pada model yang tidak mendukung pemikiran berselang, header diabaikan. Pada Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, dan Claude Sonnet 5, header tersebut tidak digunakan lagi dan diabaikan dengan aman. Pada Claude Mythos Preview, header tersebut tidak diperlukan dan diabaikan dengan aman.interleaved-thinking-2025-05-14 ke model apa pun selain Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5, Claude Opus 4.1 (tidak digunakan lagi), Opus 4 (dihentikan, kecuali di Google Cloud), Sonnet 4.5, atau Sonnet 4 (dihentikan, kecuali di Bedrock dan Google Cloud), permintaan Anda akan gagal.Caching prompt dengan pemikiran memiliki beberapa pertimbangan penting:
Tugas pemikiran diperpanjang sering kali membutuhkan waktu lebih dari 5 menit untuk diselesaikan. Pertimbangkan untuk menggunakan durasi cache 1 jam untuk mempertahankan cache hit di seluruh sesi pemikiran yang lebih lama dan alur kerja multi-langkah.
Penghapusan konteks blok pemikiran
Pola pembatalan cache
Pada model Opus/Sonnet sebelumnya dan semua model Haiku, blok pemikiran dihapus untuk caching dan perhitungan konteks; pada Opus 4.5+ dan Sonnet 4.6+, blok tersebut disimpan secara default. Dalam kedua kasus, blok tersebut harus dipertahankan saat melanjutkan percakapan dengan penggunaan alat, terutama dengan pemikiran berselang.
Saat menggunakan pemikiran diperpanjang dengan penggunaan alat, blok pemikiran menunjukkan perilaku caching spesifik yang memengaruhi penghitungan token:
Cara kerjanya:
Alur contoh terperinci:
Permintaan 1:
User: "What's the weather in Paris?"Respons 1:
[thinking_block_1] + [tool_use block 1]Permintaan 2:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]Respons 2:
[thinking_block_2] + [text block 2]Permintaan 2 menulis cache dari konten permintaan (bukan respons). Cache mencakup pesan pengguna asli, blok pemikiran pertama, blok penggunaan alat, dan hasil alat.
Permintaan 3:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]Untuk Opus 4.5+ dan Sonnet 4.6+, semua blok pemikiran sebelumnya disimpan secara default. Untuk model Opus/Sonnet sebelumnya dan semua model Haiku, karena blok pengguna non-hasil-alat disertakan, semua blok pemikiran sebelumnya diabaikan dan dihapus dari konteks. Permintaan ini akan diproses sama seperti:
User: ["What's the weather in Paris?"],
Assistant: [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [text block 2],
User: [Text response, cache=True]Poin-poin penting:
cache_control eksplisitmax_tokens (yang mencakup anggaran pemikiran Anda saat pemikiran diaktifkan) diberlakukan sebagai batas ketat. Pada model Claude 4.5 dan yang lebih baru, jika token input ditambah max_tokens melebihi ukuran jendela konteks, API menerima permintaan tersebut. Jika generasi kemudian mencapai batas jendela konteks, generasi berhenti dengan stop_reason: "model_context_window_exceeded". Pada model sebelumnya, API mengembalikan error validasi sebagai gantinya. Lihat Menangani stop reason.
Anda dapat membaca panduan tentang jendela konteks untuk pembahasan yang lebih mendalam.
Saat menghitung penggunaan jendela konteks dengan pemikiran diaktifkan, ada beberapa pertimbangan yang perlu diperhatikan:
max_tokens Anda untuk giliran tersebutDiagram di bawah ini menunjukkan manajemen token khusus saat pemikiran diperpanjang diaktifkan:
Jendela konteks efektif dihitung sebagai:
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Gunakan API penghitungan token untuk mendapatkan jumlah token yang akurat untuk kasus penggunaan spesifik Anda, terutama saat bekerja dengan percakapan multi-giliran yang mencakup pemikiran.
Saat menggunakan pemikiran diperpanjang dengan penggunaan alat, blok pemikiran harus secara eksplisit dipertahankan dan dikembalikan dengan hasil alat.
Perhitungan jendela konteks efektif untuk pemikiran diperpanjang dengan penggunaan alat menjadi:
context window =
(current input tokens + previous thinking tokens + tool use tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Diagram di bawah ini mengilustrasikan manajemen token untuk pemikiran diperpanjang dengan penggunaan alat:
Mengingat perilaku jendela konteks dan max_tokens dengan pemikiran diperpanjang, Anda mungkin perlu:
max_tokens saat panjang prompt Anda berubahKonten pemikiran lengkap dienkripsi dan dikembalikan dalam field signature. Field ini digunakan untuk memverifikasi bahwa blok pemikiran dihasilkan oleh Claude ketika dikirim kembali ke API.
Mengirim kembali blok pemikiran hanya benar-benar diperlukan ketika menggunakan alat dengan pemikiran diperpanjang. Jika tidak, Anda dapat menghilangkan blok pemikiran dari giliran sebelumnya. Jika Anda mengirimkannya kembali, apakah API menyimpan atau menghapusnya bergantung pada model: Opus 4.5+ dan Sonnet 4.6+ menyimpannya dalam konteks secara default; model Opus/Sonnet sebelumnya dan semua model Haiku menghapusnya. Lihat pengeditan konteks untuk mengonfigurasi hal ini.
Jika mengirim kembali blok pemikiran, kirimkan semuanya kembali persis seperti yang Anda terima demi konsistensi dan untuk menghindari potensi masalah.
Berikut adalah beberapa pertimbangan penting tentang enkripsi pemikiran:
signature_delta di dalam event content_block_delta tepat sebelum event content_block_stop.signature secara signifikan lebih panjang pada model Claude 4 dibandingkan model sebelumnya.signature adalah field opaque dan tidak boleh diinterpretasikan atau di-parse.signature kompatibel di berbagai platform (Claude API, Amazon Bedrock, dan Google Cloud). Nilai yang dihasilkan di satu platform akan kompatibel dengan platform lainnya.Selain blok thinking reguler, API dapat mengembalikan blok redacted_thinking. Blok redacted_thinking berisi konten pemikiran terenkripsi dalam field data, tanpa ringkasan yang dapat dibaca:
{
"type": "redacted_thinking",
"data": "..."
}Field data bersifat opaque dan terenkripsi. Seperti field signature pada blok pemikiran reguler, Anda harus meneruskan blok redacted_thinking kembali ke API tanpa perubahan saat melanjutkan percakapan multi-giliran dengan alat.
Jika kode Anda memfilter blok konten berdasarkan tipe (misalnya, block.type == "thinking") saat mengirim balik respons dengan penggunaan alat, sertakan juga blok redacted_thinking. Memfilter hanya pada block.type == "thinking" secara diam-diam menghapus blok redacted_thinking dan merusak protokol multi-giliran yang dijelaskan di atas.
Blok redacted_thinking adalah tipe blok konten yang berbeda yang dikembalikan oleh API ketika bagian dari pemikiran disunting karena alasan keamanan. Ini terpisah dari opsi display: "omitted", yang mengembalikan blok thinking reguler dengan field thinking kosong.
Messages API menangani pemikiran secara berbeda di seluruh versi model Claude. Tabel berikut memberikan perbandingan ringkas:
| Model | budget_tokens | Output pemikiran | Pemikiran berselang | Preservasi blok |
|---|---|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Tidak didukung | Dihilangkan secara default1 | Otomatis2 | Lihat Pemikiran adaptif |
| Claude Mythos Preview | Didukung | Dihilangkan secara default1 | Otomatis2 | Dipertahankan3 |
| Claude Opus 4.8 | Tidak didukung | Dihilangkan secara default1 | Otomatis2 | Dipertahankan |
| Claude Opus 4.7 | Tidak didukung | Dihilangkan secara default1 | Otomatis |
1 Atur display: "summarized" untuk menerima pemikiran yang diringkas. Pada Claude Fable 5, Claude Mythos 5, dan Claude Mythos Preview, token pemikiran mentah tidak pernah dikembalikan.
2 Dengan pemikiran adaptif. Header beta interleaved-thinking-2025-05-14 tidak diperlukan pada model-model ini dan diabaikan dengan aman jika disertakan.
3 Blok dihapus saat melanjutkan percakapan pada model yang tidak mendukung format pemikiran Mythos.
Apakah blok pemikiran dari giliran asisten sebelumnya dipertahankan dalam konteks secara default bergantung pada kelas model. Opus: Claude Opus 4.5 dan model Opus yang lebih baru menyimpan semua blok pemikiran sebelumnya; Claude Opus 4.1 (tidak digunakan lagi) dan model Opus sebelumnya hanya menyimpan pemikiran giliran asisten terakhir. Sonnet: Claude Sonnet 4.6 dan model Sonnet yang lebih baru menyimpan semua; Claude Sonnet 4.5 dan model Sonnet sebelumnya hanya menyimpan giliran terakhir. Haiku: semua model Haiku hingga Claude Haiku 4.5 hanya menyimpan giliran terakhir. Claude Mythos Preview juga menyimpan semua blok pemikiran sebelumnya.
Manfaat preservasi blok pemikiran:
Pertimbangan penting:
Untuk model sebelumnya (Claude Sonnet 4.5, Opus 4.1 (tidak digunakan lagi), dll.), blok pemikiran dari giliran sebelumnya terus dihapus dari konteks. Perilaku yang ada yang dijelaskan di bagian Pemikiran diperpanjang dengan caching prompt berlaku untuk model-model tersebut.
Untuk informasi harga lengkap termasuk tarif dasar, penulisan cache, cache hit, dan token output, lihat halaman harga.
Proses pemikiran dikenakan biaya untuk:
Ketika pemikiran diperpanjang diaktifkan, prompt sistem khusus secara otomatis disertakan untuk mendukung fitur ini.
Saat menggunakan pemikiran yang diringkas:
Saat menggunakan display: "omitted":
thinking kosong)Jumlah token output yang ditagih tidak akan sama dengan jumlah token yang terlihat dalam respons. Anda ditagih untuk seluruh proses pemikiran, bukan konten pemikiran yang terlihat dalam respons.
Untuk melihat berapa banyak token output yang ditagih yang digunakan untuk penalaran internal, baca usage.output_tokens_details.thinking_tokens dalam respons. Nilai ini mencerminkan penalaran mentah yang dihasilkan model (bukan teks ringkasan yang dikembalikan dalam body) dan selalu kurang dari atau sama dengan output_tokens. Kurangi nilai ini dari output_tokens untuk memperkirakan bagian output yang bukan penalaran.
{
"usage": {
"input_tokens": 25,
"output_tokens": 348,
"output_tokens_details": {
"thinking_tokens": 312
}
}
}output_tokens tetap menjadi total inklusif dan otoritatif yang digunakan untuk penagihan. output_tokens_details adalah rincian read-only untuk keperluan observabilitas.
usage.output_tokens_details.thinking_tokens dalam respons melaporkan berapa banyak dari token output yang ditagih merupakan penalaran internal. Saat streaming, rincian ini hanya muncul pada event message_delta terakhir.max_tokens lebih besar dari 21.333 untuk menghindari timeout HTTP pada permintaan yang berjalan lama. Ini adalah validasi sisi klien, bukan pembatasan API. Jika Anda tidak perlu memproses event secara inkremental, gunakan .stream() dengan .get_final_message() (Python) atau .finalMessage() (TypeScript) untuk mendapatkan objek Message lengkap tanpa menangani event satu per satu. Lihat Streaming Messages untuk detailnya. Saat streaming, bersiaplah untuk menangani blok konten pemikiran dan teks saat keduanya tiba.display: "omitted" pada konfigurasi pemikiran untuk mengurangi waktu-ke-token-teks-pertama. Lihat Mengontrol tampilan pemikiran.temperature atau top_k serta penggunaan alat yang dipaksakan.top_p ke nilai antara 1 dan 0,95.Biarkan Claude memutuskan kapan dan seberapa banyak menggunakan pemikiran diperpanjang.
Jelajahi contoh praktis pemikiran di cookbook.
Was this page helpful?
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
}
],
)
# Respons berisi blok pemikiran yang diringkas dan blok teks
for block in response.content:
match block.type:
case "thinking":
print(f"\nThinking summary: {block.thinking}")
case "text":
print(f"\nResponse: {block.text}")client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000,
"display": "omitted",
},
messages=[
{"role": "user", "content": "What is 27 * 453?"},
],
)
for block in response.content:
if block.type == "thinking":
if block.thinking:
print(f"Thinking: {block.thinking}")
else:
print("Thinking: [omitted]")
elif block.type == "text":
print(f"Response: {block.text}")client = anthropic.Anthropic()
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
) as stream:
thinking_started = False
response_started = False
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
# Reset flag untuk setiap blok baru
thinking_started = False
response_started = False
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
if not thinking_started:
print("Thinking: ", end="", flush=True)
thinking_started = True
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
if not response_started:
print("Response: ", end="", flush=True)
response_started = True
print(event.delta.text, end="", flush=True)
elif event.type == "content_block_stop":
print("\nBlock complete.")| Claude Sonnet 4.6 | Otomatis dengan pemikiran adaptif (direkomendasikan). Header beta dengan type: "enabled" manual masih berfungsi tetapi tidak digunakan lagi. |
| Claude Opus 4.5 | Tambahkan header beta interleaved-thinking-2025-05-14 ke permintaan API Anda. |
| Claude Haiku 4.5 | Tidak didukung. Header beta diterima pada Claude API tetapi diabaikan. |
| Model Claude 4 sebelumnya | Tambahkan header beta interleaved-thinking-2025-05-14 ke permintaan API Anda. |
| Dipertahankan |
| Claude Sonnet 5 | Tidak didukung | Dihilangkan secara default1 | Otomatis2 | Dipertahankan |
| Claude Opus 4.6 | Tidak digunakan lagi | Diringkas | Otomatis2 | Dipertahankan |
| Claude Sonnet 4.6 | Tidak digunakan lagi | Diringkas | Otomatis, atau header beta | Dipertahankan |
| Claude Opus 4.5 | Didukung | Diringkas | Header beta | Dipertahankan |
| Claude Haiku 4.5 | Didukung | Diringkas | Tidak didukung | Hanya giliran terakhir |
| Model Claude 4 sebelumnya | Didukung | Diringkas | Header beta | Hanya giliran terakhir |
Pelajari praktik terbaik rekayasa prompt untuk pemikiran diperpanjang.