Extended thinking memberikan Claude kemampuan penalaran yang ditingkatkan untuk tugas-tugas kompleks, dengan transparansi yang bervariasi ke dalam proses pemikiran langkah demi langkah sebelum memberikan jawaban akhirnya.
Untuk Claude Opus 4.6, kami merekomendasikan menggunakan adaptive thinking (thinking: {type: "adaptive"}) dengan parameter effort alih-alih mode pemikiran manual yang dijelaskan di halaman ini. Konfigurasi thinking: {type: "enabled", budget_tokens: N} manual sudah usang di Opus 4.6 dan akan dihapus dalam rilis model di masa depan.
Extended thinking didukung dalam model berikut:
claude-opus-4-6) — adaptive thinking direkomendasikan; mode manual (type: "enabled") sudah usangclaude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-3-7-sonnet-20250219) (usang)claude-haiku-4-5-20251001)Perilaku API berbeda di seluruh model Claude Sonnet 3.7 dan Claude 4, tetapi bentuk API tetap sama persis.
Untuk informasi lebih lanjut, lihat Perbedaan dalam pemikiran di seluruh versi model.
Ketika extended thinking diaktifkan, Claude membuat blok konten thinking di mana ia mengeluarkan penalaran internalnya. Claude menggabungkan wawasan dari penalaran ini sebelum membuat respons akhir.
Respons API akan mencakup blok konten thinking, diikuti oleh blok konten text.
Berikut adalah contoh format respons default:
{
"content": [
{
"type": "thinking",
"thinking": "Mari saya analisis ini langkah demi langkah...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "Berdasarkan analisis saya..."
}
]
}Untuk informasi lebih lanjut tentang format respons extended thinking, lihat Referensi API Pesan.
Berikut adalah contoh menggunakan extended thinking dalam Messages API:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-sonnet-4-5",
"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?"
}
]
}'Untuk mengaktifkan extended thinking, tambahkan objek thinking, dengan parameter type diatur ke enabled dan budget_tokens ke anggaran token yang ditentukan untuk extended thinking. Untuk Claude Opus 4.6, kami merekomendasikan menggunakan type: "adaptive" sebagai gantinya — lihat Adaptive thinking untuk detail. Meskipun type: "enabled" dengan budget_tokens masih didukung di Opus 4.6, ini sudah usang dan akan dihapus dalam rilis di masa depan.
Parameter budget_tokens menentukan jumlah maksimum token yang diizinkan Claude gunakan untuk proses penalaran internalnya. Di model Claude 4 dan model yang lebih baru, 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 sudah usang di Claude Opus 4.6 dan akan dihapus dalam rilis model di masa depan. Kami merekomendasikan menggunakan adaptive thinking dengan parameter effort untuk mengontrol kedalaman pemikiran sebagai gantinya.
Claude Opus 4.6 mendukung hingga 128K token output. Model sebelumnya mendukung hingga 64K token output.
budget_tokens harus diatur ke nilai kurang dari max_tokens. Namun, ketika menggunakan interleaved thinking dengan tools, Anda dapat melampaui batas ini karena batas token menjadi seluruh jendela konteks Anda (200k token).
With extended thinking enabled, the Messages API for Claude 4 models returns a summary of Claude's full thinking process. Summarized thinking provides the full intelligence benefits of extended thinking, while preventing misuse.
Here are some important considerations for summarized thinking:
Claude Sonnet 3.7 continues to return full thinking output.
In rare cases where you need access to full thinking output for Claude 4 models, contact our sales team.
Anda dapat melakukan streaming respons extended thinking menggunakan server-sent events (SSE).
Ketika streaming diaktifkan untuk extended thinking, Anda menerima konten pemikiran melalui acara thinking_delta.
Untuk dokumentasi lebih lanjut tentang streaming melalui Messages API, lihat Streaming Messages.
Berikut adalah cara menangani streaming dengan pemikiran:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-sonnet-4-5",
"max_tokens": 16000,
"stream": true,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?"
}
]
}'Contoh output streaming:
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-5", "stop_reason": null, "stop_sequence": null}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": ""}}
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 menggunakan streaming dengan pemikiran diaktifkan, Anda mungkin memperhatikan bahwa teks kadang-kadang 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 "chunky" ini, dengan kemungkinan penundaan antara acara streaming. Kami terus bekerja untuk meningkatkan pengalaman ini, dengan pembaruan di masa depan berfokus pada membuat konten pemikiran melakukan streaming dengan lebih lancar.
Extended thinking dapat digunakan bersama dengan tool use, memungkinkan Claude untuk bernalar melalui pemilihan tool dan pemrosesan hasil.
Ketika menggunakan extended thinking dengan tool use, perhatikan batasan berikut:
Batasan pilihan tool: Tool use 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 kesalahan karena opsi ini memaksa penggunaan tool, yang tidak kompatibel dengan extended thinking.
Menjaga blok pemikiran: Selama penggunaan tool, Anda harus melewatkan blok thinking kembali ke API untuk pesan asisten terakhir. Sertakan blok yang lengkap dan tidak dimodifikasi kembali ke API untuk mempertahankan kontinuitas penalaran.
Anda tidak dapat mengalihkan pemikiran di tengah giliran asisten, termasuk selama loop penggunaan tool. Seluruh giliran asisten harus beroperasi dalam mode pemikiran tunggal:
Dari perspektif model, loop penggunaan tool adalah bagian dari giliran asisten. Giliran asisten tidak selesai sampai Claude menyelesaikan respons penuhnya, yang mungkin mencakup beberapa panggilan tool dan hasil.
Misalnya, urutan ini semua bagian dari giliran asisten tunggal:
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 tool secara konseptual merupakan bagian dari satu respons asisten yang berkelanjutan.
Ketika konflik pemikiran mid-turn terjadi (seperti mengalihkan pemikiran on atau off selama loop penggunaan tool), API secara otomatis menonaktifkan pemikiran untuk permintaan itu. Untuk mempertahankan kualitas model dan tetap on-distribution, API dapat:
Ini berarti bahwa mencoba mengalihkan pemikiran mid-turn tidak akan menyebabkan kesalahan, tetapi pemikiran akan diam-diam dinonaktifkan untuk permintaan itu. Untuk mengkonfirmasi apakah pemikiran aktif, periksa kehadiran blok thinking dalam respons.
Praktik terbaik: Rencanakan strategi pemikiran Anda di awal setiap giliran daripada mencoba mengalihkan mid-turn.
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 prompt caching untuk riwayat pesan. Untuk detail lebih lanjut, lihat bagian Extended thinking dengan prompt caching.
Selama penggunaan tool, Anda harus melewatkan blok thinking kembali ke API, dan Anda harus menyertakan blok lengkap yang tidak dimodifikasi kembali ke API. Ini sangat penting untuk mempertahankan aliran penalaran model dan integritas percakapan.
Meskipun Anda dapat menghilangkan blok thinking dari giliran assistant sebelumnya, kami menyarankan selalu melewatkan semua blok pemikiran ke API untuk percakapan multi-turn apa pun. API akan:
Ketika mengalihkan mode pemikiran selama percakapan, ingat bahwa seluruh giliran asisten (termasuk loop penggunaan tool) harus beroperasi dalam mode pemikiran tunggal. Untuk detail lebih lanjut, lihat Mengalihkan mode pemikiran dalam percakapan.
Ketika Claude memanggil tool, ia menjeda konstruksi respons untuk menunggu informasi eksternal. Ketika hasil tool dikembalikan, Claude akan melanjutkan membangun respons yang ada. Ini memerlukan pemeliharaan blok pemikiran selama penggunaan tool, untuk beberapa alasan:
Kontinuitas penalaran: Blok pemikiran menangkap penalaran langkah demi langkah Claude yang menyebabkan permintaan tool. Ketika Anda memposting hasil tool, menyertakan pemikiran asli memastikan Claude dapat melanjutkan penalarannya dari tempat ia berhenti.
Pemeliharaan konteks: Meskipun hasil tool muncul sebagai pesan pengguna dalam struktur API, mereka adalah bagian dari aliran penalaran yang berkelanjutan. Mempertahankan blok pemikiran mempertahankan aliran konseptual ini di seluruh panggilan API yang berbeda. Untuk informasi lebih lanjut tentang manajemen konteks, lihat panduan kami tentang jendela konteks.
Penting: Ketika memberikan 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 ini.
Extended thinking dengan tool use di model Claude 4 mendukung interleaved thinking, yang memungkinkan Claude untuk berpikir di antara panggilan tool dan membuat penalaran yang lebih canggih setelah menerima hasil tool.
Dengan interleaved thinking, Claude dapat:
Untuk Claude Opus 4.6, interleaved thinking secara otomatis diaktifkan ketika menggunakan adaptive thinking — tidak ada header beta yang diperlukan.
Untuk model Claude 4, tambahkan header beta interleaved-thinking-2025-05-14 ke permintaan API Anda untuk mengaktifkan interleaved thinking.
Berikut adalah beberapa pertimbangan penting untuk interleaved thinking:
budget_tokens dapat melebihi parameter max_tokens, karena mewakili total anggaran di semua blok pemikiran dalam satu giliran asisten.interleaved-thinking-2025-05-14.interleaved-thinking-2025-05-14 dalam permintaan ke model apa pun, tanpa efek.interleaved-thinking-2025-05-14 ke model apa pun selain Claude Opus 4.6, Claude Opus 4.5, Claude Opus 4.1, Opus 4, atau Sonnet 4, permintaan Anda akan gagal.Prompt caching dengan pemikiran memiliki beberapa pertimbangan penting:
Tugas extended thinking sering kali memakan waktu lebih dari 5 menit untuk diselesaikan. Pertimbangkan menggunakan durasi cache 1 jam untuk mempertahankan cache hits di seluruh sesi pemikiran yang lebih lama dan alur kerja multi-langkah.
Penghapusan konteks blok pemikiran
Pola invalidasi cache
Meskipun blok pemikiran dihapus untuk caching dan perhitungan konteks, mereka harus dipertahankan ketika melanjutkan percakapan dengan tool use, terutama dengan interleaved thinking.
Saat menggunakan pemikiran yang diperluas dengan penggunaan alat, blok pemikiran menunjukkan perilaku caching tertentu yang mempengaruhi 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 Claude Opus 4.5 dan yang lebih baru (termasuk Claude Opus 4.6), semua blok pemikiran sebelumnya disimpan secara default. Untuk model yang lebih lama, karena blok pengguna non-hasil-alat disertakan, semua blok pemikiran sebelumnya diabaikan. Permintaan ini akan diproses sama dengan:
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 kunci:
cache_control eksplisitDalam model Claude yang lebih lama (sebelum Claude Sonnet 3.7), jika jumlah token prompt dan max_tokens melebihi jendela konteks model, sistem akan secara otomatis menyesuaikan max_tokens agar sesuai dengan batas konteks. Ini berarti Anda dapat mengatur nilai max_tokens yang besar dan sistem akan secara diam-diam menguranginya sesuai kebutuhan.
Dengan model Claude 3.7 dan 4, max_tokens (yang mencakup anggaran pemikiran Anda ketika pemikiran diaktifkan) diberlakukan sebagai batas ketat. Sistem sekarang akan mengembalikan kesalahan validasi jika token prompt + max_tokens melebihi ukuran jendela konteks.
Anda dapat membaca panduan kami tentang jendela konteks untuk penyelaman yang lebih mendalam.
Saat menghitung penggunaan jendela konteks dengan pemikiran diaktifkan, ada beberapa pertimbangan yang perlu diperhatikan:
max_tokens untuk putaran ituDiagram di bawah menunjukkan manajemen token khusus ketika pemikiran yang diperluas diaktifkan:
Jendela konteks yang efektif dihitung sebagai:
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Kami merekomendasikan menggunakan API penghitungan token untuk mendapatkan penghitungan token yang akurat untuk kasus penggunaan spesifik Anda, terutama saat bekerja dengan percakapan multi-putaran yang mencakup pemikiran.
Saat menggunakan pemikiran yang diperluas dengan penggunaan alat, blok pemikiran harus secara eksplisit dipertahankan dan dikembalikan dengan hasil alat.
Perhitungan jendela konteks yang efektif untuk pemikiran yang diperluas 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 mengilustrasikan manajemen token untuk pemikiran yang diperluas dengan penggunaan alat:
Mengingat perilaku jendela konteks dan max_tokens dengan pemikiran yang diperluas pada model Claude 3.7 dan 4, Anda mungkin perlu:
max_tokens saat panjang prompt Anda berubahPerubahan ini telah dilakukan untuk memberikan perilaku yang lebih dapat diprediksi dan transparan, terutama karena batas token maksimal telah meningkat secara signifikan.
Full thinking content is encrypted and returned in the signature field. This field is used to verify that thinking blocks were generated by Claude when passed back to the API.
It is only strictly necessary to send back thinking blocks when using tools with extended thinking. Otherwise you can omit thinking blocks from previous turns, or let the API strip them for you if you pass them back.
If sending back thinking blocks, we recommend passing everything back as you received it for consistency and to avoid potential issues.
Here are some important considerations on thinking encryption:
signature_delta inside a content_block_delta event just before the content_block_stop event.signature values are significantly longer in Claude 4 models than in previous models.signature field is an opaque field and should not be interpreted or parsed - it exists solely for verification purposes.signature values are compatible across platforms (Claude APIs, Amazon Bedrock, and Vertex AI). Values generated on one platform will be compatible with another.Occasionally Claude's internal reasoning will be flagged by our safety systems. When this occurs, we encrypt some or all of the thinking block and return it to you as a redacted_thinking block. redacted_thinking blocks are decrypted when passed back to the API, allowing Claude to continue its response without losing context.
When building customer-facing applications that use extended thinking:
Here's an example showing both normal and redacted thinking blocks:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "redacted_thinking",
"data": "EmwKAhgBEgy3va3pzix/LafPsn4aDFIT2Xlxh0L5L8rLVyIwxtE3rAFBa8cr3qpPkNRj2YfWXGmKDxH4mPnZ5sQ7vB9URj2pLmN3kF8/dW5hR7xJ0aP1oLs9yTcMnKVf2wRpEGjH9XZaBt4UvDcPrQ..."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Seeing redacted thinking blocks in your output is expected behavior. The model can still use this redacted reasoning to inform its responses while maintaining safety guardrails.
If you need to test redacted thinking handling in your application, you can use this special test string as your prompt: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB
When passing thinking and redacted_thinking blocks back to the API in a multi-turn conversation, you must include the complete unmodified block back to the API for the last assistant turn. This is critical for maintaining the model's reasoning flow. We suggest always passing back all thinking blocks to the API. For more details, see the Preserving thinking blocks section.
Messages API menangani pemikiran secara berbeda di seluruh model Claude Sonnet 3.7 dan Claude 4, terutama dalam perilaku redaksi dan ringkasan.
Lihat tabel di bawah untuk perbandingan yang dipadatkan:
| Fitur | Claude Sonnet 3.7 | Model Claude 4 (pra-Opus 4.5) | Claude Opus 4.5 | Claude Opus 4.6 (pemikiran adaptif) |
|---|---|---|---|---|
| Output Pemikiran | Mengembalikan output pemikiran lengkap | Mengembalikan pemikiran yang diringkas | Mengembalikan pemikiran yang diringkas | Mengembalikan pemikiran yang diringkas |
| Pemikiran yang Disisipi | Tidak didukung | Didukung dengan header beta interleaved-thinking-2025-05-14 | Didukung dengan header beta interleaved-thinking-2025-05-14 | Otomatis dengan pemikiran adaptif (tidak perlu header beta) |
| Pelestarian Blok Pemikiran | Tidak dipertahankan di seluruh putaran | Tidak dipertahankan di seluruh putaran | Dipertahankan secara default | Dipertahankan secara default |
Mulai dari Claude Opus 4.5 (dan berlanjut di Claude Opus 4.6), blok pemikiran dari putaran asisten sebelumnya dipertahankan dalam konteks model secara default. Ini berbeda dari model sebelumnya, yang menghapus blok pemikiran dari putaran sebelumnya.
Manfaat pelestarian blok pemikiran:
Pertimbangan penting:
Untuk model sebelumnya (Claude Sonnet 4.5, Opus 4.1, dll.), blok pemikiran dari putaran sebelumnya terus dihapus dari konteks. Perilaku yang ada yang dijelaskan dalam bagian Pemikiran yang diperluas dengan caching prompt berlaku untuk model tersebut.
For complete pricing information including base rates, cache writes, cache hits, and output tokens, see the pricing page.
The thinking process incurs charges for:
When extended thinking is enabled, a specialized system prompt is automatically included to support this feature.
When using summarized thinking:
The billed output token count will not match the visible token count in the response. You are billed for the full thinking process, not the summary you see.
max_tokens lebih besar dari 21.333 untuk menghindari batas waktu HTTP pada permintaan yang berjalan lama. Ini adalah validasi sisi klien, bukan pembatasan API. Jika Anda tidak perlu memproses acara secara bertahap, gunakan .stream() dengan .get_final_message() (Python) atau .finalMessage() (TypeScript) untuk mendapatkan objek Message lengkap tanpa menangani acara individual — lihat Streaming Messages untuk detail. Saat streaming, bersiaplah untuk menangani blok konten pemikiran dan teks saat mereka tiba.temperature atau top_k serta penggunaan alat yang dipaksa.top_p ke nilai antara 1 dan 0,95.Jelajahi contoh praktis pemikiran dalam buku masak kami.
Pelajari praktik terbaik rekayasa prompt untuk pemikiran yang diperluas.
Was this page helpful?