Pemikiran yang diperluas memberikan Claude kemampuan penalaran yang ditingkatkan untuk tugas-tugas kompleks, sambil memberikan tingkat transparansi yang berbeda-beda ke dalam proses pemikiran langkah demi langkah sebelum memberikan jawaban akhirnya.
Pemikiran yang diperluas didukung dalam model berikut:
claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-3-7-sonnet-20250219) (tidak direkomendasikan lagi)claude-haiku-4-5-20251001)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514Perilaku 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 pemikiran yang diperluas diaktifkan, Claude membuat blok konten thinking di mana ia mengeluarkan penalaran internalnya. Claude menggabungkan wawasan dari penalaran ini sebelum menyusun 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 pemikiran yang diperluas, lihat Referensi API Pesan.
Berikut adalah contoh penggunaan pemikiran yang diperluas dalam API Pesan:
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": "Apakah ada jumlah bilangan prima yang tak terbatas sehingga n mod 4 == 3?"
}
]
}'Untuk mengaktifkan pemikiran yang diperluas, tambahkan objek thinking, dengan parameter type diatur ke enabled dan budget_tokens ke anggaran token yang ditentukan untuk pemikiran yang diperluas.
Parameter budget_tokens menentukan jumlah maksimum token yang diizinkan Claude gunakan untuk proses penalaran internalnya. Dalam model Claude 4, batas ini berlaku untuk token pemikiran penuh, dan bukan untuk keluaran ringkasan. 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 harus diatur ke nilai yang kurang dari max_tokens. Namun, ketika menggunakan pemikiran yang disisipi dengan alat, Anda dapat melampaui batas ini karena batas token menjadi seluruh jendela konteks Anda (200k token).
Dengan pemikiran yang diperluas diaktifkan, API Pesan untuk model Claude 4 mengembalikan ringkasan dari proses pemikiran penuh Claude. Pemikiran ringkasan memberikan manfaat intelijen penuh dari pemikiran yang diperluas, sambil mencegah penyalahgunaan.
Berikut adalah beberapa pertimbangan penting untuk pemikiran ringkasan:
Claude Sonnet 3.7 terus mengembalikan keluaran pemikiran penuh.
Dalam kasus langka di mana Anda memerlukan akses ke keluaran pemikiran penuh untuk model Claude 4, hubungi tim penjualan kami.
Anda dapat melakukan streaming respons pemikiran yang diperluas menggunakan server-sent events (SSE).
Ketika streaming diaktifkan untuk pemikiran yang diperluas, Anda menerima konten pemikiran melalui acara thinking_delta.
Untuk dokumentasi lebih lanjut tentang streaming melalui API Pesan, lihat Pesan Streaming.
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": "Berapa 27 * 453?"
}
]
}'Contoh keluaran 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": "Mari saya selesaikan ini langkah demi langkah:\n\n1. Pertama pecahkan 27 * 453"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n2. 453 = 400 + 50 + 3"}}
// Delta pemikiran tambahan...
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": "27 * 453 = 12.231"}}
// Delta teks tambahan...
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 mengalir lebih lancar.
Pemikiran yang diperluas dapat digunakan bersama dengan penggunaan alat, memungkinkan Claude untuk bernalar melalui pemilihan alat dan pemrosesan hasil.
Ketika menggunakan pemikiran yang diperluas 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 kesalahan karena opsi ini memaksa penggunaan alat, yang tidak kompatibel dengan pemikiran yang diperluas.
Mempertahankan blok pemikiran: Selama penggunaan alat, Anda harus meneruskan 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 alat. Seluruh giliran asisten harus beroperasi dalam mode pemikiran tunggal:
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.
Sebagai contoh, urutan ini semuanya bagian dari giliran asisten tunggal:
Pengguna: "Bagaimana cuaca di Paris?"
Asisten: [pemikiran] + [penggunaan_alat: dapatkan_cuaca]
Pengguna: [hasil_alat: "20°C, cerah"]
Asisten: [teks: "Cuaca di Paris adalah 20°C dan cerah"]Meskipun ada beberapa pesan API, loop penggunaan alat secara konseptual adalah bagian dari satu respons asisten yang berkelanjutan.
Anda mungkin mengalami kesalahan ini:
Diharapkan `thinking` atau `redacted_thinking`, tetapi ditemukan `tool_use`.
Ketika `thinking` diaktifkan, pesan `assistant` akhir harus dimulai
dengan blok pemikiran (mendahului set `tool_use` dan
`tool_result` terakhir).Ini biasanya terjadi ketika:
✗ Tidak valid: Mengalihkan pemikiran segera setelah penggunaan alat
Pengguna: "Bagaimana cuacanya?"
Asisten: [penggunaan_alat] (pemikiran dinonaktifkan)
Pengguna: [hasil_alat]
// Tidak dapat mengaktifkan pemikiran di sini - masih dalam giliran asisten yang sama✓ Valid: Selesaikan giliran asisten terlebih dahulu
Pengguna: "Bagaimana cuacanya?"
Asisten: [penggunaan_alat] (pemikiran dinonaktifkan)
Pengguna: [hasil_alat]
Asisten: [teks: "Cerah"]
Pengguna: "Bagaimana besok?" (pemikiran dinonaktifkan)
Asisten: [pemikiran] + [teks: "..."] (pemikiran diaktifkan - giliran baru)Praktik terbaik: Rencanakan strategi pemikiran Anda di awal setiap giliran daripada mencoba mengalihkan di tengah giliran.
Mengalihkan mode pemikiran juga membatalkan caching prompt untuk riwayat pesan. Untuk detail lebih lanjut, lihat bagian Pemikiran yang diperluas dengan caching prompt.
Selama penggunaan alat, Anda harus meneruskan blok thinking kembali ke API, dan Anda harus menyertakan blok yang lengkap dan 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 untuk selalu meneruskan semua blok pemikiran kembali ke API untuk percakapan multi-giliran apa pun. API akan:
Ketika mengalihkan mode pemikiran selama percakapan, ingat bahwa seluruh giliran asisten (termasuk loop penggunaan alat) harus beroperasi dalam mode pemikiran tunggal. Untuk detail lebih lanjut, lihat Mengalihkan mode pemikiran dalam percakapan.
Ketika Claude memanggil alat, ia menghentikan konstruksi respons untuk menunggu informasi eksternal. Ketika hasil alat dikembalikan, Claude akan melanjutkan membangun respons yang ada. Ini memerlukan pemeliharaan blok pemikiran selama penggunaan alat, untuk beberapa alasan:
Kontinuitas penalaran: Blok pemikiran menangkap penalaran langkah demi langkah Claude yang menyebabkan permintaan alat. Ketika Anda memposting 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, mereka adalah bagian dari aliran penalaran yang berkelanjutan. Mempertahankan blok pemikiran mempertahankan aliran konseptual ini di seluruh panggilan API beberapa. Untuk informasi lebih lanjut tentang manajemen konteks, lihat panduan kami tentang jendela konteks.
Penting: Ketika memberikan blok thinking, seluruh urutan blok thinking berturut-turut harus cocok dengan keluaran yang dihasilkan oleh model selama permintaan asli; Anda tidak dapat mengatur ulang atau memodifikasi urutan blok ini.
Pemikiran yang diperluas dengan penggunaan alat dalam model Claude 4 mendukung pemikiran yang tersisip, yang memungkinkan Claude untuk berpikir di antara panggilan alat dan membuat penalaran yang lebih canggih setelah menerima hasil alat.
Dengan pemikiran yang tersisip, Claude dapat:
Untuk mengaktifkan pemikiran yang tersisip, tambahkan header beta interleaved-thinking-2025-05-14 ke permintaan API Anda.
Berikut adalah beberapa pertimbangan penting untuk pemikiran yang tersisip:
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.5, Claude Opus 4.1, Opus 4, atau Sonnet 4, permintaan Anda akan gagal.Penyimpanan prompt dengan pemikiran memiliki beberapa pertimbangan penting:
Tugas pemikiran yang diperluas sering kali memakan waktu lebih dari 5 menit untuk diselesaikan. Pertimbangkan 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 invalidasi cache
Meskipun blok pemikiran dihapus untuk penyimpanan cache dan perhitungan konteks, mereka harus dipertahankan saat melanjutkan percakapan dengan penggunaan alat, terutama dengan pemikiran yang tersisip.
Saat menggunakan pemikiran yang diperluas dengan penggunaan alat, blok pemikiran menunjukkan perilaku penyimpanan cache 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, semua blok pemikiran sebelumnya disimpan secara default. Untuk model yang lebih lama, karena blok pengguna hasil non-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 saat 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 giliran ituDiagram di bawah menunjukkan manajemen token khusus saat 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-giliran 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 model Claude 3.7 dan 4 pemikiran yang diperluas, 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.
Konten pemikiran penuh dienkripsi dan dikembalikan dalam bidang signature. Bidang ini digunakan untuk memverifikasi bahwa blok pemikiran dihasilkan oleh Claude saat dilewatkan kembali ke API.
Hanya benar-benar perlu mengirim kembali blok pemikiran saat menggunakan alat dengan pemikiran yang diperluas. Jika tidak, Anda dapat menghilangkan blok pemikiran dari giliran sebelumnya, atau membiarkan API menghapusnya untuk Anda jika Anda melewatkannya kembali.
Jika mengirim kembali blok pemikiran, kami merekomendasikan melewatkan semuanya kembali seperti yang Anda terima untuk konsistensi dan untuk menghindari potensi masalah.
Berikut adalah beberapa pertimbangan penting tentang enkripsi pemikiran:
signature_delta di dalam acara content_block_delta tepat sebelum acara content_block_stop.signature secara signifikan lebih panjang dalam model Claude 4 dibandingkan dengan model sebelumnya.signature adalah bidang buram dan tidak boleh diinterpretasikan atau diurai - bidang ini hanya ada untuk tujuan verifikasi.signature kompatibel di seluruh platform (Claude API, Amazon Bedrock, dan Vertex AI). Nilai yang dihasilkan di satu platform akan kompatibel dengan platform lain.Kadang-kadang penalaran internal Claude akan ditandai oleh sistem keamanan kami. Ketika ini terjadi, kami mengenkripsi sebagian atau seluruh blok thinking dan mengembalikannya kepada Anda sebagai blok redacted_thinking. Blok redacted_thinking didekripsi ketika diteruskan kembali ke API, memungkinkan Claude untuk melanjutkan responsnya tanpa kehilangan konteks.
Saat membangun aplikasi yang menghadap pelanggan yang menggunakan pemikiran yang diperluas:
Berikut adalah contoh yang menunjukkan blok pemikiran normal dan yang diredaksi:
{
"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..."
}
]
}Melihat blok pemikiran yang diredaksi dalam output Anda adalah perilaku yang diharapkan. Model masih dapat menggunakan penalaran yang diredaksi ini untuk menginformasikan responsnya sambil mempertahankan penjaga keamanan.
Jika Anda perlu menguji penanganan pemikiran yang diredaksi dalam aplikasi Anda, Anda dapat menggunakan string uji khusus ini sebagai prompt Anda: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB
Saat melewatkan blok thinking dan redacted_thinking kembali ke API dalam percakapan multi-putaran, Anda harus menyertakan blok yang lengkap dan tidak dimodifikasi kembali ke API untuk giliran asisten terakhir. Ini sangat penting untuk mempertahankan aliran penalaran model. Kami menyarankan untuk selalu melewatkan semua blok pemikiran ke API. Untuk detail lebih lanjut, lihat bagian Preserving thinking blocks di atas.
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 (pre-Opus 4.5) | Claude Opus 4.5 dan lebih baru |
|---|---|---|---|
| Output Pemikiran | Mengembalikan output pemikiran penuh | 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 |
| Preservasi Blok Pemikiran | Tidak dipertahankan di seluruh putaran | Tidak dipertahankan di seluruh putaran | Dipertahankan secara default (memungkinkan optimasi cache, penghematan token) |
Claude Opus 4.5 memperkenalkan perilaku default baru: blok pemikiran dari giliran asisten sebelumnya dipertahankan dalam konteks model secara default. Ini berbeda dari model sebelumnya, yang menghapus blok pemikiran dari putaran sebelumnya.
Manfaat preservasi 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 Extended thinking with prompt caching berlaku untuk model tersebut.
Untuk informasi harga lengkap termasuk tarif dasar, penulisan cache, cache hits, dan token output, lihat halaman harga.
Proses pemikiran dikenakan biaya untuk:
Ketika pemikiran yang diperluas diaktifkan, prompt sistem khusus secara otomatis disertakan untuk mendukung fitur ini.
Saat menggunakan pemikiran yang diringkas:
Jumlah token output yang ditagih tidak akan cocok dengan jumlah token yang terlihat dalam respons. Anda ditagih untuk proses pemikiran penuh, bukan ringkasan yang Anda lihat.
max_tokens lebih besar dari 21.333. Saat streaming, bersiaplah untuk menangani blok konten pemikiran dan teks saat tiba.temperature atau top_k serta forced tool use.top_p ke nilai antara 1 dan 0,95.