Model yang menjawab dalam satu kali proses harus mendapatkan semuanya dengan benar pada percobaan pertama: tanpa coretan kerja, tanpa pemeriksaan, tanpa mengubah arah di tengah jalan. Untuk sebuah pembuktian, bug yang rumit, atau tugas agentic yang panjang, pendekatan pertama sering kali bukan yang terbaik.
Thinking menghilangkan batasan tersebut. Ketika thinking aktif, Claude mengerjakan masalah dengan kata-katanya sendiri sebelum menjawab: ia menyatakan ulang apa yang ditanyakan, mencoba berbagai pendekatan, memeriksa hasil antara, dan meninggalkan jalur yang tidak berhasil. Penalaran tersebut tiba dalam blok konten thinking sebelum respons, dan Claude memanfaatkannya untuk menghasilkan jawaban akhir. Inilah mengapa thinking meningkatkan performa pada tugas kompleks seperti matematika, pemrograman, analisis, dan pekerjaan agentic yang berjalan lama, di mana kualitas jawaban bergantung pada pekerjaan antara yang jika tidak demikian akan dipadatkan ke dalam respons itu sendiri atau dilewati.
Thinking memiliki biaya: token yang dihabiskan Claude untuk bernalar ditagih sebagai token output, bahkan ketika teks thinking tidak dikembalikan kepada Anda, dan token tersebut dihitung terhadap max_tokens bersama dengan teks respons. Halaman ini membahas bagaimana thinking berperilaku di seluruh permukaan API: mengaktifkannya, membaca outputnya, dan mengelola interaksinya dengan alat, streaming, caching, dan jendela konteks.
Apakah Claude berpikir pada permintaan tertentu, dan seberapa dalam, bergantung pada konfigurasi thinking Anda dan kompleksitas permintaan.
Berikut adalah tampilan thinking dalam sebuah respons: satu atau lebih blok konten thinking tiba sebelum blok text. Blok thinking tetap merupakan konten yang dihasilkan, seperti blok text yang mengikutinya, tetapi dipisahkan dari respons kanonis. Setiap blok thinking juga membawa field signature, salinan terenkripsi dari penalaran lengkap yang Anda kirim kembali tanpa perubahan dalam percakapan multi-turn dan penggunaan alat (lihat Enkripsi thinking):
{
"content": [
{
"type": "thinking",
"thinking": "Let me break this down. The question has two parts, so I'll start with the simpler one and use its result to constrain the second...",
"signature": "WaUjzkypQ2mUEVM36O2Txu...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Anda tidak selalu melihat teks ini, dan apa yang Anda lihat tidak pernah merupakan rantai pemikiran mentah: teks dalam blok thinking adalah ringkasan dari penalaran Claude. Field display pada konfigurasi thinking mengontrol apakah ringkasan tersebut dikembalikan sama sekali: "summarized" mengembalikannya, sementara "omitted", default pada model terbaru, mengembalikan blok thinking dengan field thinking kosong. Bagaimanapun, blok tersebut ditagih sama dan dikirim kembali dengan cara yang sama dalam percakapan multi-turn. Lihat Mengontrol tampilan thinking untuk default per-model dan detailnya.
Jika Claude menggunakan alat, thinking juga dapat muncul di antara pemanggilan alat. Lihat Thinking dengan penggunaan alat. Untuk format respons lengkap, lihat referensi Messages API.
Pada model saat ini, thinking aktif secara default atau hanya perlu satu parameter. Konfigurasi mana yang diterima setiap model, dan apa defaultnya, tercantum dalam tabel konfigurasi per-model di halaman Troubleshooting.
Pada Claude Opus 5, Claude Sonnet 5, Claude Fable 5, Claude Mythos 5, dan Claude Mythos Preview, thinking sudah aktif: tidak perlu konfigurasi. Hal pertama yang dibutuhkan sebagian besar developer pada model ini adalah melihat teks thinking, karena display secara default adalah "omitted" di sana. Aktifkan dengan thinking: {"type": "adaptive", "display": "summarized"}, yang persis merupakan permintaan berikut dengan string model yang ditukar.
Pada Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, dan Claude Sonnet 4.6, thinking nonaktif sampai Anda mengatur thinking: {type: "adaptive"}, yang memungkinkan Claude memutuskan kapan dan seberapa dalam untuk berpikir berdasarkan permintaan. Contoh berikut melakukan hal tersebut, mengatur display: "summarized" agar teks thinking terlihat, dan menggunakan max_tokens yang lapang:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive", "display": "summarized"},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
)
for block in response.content:
if block.type == "thinking":
print(f"\nThinking: {block.thinking}")
elif block.type == "text":
print(f"\nResponse: {block.text}")Menjalankan contoh tersebut akan mencetak thinking yang diringkas, lalu jawabannya:
Thinking: Use Euclidean algorithm.
1071 = 2*462 + 147
462 = 3*147 + 21
147 = 7*21 + 0
GCD = 21
Response: ## Finding GCD of 1071 and 462
I'll use the **Euclidean algorithm**, repeatedly dividing and taking remainders...Token thinking dihitung terhadap max_tokens, jadi atur nilainya cukup tinggi untuk menyisakan ruang bagi thinking dan teks respons. Lihat Kontrol biaya di halaman steering dan Thinking dan jendela konteks.
Pada Claude Sonnet 5, di mana thinking aktif secara default, Anda dapat menonaktifkannya:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=4096,
thinking={"type": "disabled"},
messages=[{"role": "user", "content": "Summarize this article in one sentence."}],
)Claude Opus 5 juga memiliki thinking yang aktif secara default dan menerima thinking: {type: "disabled"} pada effort high atau di bawahnya. Pada effort xhigh atau max, thinking tidak dapat dinonaktifkan: permintaan yang menggabungkan thinking: {type: "disabled"} dengan level effort tersebut mengembalikan error 400. Pembatasan ini berlaku untuk Claude Opus 5 dan model yang lebih baru dan diberlakukan pada setiap permintaan. Dengan thinking dinonaktifkan, Claude Opus 5 terkadang dapat mengeluarkan pemanggilan alat sebagai teks biasa atau menyertakan tag XML internal dalam output yang terlihat. Lihat Menjalankan dengan thinking dinonaktifkan untuk mitigasi prompting.
Claude Fable 5, Claude Mythos 5, dan Claude Mythos Preview menolak thinking: {type: "disabled"}: thinking tidak dapat dinonaktifkan pada model-model ini.
Jika model Anda hanya mendukung extended thinking (lihat tabel konfigurasi per-model), konfigurasikan dengan type: "enabled" dan nilai budget_tokens sebagai gantinya. Halaman Extended thinking membahas konfigurasi tersebut. Dan jika konfigurasi thinking apa pun kembali dengan error 400, Troubleshooting thinking mencocokkan setiap pesan error dengan perbaikannya.
Field display pada konfigurasi thinking mengontrol bagaimana konten thinking dikembalikan dalam respons API. display berfungsi di kedua mode: atur bersama dengan type: "adaptive" atau type: "enabled". Field ini menerima dua nilai:
"summarized": blok thinking berisi teks thinking yang diringkas, ringkasan yang dapat dibaca dari penalaran Claude. Ini adalah default pada Claude Opus 4.6, Claude Sonnet 4.6, dan model 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 Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, dan Claude Mythos Preview.Atur display: "omitted" 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.
Dengan display: "omitted", respons berisi blok thinking dengan field thinking kosong:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}Perhatikan hal-hal berikut saat bekerja dengan thinking yang dihilangkan:
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 di-round-trip 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 display.display: "omitted", tidak ada event thinking_delta yang dikeluarkan. Lihat Streaming thinking untuk urutan event.Dalam Ruby SDK, hash biasa menerima display: seperti yang ditunjukkan contoh. Kelas bertipe ThinkingConfigAdaptive menamai parameter tersebut display_ (dengan garis bawah di akhir, untuk menghindari pembayangan Kernel#display Ruby). Bagaimanapun, field pada wire tetap display.
Ketika display adalah "summarized", teks thinking yang Anda terima adalah ringkasan dari proses thinking lengkap Claude, bukan rantai pemikiran mentah. Thinking yang diringkas memberikan manfaat kecerdasan penuh dari thinking sambil mencegah penyalahgunaan. Tidak ada pengaturan display yang mengembalikan rantai pemikiran mentah.
Perhatikan hal-hal berikut saat bekerja dengan thinking yang diringkas:
Thinking berfungsi dengan streaming. Blok thinking di-stream sebagai event thinking_delta di dalam event content_block_delta, diikuti oleh satu event signature_delta tepat sebelum content_block_stop blok tersebut. Blok teks di-stream setelahnya seperti biasa.
Contoh berikut melakukan streaming respons dengan adaptive thinking, mencetak thinking dan text delta saat tiba:
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive", "display": "summarized"},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
) as stream:
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
print(event.delta.text, end="", flush=True)Untuk menyusun kembali blok thinking lengkap dengan signature-nya setelah streaming, gunakan helper akumulasi pesan SDK Anda jika tersedia (misalnya, stream.get_final_message() di Python atau stream.finalMessage() di TypeScript) alih-alih menggabungkan delta sendiri.
Ketika display: "omitted" diatur, blok thinking 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":""}}Untuk mekanisme streaming umum, lihat Streaming Messages.
Parameter thinking mengontrol apakah Claude berpikir dalam blok pemikiran sebelum menjawab; parameter effort mengontrol seberapa banyak upaya yang Claude curahkan untuk keseluruhan respons, yang dalam mode adaptif mencakup seberapa sering dan seberapa dalam Claude berpikir. Jangan meneruskan adaptive sebagai nilai effort: adaptive adalah mode berpikir, bukan tingkat effort.
Untuk apa yang dilakukan setiap level effort terhadap perilaku thinking, lihat tabel perilaku thinking per-level di halaman Mengarahkan thinking. Halaman Effort mendokumentasikan parameter itu sendiri, termasuk level mana yang didukung setiap model. Pada Claude Opus 4.5, satu-satunya model khusus extended-thinking yang mendukung effort, effort berkomposisi dengan budget_tokens. Lihat Aturan dan penyetelan budget.
Dengan dua kontrol yang dipisahkan seperti ini, pilih yang sesuai dengan tujuan Anda:
effort terlebih dahulu. Ini menskalakan seluruh respons ke bawah, termasuk thinking.effort, atau lihat Mengarahkan seberapa sering Claude berpikir di halaman steering.thinking: {type: "disabled"} pada model yang mengizinkannya (lihat tabel konfigurasi per-model).max_tokens. Effort adalah panduan lunak. max_tokens adalah batas ketat.Thinking bekerja bersama penggunaan alat, memungkinkan Claude bernalar melalui pemilihan alat dan memproses hasil alat. Dua batasan berlaku:
thinking: {type: "enabled"}) hanya mendukung tool_choice: {"type": "auto"} (default) atau tool_choice: {"type": "none"}. Menggunakan tool_choice: {"type": "any"} atau tool_choice: {"type": "tool", "name": "..."} menghasilkan error karena opsi ini memaksa penggunaan alat, yang tidak kompatibel dengan extended thinking manual. Adaptive thinking, termasuk pada model di mana thinking aktif secara default, mendukung penggunaan alat yang dipaksa.Loop penggunaan alat adalah satu turn asisten. Dari perspektif model, turn asisten tidak selesai sampai Claude menyelesaikan respons penuhnya, yang mungkin mencakup beberapa pemanggilan alat dan hasil. Seluruh urutan ini adalah satu turn 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"]Seluruh turn berjalan dalam satu mode thinking: Anda tidak dapat mengalihkan thinking di tengah turn, termasuk selama loop penggunaan alat. Dalam mode extended (manual), API juga memberlakukan bahwa turn asisten terakhir dari permintaan dengan thinking diaktifkan dimulai dengan blok thinking. Mode adaptive melonggarkan ini: tidak ada turn asisten yang perlu dimulai dengan blok thinking.
Konflik di tengah turn terdegradasi dengan baik. Jika Anda mengalihkan thinking di tengah turn (misalnya, antara mengirim pemanggilan alat dan mengembalikan hasilnya), API tidak mengembalikan error. Sebaliknya, API secara diam-diam menonaktifkan thinking untuk permintaan tersebut. Untuk mempertahankan kualitas model, API dapat menghapus blok thinking yang akan menciptakan struktur turn yang tidak valid, atau menonaktifkan thinking ketika riwayat percakapan tidak kompatibel dengan thinking yang diaktifkan. Untuk mengonfirmasi apakah thinking aktif, periksa keberadaan blok thinking dalam respons.
Alihkan antar turn, bukan di dalamnya. Rencanakan strategi thinking Anda di awal setiap turn. Selesaikan turn asisten, lalu ubah konfigurasi thinking untuk turn berikutnya:
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)Mengalihkan mode thinking juga membatalkan caching prompt. Lihat Thinking dan caching prompt.
Ketika Claude memanggil alat, ia menjeda konstruksi responsnya untuk menunggu informasi eksternal. Ketika Anda mengembalikan hasil alat, Claude melanjutkan membangun respons yang sama, sehingga penalaran sebelumnya harus tetap ada. Kirim kembali setiap blok thinking ke API secara lengkap dan tidak dimodifikasi, bersama dengan blok tool_use yang menyertainya. Ini penting karena dua alasan:
Singkatnya:
Anda tidak perlu memangkas thinking lama sendiri. Kirim kembali semua blok thinking dalam percakapan multi-turn, dan API secara otomatis memfilternya, menyimpan blok yang diperlukan untuk mempertahankan penalaran model, dan menagih token input hanya untuk blok yang benar-benar ditampilkan ke Claude. Blok turn sebelumnya mana yang disimpan bersifat per-model. Lihat Preservasi blok thinking berdasarkan model. Untuk mengganti default, gunakan strategi context-editing clear_thinking_20251015.
Dalam pesan asisten terbaru, urutan blok thinking berturut-turut harus cocok dengan apa yang dihasilkan model dalam permintaan asli: Anda tidak dapat menyusun ulang, mengedit, atau menghapus sebagian. Ini termasuk blok redacted_thinking.
Untuk panduan lengkap dua turn dengan kode di setiap SDK, lihat Thinking dalam alur kerja alat dan multi-turn. Panduan tersebut mendefinisikan alat, menerima respons thinking-plus-tool-use, dan mengirim kembali turn asisten dengan hasil alat.
Interleaved thinking memungkinkan Claude berpikir di antara pemanggilan alat, bernalar tentang setiap hasil alat sebelum bertindak berdasarkan hasil tersebut. Dengan interleaved thinking, Claude dapat:
Dengan adaptive thinking, interleaved thinking otomatis pada setiap model yang mendukung adaptive thinking. Tidak diperlukan header beta. Pada Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 5, Claude Opus 4.8, dan Claude Opus 4.7, penalaran di antara pemanggilan alat selalu muncul dalam blok thinking. Claude Haiku 4.5 tidak mendukung interleaved thinking. Pada model yang menggunakan extended thinking manual, interleaving memerlukan header beta dan mengubah cara budget thinking dihitung. Interleaved thinking dalam mode manual membahas aturan per-model dan perilaku header spesifik platform.
Dengan interleaved thinking, alokasi thinking dapat mencakup seluruh turn asisten alih-alih satu respons. Interleaved thinking hanya didukung untuk alat yang digunakan melalui Messages API.
Untuk perbandingan yang dikerjakan yang menunjukkan apa yang diubah interleaved thinking dalam alur kerja dua alat, lihat Bagaimana interleaved thinking mengubah alur.
Apakah blok thinking dari turn asisten sebelumnya tetap dalam konteks secara default bergantung pada model:
Preservasi membawa dua manfaat:
Trade-off-nya adalah penggunaan konteks: percakapan panjang mengonsumsi lebih banyak ruang konteks pada model keep-all, karena blok thinking yang dipertahankan dihitung sebagai input seperti riwayat percakapan lainnya (lihat Thinking dan jendela konteks). Perilaku ini otomatis di kedua rezim. Tidak diperlukan perubahan kode atau header beta, dan Anda harus tetap mengirim kembali blok thinking yang lengkap dan tidak dimodifikasi seperti yang dijelaskan dalam Mempertahankan blok thinking. Untuk mengganti default di kedua arah, gunakan penghapusan blok thinking.
Mengganti model di tengah percakapan. Ketika Anda beralih antara dua model mana pun, misalnya setelah fallback penolakan classifier, hapus blok thinking dan redacted_thinking dari turn asisten sebelumnya. Blok thinking terikat pada model yang menghasilkannya. Model lain secara diam-diam mengabaikannya alih-alih menolak permintaan, tetapi blok yang diabaikan tetap menambah token input.
Caching prompt berinteraksi dengan thinking dalam beberapa cara spesifik. Aturan berikut berlaku di kedua mode thinking.
Perubahan konfigurasi membatalkan caching. Konfigurasi thinking dan level effort yang di-resolve dirender ke dalam prompt itu sendiri, sehingga mengubah salah satunya memulai prefix cache baru. Beralih antara adaptive, enabled, dan disabled, mengubah budget_tokens, dan mengubah nilai effort semuanya membatalkan breakpoint cache: breakpoint level pesan selalu miss, dan breakpoint alat serta prompt sistem juga dapat miss, tergantung di mana model merender konfigurasi. Perlakukan setiap perubahan thinking atau effort sebagai memulai cache dari awal. Permintaan berturut-turut yang mempertahankan konfigurasi yang sama mempertahankan cache, dan mengatur parameter secara eksplisit ke nilai defaultnya setara dengan menghilangkannya. Demonstrasi yang dikerjakan dengan output usage ada di halaman Mengarahkan thinking.
Blok thinking di-cache dengan hasil alat. Selama loop penggunaan alat, caching terjadi ketika Anda membuat permintaan lanjutan yang menyertakan hasil alat. Pada titik itu riwayat percakapan sebelumnya, termasuk blok thinking-nya, dapat di-cache, dan blok thinking yang di-cache tersebut dihitung sebagai token input dalam metrik usage Anda ketika dibaca dari cache. Ini terjadi secara otomatis, bahkan tanpa penanda cache_control eksplisit, dan berperilaku sama untuk thinking reguler dan interleaved. Trade-off-nya: blok thinking yang tidak pernah Anda lihat lagi dalam respons tetap berkontribusi pada penggunaan token input ketika dibaca dari cache.
Apakah blok sebelumnya ada dalam konteks sama sekali bersifat per-model. Default preservasi mengatur hal ini. Pada model keep-all, blok thinking dari turn sebelumnya tetap di-cache dan dalam konteks. Pada model last-turn-only, begitu Anda mengirim pesan pengguna yang bukan hasil alat, semua blok thinking sebelumnya dihapus dari konteks. Pada model tersebut, percakapan seperti ini:
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]diproses seolah-olah blok thinking tidak pernah ada:
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]Pada model keep-all, permintaan yang sama menyimpan thinking_block_1 dan thinking_block_2 dalam konteks dan dalam cache.
Degradasi menghapus thinking dari riwayat yang dapat di-cache. Jika thinking menjadi nonaktif di tengah turn dan Anda mengirim konten thinking dalam turn penggunaan alat saat ini, konten thinking dihapus dan thinking tetap nonaktif untuk permintaan tersebut (lihat degradasi yang baik). Interleaved thinking memperkuat efek pembatalan cache, karena blok thinking dapat terjadi di antara beberapa pemanggilan alat.
max_tokens, yang mencakup semua thinking yang dihasilkan Claude dalam turn saat ini, 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" alih-alih mengembalikan error. Pada model sebelumnya, API mengembalikan error validasi sebagai gantinya. Lihat Menangani stop reason.
Bagaimana thinking dihitung terhadap jendela bergantung pada kapan thinking dihasilkan:
max_tokens, ditagih sebagai token output, dan menempati ruang jendela konteks untuk turn yang menghasilkannya.Dalam praktiknya:
max_tokens turn tersebut dan kemudian keluar dari jendela.Diagram berikut mengilustrasikan rezim last-turn-only (penghapusan). Yang pertama menunjukkan percakapan multi-turn: blok thinking setiap turn dihasilkan dalam output tetapi tidak dibawa ke input turn berikutnya.
Yang kedua menunjukkan rezim yang sama dengan penggunaan alat: thinking tetap dalam konteks bersama hasil alatnya selama durasi turn asisten, lalu keluar pada turn pengguna berikutnya.
Gunakan API penghitungan token untuk mendapatkan hitungan akurat untuk kasus penggunaan spesifik Anda, terutama untuk percakapan multi-turn yang menyertakan thinking.
Konten thinking penuh dienkripsi dan dikembalikan dalam field signature pada setiap blok thinking. API menggunakan signature untuk memverifikasi bahwa blok thinking dihasilkan oleh Claude ketika Anda mengirimnya kembali.
Perhatikan hal-hal berikut saat bekerja dengan signature:
signature_delta di dalam event content_block_delta tepat sebelum event content_block_stop.signature secara signifikan lebih panjang pada model Claude 4 dan yang lebih baru dibandingkan model sebelumnya.signature bersifat opaque: jangan menginterpretasikan atau mem-parse-nya.signature kompatibel lintas platform (Claude API, Amazon Bedrock, dan Google Cloud). Nilai yang dihasilkan pada satu platform berfungsi pada platform lain.Selain blok thinking reguler, API dapat mengembalikan blok redacted_thinking ketika bagian dari penalaran Claude diredaksi karena alasan keamanan. Blok redacted_thinking berisi konten thinking terenkripsi dalam field data, tanpa teks yang dapat dibaca:
{
"type": "redacted_thinking",
"data": "..."
}Field data bersifat opaque dan terenkripsi. Seperti field signature pada blok thinking reguler, kirim kembali blok redacted_thinking ke API tanpa perubahan ketika melanjutkan percakapan multi-turn dengan alat.
Pada Claude Fable 5 dan Claude Mythos 5, rantai pemikiran mentah tidak pernah dikembalikan. Blok yang Anda terima adalah blok thinking reguler, bukan redacted_thinking, dan pengaturan display bekerja sama seperti pada model lain (teks yang diringkas, atau field thinking kosong ketika omitted, yang merupakan default di sini). Untuk bentuk respons blok thinking, lihat referensi Messages API.
Saat melanjutkan percakapan pada model yang sama, kirim kembali setiap blok thinking ke API persis seperti yang diterima, termasuk blok yang field thinking-nya kosong. Jangan mengedit atau merekonstruksinya. Membaca teks ringkasan untuk ditampilkan tidak masalah: API menolak blok yang konten yang dikembalikannya telah dimodifikasi, bukan blok yang telah Anda baca. Teks yang ditempatkan di field thinking omitted yang kosong diabaikan alih-alih ditolak.
Untuk bagaimana blok thinking ditangani ketika Anda mengganti model di tengah percakapan, lihat Preservasi blok thinking berdasarkan model.
Dua pengecualian, dibahas dalam Fallback credit:
fallback dari fallback mid-output tetap di tempat mereka muncul.Untuk mendapatkan visibilitas ke dalam penalaran model, baca blok thinking yang dijelaskan di halaman ini alih-alih meminta penalaran dalam teks respons. Pada Claude Fable 5, permintaan yang mencoba memunculkan penalaran internal model sebagai bagian dari teks respons dapat ditolak dengan stop_details.category: "reasoning_extraction". Lihat Kategori penolakan untuk referensi field dan panduan penanganan.
Parameter sampling. Pada Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7, dan Claude Sonnet 5, nilai temperature, top_p, atau top_k yang bukan default akan mengembalikan error 400 pada setiap permintaan, terlepas dari apakah thinking digunakan atau tidak. Pada model yang lebih lama, pembatasan ini hanya berlaku saat thinking aktif: temperature dan top_k tidak kompatibel dengan thinking, dan top_p diizinkan pada nilai antara 0,95 dan 1.
Prefill respons dan penggunaan alat yang dipaksa. Anda tidak dapat melakukan pre-fill pada respons asisten saat thinking aktif. Penggunaan alat yang dipaksa (tool_choice: {"type": "any"} atau {"type": "tool", ...}) tidak kompatibel dengan pemikiran diperpanjang manual tetapi berfungsi dengan adaptive thinking. Lihat Thinking dengan penggunaan alat.
Batas output. Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 5, 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 per permintaan. Claude Haiku 4.5, Claude Sonnet 4.5, dan Claude Opus 4.5 mendukung hingga 64k. Pada Message Batches API, beta header output-300k-2026-03-24 menaikkan batas menjadi 300k untuk Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6, dan Claude Sonnet 4.6. Lihat ikhtisar model untuk batasan pada model lama.
Permintaan panjang. SDK mewajibkan streaming ketika 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. Perkirakan waktu respons yang lebih lama saat thinking aktif, karena menghasilkan blok thinking menambah waktu pemrosesan. Untuk beban kerja yang mendorong thinking melebihi sekitar 32k token per permintaan, gunakan batch processing untuk menghindari masalah jaringan: permintaan semacam itu dapat berjalan cukup lama hingga mencapai timeout sistem dan batas koneksi terbuka.
Arahkan seberapa sering dan seberapa dalam Claude berpikir dengan tingkat effort, panduan prompt sistem, dan pengarahan per pesan, serta pahami biaya dan harga thinking.
Pelajari siklus lengkap penggunaan alat dua turn yang mempertahankan blok thinking dengan benar, dan lihat bagaimana interleaved thinking mengubah alurnya.
Diagnosis dan perbaiki kegagalan thinking yang paling umum: error 400 konfigurasi, blok thinking yang kosong atau hilang, penghentian max_tokens, dan cache miss.
Kontrol berapa banyak token yang digunakan Claude saat merespons dengan parameter effort, menyeimbangkan antara kelengkapan respons dan efisiensi token.
Was this page helpful?