Claude Platform Docs
PesanPemikiran

Pemikiran

Pahami cara kerja pemikiran Claude: mengaktifkannya, membaca output pemikiran, mengarahkan kedalaman pemikiran dengan effort, dan menggunakan pemikiran dengan alat, caching, dan streaming.

Model yang menjawab dalam satu kali proses harus melakukan semuanya dengan benar pada percobaan pertama: tanpa coretan kerja, tanpa pemeriksaan, dan tanpa mengubah arah di tengah jalan. Untuk sebuah pembuktian, bug yang rumit, atau tugas agentik yang panjang, pendekatan pertama sering kali bukan yang terbaik.

"Thinking" (pemikiran) menghilangkan batasan tersebut. Saat pemikiran aktif, Claude menguraikan masalah dengan kata-katanya sendiri sebelum menjawab: ia menyatakan ulang apa yang diminta, mencoba berbagai pendekatan, memeriksa hasil antara, dan meninggalkan jalur yang ternyata tidak tepat. Pemikiran di awal tersebut tiba dalam blok konten thinking sebelum respons, dan Claude memanfaatkannya untuk menghasilkan jawaban akhir. Inilah sebabnya pemikiran meningkatkan kinerja pada tugas kompleks seperti matematika, pemrograman, analisis, dan pekerjaan agentik yang berjalan lama, yaitu tugas yang kualitas jawabannya bergantung pada pekerjaan antara yang jika tidak ada pemikiran akan dipadatkan ke dalam respons itu sendiri atau dilewati.

Pemikiran memiliki biaya. Token yang dihabiskan Claude untuk bernalar ditagih sebagai token output, bahkan ketika teks pemikiran tidak dikembalikan kepada Anda, dan token tersebut dihitung terhadap max_tokens bersama teks respons. Halaman ini membahas perilaku pemikiran di seluruh permukaan API: cara mengaktifkannya, membaca outputnya, dan mengelola interaksinya dengan alat, "streaming" (pengaliran), caching, dan "context window" (jendela konteks).

Cara kerja pemikiran

API requestClaude evaluates the promptthinks up frontClaude thinks up front, then distillsa summary into the "thinking" blockskips up-front thinkingno "thinking" blockis producedTool use?yesClaude calls a toolTool result comes backClaude evaluates the result — may thinkagain, adding a "thinking" summarymoretool callsdonenoOne response is returned:"thinking" block(s), then final "text" blocks

Apakah Claude berpikir pada permintaan tertentu, dan seberapa dalam, bergantung pada konfigurasi pemikiran Anda dan kompleksitas permintaan.

Berikut tampilan pemikiran di awal dalam sebuah respons: satu atau lebih blok konten thinking tiba sebelum blok text. Blok pemikiran tetap merupakan konten yang dihasilkan, seperti blok text yang mengikutinya, tetapi dipisahkan dari respons kanonis. Setiap blok pemikiran juga membawa field signature, salinan terenkripsi dari penalaran lengkap yang Anda kirimkan kembali tanpa perubahan dalam percakapan multi-giliran dan penggunaan alat (lihat Enkripsi pemikiran):

{
  "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 berupa rantai pemikiran mentah: teks dalam blok pemikiran adalah ringkasan penalaran Claude. Field display pada konfigurasi pemikiran mengontrol apakah ringkasan tersebut dikembalikan sama sekali: "summarized" mengembalikannya, sedangkan "omitted", default pada banyak model, mengembalikan blok pemikiran dengan field thinking yang kosong. Bagaimanapun juga, blok tersebut ditagih sama dan dikirimkan kembali dengan cara yang sama dalam percakapan multi-giliran. Lihat Mengontrol tampilan pemikiran untuk default per model dan detailnya.

Jika Claude menggunakan alat, pemikiran juga dapat muncul di antara pemanggilan alat. Lihat Pemikiran dengan penggunaan alat. Untuk format respons lengkap, lihat referensi Messages API.

Mengonfigurasi pemikiran

Pada sebagian besar model, pemikiran aktif secara default atau hanya berjarak satu parameter. Tabel berikut menunjukkan apa yang dilakukan setiap model dengan setiap nilai thinking yang dapat dikirim oleh permintaan. Error 400 berarti API menolak permintaan tersebut, dan Pemecahan masalah pemikiran memuat setiap error beserta perbaikannya.

ModelTanpa field thinking"adaptive""enabled" dengan budget_tokens"between_tools""disabled"
Claude Opus 5.5Pemikiran adaptifPemikiran adaptifError 400Error 400Error 400
Claude Sonnet 5.5Pemikiran adaptifPemikiran adaptifError 400Pemikiran di awal nonaktif pada effort high atau lebih rendahError 400
Claude Haiku 5.5Pemikiran adaptifPemikiran adaptifError 400Error 400Pemikiran nonaktif pada effort high atau lebih rendah
Claude Fable 5.1Pemikiran adaptifPemikiran adaptifError 400Error 400Error 400
Claude Mythos 5.1Pemikiran adaptifPemikiran adaptifError 400Error 400Error 400
Claude Fable 5Pemikiran adaptifPemikiran adaptifError 400Error 400Error 400
Claude Mythos 5Pemikiran adaptifPemikiran adaptifError 400Error 400Error 400
Claude Opus 5Pemikiran adaptifPemikiran adaptifError 400Error 400Pemikiran nonaktif pada effort high atau lebih rendah
Claude Sonnet 5Pemikiran adaptifPemikiran adaptifError 400Error 400Pemikiran nonaktif
Claude Opus 4.8Pemikiran nonaktifPemikiran adaptifError 400Error 400Pemikiran nonaktif
Claude Opus 4.7Pemikiran nonaktifPemikiran adaptifError 400Error 400Pemikiran nonaktif
Claude Mythos PreviewPemikiran adaptifPemikiran adaptifPemikiran diperpanjangError 400Error 400
Claude Opus 4.6Pemikiran nonaktifPemikiran adaptifPemikiran diperpanjang (usang)Error 400Pemikiran nonaktif
Claude Sonnet 4.6Pemikiran nonaktifPemikiran adaptifPemikiran diperpanjang (usang)Error 400Pemikiran nonaktif
Claude Opus 4.5Pemikiran nonaktifError 400Pemikiran diperpanjangError 400Pemikiran nonaktif
Claude Sonnet 4.5Pemikiran nonaktifError 400Pemikiran diperpanjangError 400Pemikiran nonaktif
Claude Haiku 4.5Pemikiran nonaktifError 400Pemikiran diperpanjangError 400Pemikiran nonaktif

Dalam tabel, "pada effort high atau lebih rendah" berarti permintaan berfungsi pada effort low, medium, dan high serta mengembalikan error 400 pada xhigh atau max.

Pada Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5.5, Claude Sonnet 5, Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, dan Claude Haiku 5.5, pemikiran sudah aktif dan tidak memerlukan konfigurasi. display secara default bernilai "omitted" pada model-model ini, sehingga teks pemikiran disembunyikan sampai Anda memilih untuk menampilkannya. Pilih untuk menampilkannya dengan thinking: {"type": "adaptive", "display": "summarized"}, seperti yang dilakukan contoh-contoh berikut.

Pada Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, dan Claude Sonnet 4.6, pemikiran nonaktif sampai Anda menetapkan thinking: {type: "adaptive"}, yang memungkinkan Claude menentukan kapan dan seberapa dalam berpikir berdasarkan permintaan. Permintaan yang sama, dengan string model yang ditukar, akan mengaktifkannya di sana. Contoh-contoh berikut menetapkan display: "summarized" agar teks pemikiran terlihat, dan menggunakan max_tokens yang lapang:

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-5-5",
    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:
    match block.type:
        case "thinking":
            print(f"\nThinking: {block.thinking}")
        case "text":
            print(f"\nResponse: {block.text}")

Menjalankan contoh ini mencetak pemikiran yang diringkas, lalu jawabannya:

Output
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 pemikiran dihitung terhadap max_tokens, jadi tetapkan nilainya cukup tinggi untuk menyisakan ruang bagi pemikiran dan teks respons. Lihat Kontrol biaya di halaman pengarahan dan Pemikiran dan jendela konteks.

Menonaktifkan pemikiran

Pada Claude Sonnet 5, di mana pemikiran 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 pemikiran yang aktif secara default dan menerima thinking: {type: "disabled"} pada effort high atau lebih rendah. Pada effort xhigh atau max, pemikiran tidak dapat dinonaktifkan: permintaan yang menggabungkan thinking: {type: "disabled"} dengan tingkat effort tersebut mengembalikan error 400. Pembatasan ini diberlakukan pada setiap permintaan. Dengan pemikiran dinonaktifkan, Claude Opus 5 sesekali dapat mengeluarkan pemanggilan alat sebagai teks biasa atau menyertakan tag XML internal dalam output yang terlihat. Lihat Menjalankan dengan pemikiran dinonaktifkan untuk mitigasi melalui prompting.

Claude Sonnet 5.5 juga memiliki pemikiran yang aktif secara default, dan model ini menolak thinking: {type: "disabled"} dengan error 400. Untuk menonaktifkan pemikiran di awal, kirimkan thinking: {type: "between_tools"} sebagai gantinya. Ini adalah pengaturan pemikiran terendah pada Claude Sonnet 5.5, dan diterima pada effort high atau lebih rendah. Model tetap mengembalikan pembaruan progres di antara pemanggilan alat. Tanpa alat, respons hanya berisi teks, seperti halnya disabled pada Claude Sonnet 5. Lihat Menjalankan tanpa pemikiran di awal untuk panduan prompting.

Claude Haiku 5.5 juga memiliki pemikiran yang aktif secara default dan menerima thinking: {type: "disabled"} pada effort high atau lebih rendah. Pada effort xhigh atau max, kombinasi tersebut mengembalikan error 400. Untuk mendapatkan pemikiran yang lebih sedikit, turunkan tingkat effort terlebih dahulu. Dengan pemikiran nonaktif, model dapat melewatkan pemanggilan alat yang dibutuhkannya ketika Anda juga meminta output JSON. output_config.effort per pesan yang berbeda dari tingkat yang sedang berlaku juga mengembalikan error 400 saat pemikiran nonaktif. Lihat Gunakan effort untuk mengontrol thinking dan Gunakan adaptive thinking dengan output JSON dan alat Anda sendiri.

Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, dan Claude Mythos Preview menolak thinking: {type: "disabled"}. Pemikiran tidak dapat dinonaktifkan pada model-model ini.

Untuk memeriksa apakah suatu model menerima "disabled" sebelum Anda mengirim permintaan, baca nilai capabilities.thinking.types.disabled.supported dari Models API. Menggunakan Models API menjelaskan field tersebut.

Jika model Anda hanya mendukung pemikiran diperpanjang (lihat tabel konfigurasi per model), konfigurasikan dengan type: "enabled" dan nilai budget_tokens sebagai gantinya. Halaman Pemikiran diperpanjang membahas konfigurasi tersebut. Dan jika konfigurasi pemikiran apa pun menghasilkan error 400, Pemecahan masalah pemikiran mencocokkan setiap pesan error dengan perbaikannya.

Membaca output pemikiran

Mengontrol tampilan pemikiran

Field display pada konfigurasi pemikiran mengontrol bagaimana konten pemikiran dikembalikan dalam respons API. display berfungsi di kedua mode: tetapkan bersama type: "adaptive" atau type: "enabled". Field ini menerima nilai-nilai berikut:

  • "summarized": blok pemikiran berisi teks pemikiran yang diringkas, ringkasan yang mudah dibaca dari penalaran Claude. Ini adalah default pada Claude Opus 4.6, Claude Sonnet 4.6, dan model-model sebelumnya.
  • "omitted": blok pemikiran dikembalikan dengan field thinking yang kosong. Field signature tetap membawa pemikiran lengkap yang terenkripsi untuk kesinambungan multi-giliran (lihat Enkripsi pemikiran). Ini adalah default pada Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5.5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Mythos Preview, dan Claude Haiku 5.5.
  • "updates" (beta): blok penalaran dikembalikan dengan field thinking yang kosong, seperti pada "omitted", dan pembaruan progres singkat yang ditulis beberapa model di antara pemanggilan alat dikembalikan sebagai teks yang dapat dibaca. Memerlukan header beta thinking-display-updates-2026-08-18.

Tetapkan display: "omitted" ketika aplikasi Anda tidak menampilkan konten pemikiran kepada pengguna. Manfaat utamanya adalah waktu hingga token teks pertama yang lebih cepat saat streaming: server sepenuhnya melewatkan streaming token pemikiran dan hanya mengirimkan signature, sehingga respons teks akhir mulai di-stream lebih cepat.

Dengan display: "omitted", respons berisi blok thinking dengan field thinking yang kosong:

Output
{
  "content": [
    {
      "type": "thinking",
      "thinking": "",
      "signature": "EosnCkYICxIMMb3LzNrMu..."
    },
    {
      "type": "text",
      "text": "The answer is 12,231."
    }
  ]
}

Perhatikan hal-hal berikut saat bekerja dengan pemikiran yang dihilangkan:

  • Anda tetap dikenakan biaya untuk seluruh token pemikiran. Menghilangkan mengurangi latensi, bukan biaya.
  • Jika Anda mengirimkan kembali blok pemikiran dalam percakapan multi-giliran, kirimkan tanpa perubahan. Server mendekripsi signature untuk merekonstruksi pemikiran asli guna penyusunan prompt (lihat Mempertahankan blok pemikiran). Teks apa pun yang Anda tempatkan di field thinking dari blok yang dihilangkan dan dikirim bolak-balik akan diabaikan.
  • display tidak valid dengan thinking.type: "disabled" (tidak ada yang perlu ditampilkan) dan dengan thinking.type: "between_tools" (hanya Claude Sonnet 5.5), yang tidak menerima field lain. Dengan between_tools, pembaruan progres tetap dikembalikan dengan teks ringkasan, seperti pada display: "updates" (lihat Pembaruan progres).
  • Saat menggunakan thinking.type: "adaptive" dan model melewatkan pemikiran untuk permintaan sederhana, tidak ada blok pemikiran yang dihasilkan terlepas dari nilai display.
  • Saat streaming dengan display: "omitted", tidak ada teks pemikiran yang di-stream. Setiap blok pemikiran men-stream thinking_delta dengan string thinking kosong, lalu signature_delta-nya. Dengan display: "updates", hanya blok pembaruan progres yang men-stream event thinking_delta yang membawa teks. Lihat Streaming pemikiran untuk urutan event.

Pemikiran yang diringkas

Ketika display bernilai "summarized", teks pemikiran yang Anda terima adalah ringkasan dari seluruh proses pemikiran Claude, bukan rantai pemikiran mentah. Pemikiran yang diringkas memberikan manfaat kecerdasan penuh dari pemikiran sekaligus mencegah penyalahgunaan. Tidak ada pengaturan display yang mengembalikan rantai pemikiran mentah.

Perhatikan hal-hal berikut saat bekerja dengan pemikiran yang diringkas:

  • Anda dikenakan biaya untuk seluruh token pemikiran yang dihasilkan oleh permintaan asli, bukan token ringkasan. Jumlah token output yang ditagih tidak sama dengan jumlah token yang Anda lihat dalam respons.
  • Pada Claude Opus 4.6, Claude Sonnet 4.6, dan model-model sebelumnya, beberapa baris pertama output pemikiran lebih panjang, memberikan penalaran terperinci yang sangat membantu untuk keperluan "prompt engineering" (rekayasa prompt). Claude Mythos Preview meringkas sejak token pertama, sehingga blok pemikirannya tidak menampilkan pembukaan panjang ini.
  • Peringkasan mempertahankan gagasan utama dari proses pemikiran Claude dengan tambahan latensi minimal, sehingga ringkasan dapat di-stream saat tiba.
  • Peringkasan diproses oleh model yang berbeda dari model yang Anda targetkan dalam permintaan Anda. Model pemikiran tidak melihat output yang diringkas.
  • Seiring upaya Anthropic untuk meningkatkan fitur pemikiran, perilaku peringkasan dapat berubah.

Untuk melihat penalaran model, baca blok thinking alih-alih meminta penalaran dalam teks respons melalui prompt. Pada Claude Fable 5.1, Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5.5, dan Claude Fable 5, permintaan yang mencoba memancing penalaran internal model sebagai bagian dari teks respons dapat ditolak dengan stop_details.category: "reasoning_extraction". Lihat Kategori penolakan untuk referensi field dan Simpan penalaran di blok thinking untuk apa yang sebaiknya diminta sebagai gantinya.

Streaming pemikiran

Pemikiran berfungsi dengan streaming. Blok pemikiran di-stream sebagai event thinking_delta di dalam event content_block_delta, diikuti oleh satu event signature_delta tepat sebelum content_block_stop dari blok tersebut. Blok teks di-stream setelahnya seperti biasa.

Stream opens: message_startThinking block opens: content_block_startdisplay: "summarized"thinking_delta events streamthe thinking summarydisplay: "omitted"an empty thinking_delta,no thinking texta single signature_delta arrives,then content_block_stop closes itText block opens: content_block_starttext_delta events stream the responseStream closes:message_delta with stop reason, then message_stop

Contoh-contoh berikut men-stream respons dengan pemikiran adaptif, mencetak delta pemikiran dan teks saat tiba:

client = anthropic.Anthropic()

with client.messages.stream(
    model="claude-opus-5-5",
    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:
        match event.type:
            case "content_block_start":
                print(f"\nStarting {event.content_block.type} block...")
            case "content_block_delta":
                delta = event.delta
                match delta.type:
                    case "thinking_delta":
                        print(delta.thinking, end="", flush=True)
                    case "text_delta":
                        print(delta.text, end="", flush=True)

Untuk menyusun kembali blok pemikiran lengkap beserta signature-nya setelah streaming, gunakan helper akumulasi pesan dari SDK Anda, stream.get_final_message(), alih-alih menggabungkan delta sendiri.

Ketika display: "omitted" ditetapkan, blok pemikiran terbuka, sebuah thinking_delta dengan string thinking kosong tiba, satu signature_delta menyusul, dan blok ditutup. Streaming teks dimulai segera setelahnya:

Output
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":""}}

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":""}}

Dengan display: "updates" (beta), blok penalaran di-stream seperti pada "omitted". Setiap blok pembaruan progres men-stream teksnya sebagai event thinking_delta sebelum blok tool_use yang diperkenalkannya. Jeda beberapa detik sebelum blok pembaruan progres terbuka adalah hal yang normal:

Output
event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"thinking","thinking":"","signature":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"thinking_delta","thinking":"Confirmed the retry path never refreshes the expired token. Editing auth.py to add the refresh call."}}

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"signature_delta","signature":"Es8CCkYICxIM..."}}

event: content_block_stop
data: {"type":"content_block_stop","index":1}

event: content_block_start
data: {"type":"content_block_start","index":2,"content_block":{"type":"tool_use","id":"toolu_01D7FLrfh4GYq7yT1ULFeyMV","name":"edit_file","input":{}}}

Dengan "updates", perlakukan sebuah blok sebagai pembaruan progres segera setelah salah satu event thinking_delta-nya membawa teks yang tidak kosong.

Untuk mekanisme streaming umum, lihat Streaming Messages.

Pemikiran dan effort

Parameter thinking mengontrol apakah Claude berpikir dalam blok thinking 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 berikan adaptive sebagai nilai effort: adaptive adalah mode berpikir, bukan tingkat upaya.

Untuk mempelajari apa yang dilakukan setiap tingkat effort terhadap perilaku pemikiran, lihat tabel perilaku pemikiran per tingkat di halaman Mengarahkan pemikiran. Halaman Effort mendokumentasikan parameter itu sendiri, termasuk tingkat mana yang didukung setiap model. Pada Claude Opus 4.5, satu-satunya model khusus pemikiran diperpanjang yang mendukung effort, effort dikombinasikan dengan budget_tokens. Lihat Aturan dan penyetelan anggaran.

Dengan kedua kontrol dipisahkan seperti ini, pilih yang sesuai dengan tujuan Anda:

  • Biaya atau latensi lebih rendah pada beban kerja dengan pemikiran aktif: turunkan effort terlebih dahulu. Ini memperkecil seluruh respons, termasuk pemikiran.
  • Claude terlalu jarang atau terlalu dangkal berpikir: naikkan effort, atau lihat Mengarahkan seberapa sering Claude berpikir di halaman pengarahan.
  • Anda memerlukan pemikiran sepenuhnya nonaktif: gunakan thinking: {type: "disabled"} pada model yang mengizinkannya (lihat tabel konfigurasi per model). Claude Sonnet 5.5 menolak "disabled". Pengaturan terendahnya adalah thinking: {type: "between_tools"}, yang menonaktifkan pemikiran di awal.
  • Anda memerlukan batas atas pengeluaran yang tegas: gunakan max_tokens. Effort adalah panduan lunak. max_tokens adalah batas yang ketat.

Pemikiran dengan penggunaan alat

Pemikiran berfungsi bersama "tool use" (penggunaan alat), memungkinkan Claude bernalar dalam memilih alat dan memproses hasil alat. Dua batasan berlaku:

  1. Batasan pilihan alat (mode manual): penggunaan alat dengan pemikiran diperpanjang manual (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-opsi ini memaksa penggunaan alat, yang tidak kompatibel dengan pemikiran diperpanjang manual. Pemikiran adaptif, termasuk pada model di mana pemikiran aktif secara default, mendukung penggunaan alat yang dipaksakan, kecuali pada Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1, dan Claude Mythos 5.1 (lihat Prefill respons dan penggunaan alat yang dipaksakan). Jika penggunaan alat yang dipaksakan diterima, respons dimulai dengan pemanggilan alat dan tidak memiliki blok thinking.
  2. Mempertahankan blok pemikiran: saat Anda mengembalikan hasil alat, Anda harus mengirimkan kembali blok pemikiran dari pesan asisten ke API, lengkap dan tanpa modifikasi. Lihat Mempertahankan blok pemikiran.

Loop penggunaan alat adalah satu giliran asisten. Dari perspektif model, giliran asisten tidak selesai sampai Claude menyelesaikan respons lengkapnya, yang dapat mencakup beberapa pemanggilan alat dan hasilnya. Seluruh urutan ini adalah 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"]

Seluruh giliran berjalan dalam satu mode pemikiran: Anda tidak dapat mengubah pemikiran di tengah giliran, termasuk selama loop penggunaan alat. Dalam mode diperpanjang (manual), API juga mewajibkan bahwa giliran asisten terakhir dari permintaan dengan pemikiran aktif dimulai dengan blok pemikiran. Mode adaptif melonggarkan hal ini: tidak ada giliran asisten yang perlu dimulai dengan blok pemikiran.

Konflik di tengah giliran ditangani dengan baik. Jika Anda mengubah pemikiran di tengah giliran (misalnya, antara mengirim pemanggilan alat dan mengembalikan hasilnya), API tidak menghasilkan error. Sebaliknya, API secara diam-diam menonaktifkan pemikiran untuk permintaan tersebut. Untuk menjaga kualitas model, API dapat menghapus blok pemikiran yang akan menciptakan struktur giliran yang tidak valid, atau menonaktifkan pemikiran ketika riwayat percakapan tidak kompatibel dengan pemikiran yang diaktifkan. Untuk memastikan apakah pemikiran aktif, periksa keberadaan blok thinking dalam respons.

Ubah di antara giliran, bukan di dalamnya. Rencanakan strategi pemikiran Anda di awal setiap giliran. Selesaikan giliran asisten, lalu ubah konfigurasi pemikiran untuk giliran 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)

Mengubah mode pemikiran juga membatalkan caching prompt. Lihat Pemikiran dan caching prompt.

Mempertahankan blok pemikiran

Saat Claude memanggil alat, Claude menjeda penyusunan responsnya untuk menunggu informasi eksternal. Saat Anda mengembalikan hasil alat, Claude melanjutkan penyusunan respons yang sama, sehingga penalaran sebelumnya harus tetap tersedia. Kirimkan setiap blok thinking kembali ke API secara lengkap dan tanpa modifikasi, bersama blok tool_use yang menyertainya. Hal ini penting karena dua alasan:

  1. Kesinambungan penalaran: blok pemikiran merekam penalaran langkah demi langkah yang menghasilkan permintaan alat. Dengan menyertakannya, Claude dapat melanjutkan penalaran dari titik terakhir.
  2. Pemeliharaan konteks: dalam struktur API, hasil alat muncul sebagai pesan pengguna, tetapi hasil tersebut merupakan bagian dari satu alur penalaran yang berkesinambungan. Mempertahankan blok pemikiran menjaga alur tersebut di seluruh pemanggilan API.

Singkatnya:

  • Wajib: dalam giliran penggunaan alat, kirimkan kembali blok pemikiran.
  • Direkomendasikan: di seluruh giliran, kirimkan kembali semuanya.
  • Diizinkan: di luar penggunaan alat, Anda boleh menghilangkan pemikiran dari giliran sebelumnya.

Anda tidak perlu memangkas pemikiran lama sendiri. Kirimkan kembali semua blok pemikiran dalam percakapan multi-giliran, dan API akan memfilternya secara otomatis. API menyimpan blok yang diperlukan untuk mempertahankan penalaran model dan hanya menagih token input untuk blok yang benar-benar ditampilkan kepada Claude. Blok dari giliran sebelumnya yang disimpan bergantung pada model. Lihat Preservasi blok pemikiran berdasarkan model. Untuk mengganti perilaku default, gunakan strategi context-editing clear_thinking_20251015.

Dalam pesan asisten terbaru, urutan blok thinking yang berurutan harus sama dengan yang dihasilkan model dalam permintaan asli. Anda tidak dapat menyusun ulang, mengedit, atau menghapus sebagian blok tersebut. Aturan ini juga berlaku untuk blok redacted_thinking.

Untuk panduan lengkap dua giliran dengan kode di setiap SDK, lihat Pemikiran dalam alur kerja alat dan multi-giliran. Panduan tersebut mendefinisikan sebuah alat, menerima respons berisi pemikiran dan penggunaan alat, lalu mengirimkan kembali giliran asisten bersama hasil alat.

Pemikiran berselang

"Interleaved thinking" (pemikiran berselang) memungkinkan Claude berpikir di antara pemanggilan alat, bernalar tentang setiap hasil alat sebelum bertindak berdasarkan hasil tersebut. Dengan pemikiran berselang, Claude dapat:

  • Bernalar tentang hasil pemanggilan alat sebelum menentukan apa yang harus dilakukan selanjutnya
  • Merangkai beberapa pemanggilan alat dengan langkah-langkah penalaran di antaranya
  • Membuat keputusan yang lebih bernuansa berdasarkan hasil antara

Dengan pemikiran adaptif, pemikiran berselang berlaku otomatis pada setiap model yang mendukung pemikiran adaptif. Tidak diperlukan header beta. Pada Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5.5, Claude Opus 4.8, dan Claude Opus 4.7, penalaran di antara pemanggilan alat selalu muncul dalam blok pemikiran. Claude Haiku 4.5 tidak mendukung pemikiran berselang. Pada model yang menggunakan pemikiran diperpanjang manual, pemikiran berselang memerlukan header beta dan mengubah cara anggaran pemikiran dihitung. Pemikiran berselang dalam mode manual membahas aturan per model dan perilaku header khusus platform.

Dengan pemikiran berselang, alokasi pemikiran dapat mencakup seluruh giliran asisten, bukan hanya satu respons. Pemikiran berselang hanya didukung untuk alat yang digunakan melalui Messages API.

Untuk perbandingan yang menunjukkan apa yang diubah oleh pemikiran berselang dalam alur kerja dua alat, lihat Bagaimana pemikiran berselang mengubah alur.

Pembaruan progres di antara pemanggilan alat

Pada Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, Claude Sonnet 5.5, dan Claude Fable 5, model dapat menulis pembaruan progres di antara pemanggilan alat. Pembaruan progres adalah catatan tentang apa yang baru saja ditemukan model dan apa yang akan dilakukannya selanjutnya, ditulis untuk orang yang mengamati agen, bukan sebagai penalaran. Masing-masing dikembalikan sebagai blok thinking tersendiri dengan signature-nya sendiri, terpisah dari blok penalaran apa pun pada titik yang sama. Blok ini berada tepat sebelum blok tool_use atau server_tool_use yang diperkenalkannya. Paling banyak satu pembaruan progres mendahului setiap pemanggilan alat, dan model dapat melewatkan salah satunya. Pembaruan progres bukan pemikiran berselang: pembaruan ini muncul terlepas dari apakah blok penalaran muncul di antara pemanggilan alat, dan sebuah respons dapat berisi keduanya.

Isi blok pembaruan progres bergantung pada display:

displayBlok penalaranBlok pembaruan progres
"omitted" (default pada model-model ini)Field thinking kosongField thinking kosong
"updates" (beta)Field thinking kosongTeks ringkasan
"summarized"Teks ringkasanTeks ringkasan, tidak dapat dibedakan dari blok penalaran

Pada Claude Sonnet 5.5, pengaturan pemikiran terendah adalah thinking: {type: "between_tools"}. Pengaturan ini menonaktifkan pemikiran di awal, dan setiap pembaruan progres dikembalikan dengan teks ringkasannya, seperti pada display: "updates". between_tools hanya diterima pada effort high atau lebih rendah. Pada xhigh atau max, permintaan dengan pengaturan ini mengembalikan error 400. between_tools tidak menerima field lain: display, budget_tokens, atau block_binding yang dikirim bersamanya mengembalikan error 400. Pengaturan ini tidak memerlukan header beta dan berfungsi di setiap platform yang menawarkan Claude Sonnet 5.5. Kirimkan kembali blok tanpa perubahan: blok pembaruan progres yang Anda kirimkan kembali memberikan model catatan lengkap yang ditulisnya, bukan ringkasannya.

Gunakan display: "updates" untuk antarmuka agen yang menyembunyikan penalaran dan menampilkan baris status kepada pengguna di setiap langkah. Dengan pengaturan ini, setiap blok thinking dengan teks yang tidak kosong adalah pembaruan progres, jadi tampilkan blok tersebut dan tidak ada yang lain. Fitur ini masih beta dan memerlukan header beta thinking-display-updates-2026-08-18 (untuk mengirimkannya di Amazon Bedrock, Google Cloud, atau Microsoft Foundry, lihat Fitur beta di platform lain). Tanpa header tersebut, nilai ini ditolak dengan error 400 invalid_request_error yang sama seperti nilai display yang tidak dikenal.

{
  "model": "claude-fable-5-1",
  "max_tokens": 16000,
  "thinking": { "type": "adaptive", "display": "updates" },
  "tools": [
    {
      "name": "edit_file",
      "description": "Replace the contents of a file in the repository.",
      "input_schema": {
        "type": "object",
        "properties": {
          "path": { "type": "string" },
          "content": { "type": "string" }
        },
        "required": ["path", "content"]
      }
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": "The login test fails after an hour of uptime. Find out why and fix it."
    }
  ]
}

Dengan "updates", awal respons yang mengikuti tool_result terlihat seperti ini. Blok pertama adalah penalaran dan tetap kosong, seperti pada "omitted". Blok kedua membawa teks, jadi itu adalah pembaruan progres. Dengan "summarized", kedua blok membawa teks, dan dengan "omitted" keduanya kosong.

Output
{
  "content": [
    {
      "type": "thinking",
      "thinking": "",
      "signature": "EqMBCkYICxIM..."
    },
    {
      "type": "thinking",
      "thinking": "Confirmed the retry path never refreshes the expired token. Editing auth.py to add the refresh call.",
      "signature": "Es8CCkYICxIM..."
    },
    {
      "type": "tool_use",
      "id": "toolu_01D7FLrfh4GYq7yT1ULFeyMV",
      "name": "edit_file",
      "input": { "path": "auth.py", "content": "..." }
    }
  ]
}

Perhatikan hal-hal berikut saat bekerja dengan pembaruan progres:

  • Kirimkan kembali blok pembaruan progres tanpa perubahan bersama sisa giliran asisten, seperti blok thinking lainnya.
  • Teks yang Anda terima adalah ringkasan dari pembaruan progres, biasanya satu atau dua kalimat. Jangan mengandalkan panjangnya. Pembaruan progres dihitung terhadap usage.output_tokens dengan panjang penuhnya, bukan panjang ringkasannya.
  • Blok pembaruan progres dapat dikembalikan dengan field thinking kosong pada nilai display apa pun. Jangan tampilkan apa pun untuk blok yang kosong. Dengan "updates", blok ini terlihat sama dengan blok penalaran kosong dan tidak memerlukan penanganan terpisah.
  • Ketika respons berhenti karena max_tokens, model_context_window_exceeded, atau stop_sequence segera setelah pemanggilan alat atau hasil alat, blok terakhirnya dapat berupa blok pembaruan progres yang menggantikan pekerjaan yang belum diselesaikan model. Dengan "updates" dan "summarized", teksnya persis This part of the response was interrupted before it finished. dan Anda dapat menampilkannya seperti pembaruan lainnya. Dengan "omitted", blok ini kosong. Untuk melanjutkan, kirimkan kembali giliran asisten tanpa perubahan dan tambahkan pesan user baru (dengan tool_result untuk setiap blok tool_use dalam giliran tersebut).
  • Saat streaming, perkirakan jeda beberapa detik sebelum blok pembaruan progres terbuka. Lihat jejak "updates" di Streaming pemikiran.
  • Model-model ini menulis lebih sedikit pembaruan progres pada effort yang lebih tinggi dan dalam rantai alat yang panjang. Jika antarmuka Anda bergantung pada pembaruan ini, lihat Minta pembaruan progres yang ditujukan kepada pengguna atau, untuk Claude Opus 5.5, Pembaruan progres untuk pengguna. Untuk Claude Sonnet 5.5, lihat Pembaruan progres untuk pengguna.

Preservasi blok pemikiran berdasarkan model

Apakah blok pemikiran dari giliran asisten sebelumnya tetap berada dalam konteks secara default bergantung pada modelnya:

  • Mempertahankan semua giliran sebelumnya: Claude Opus 4.5 dan model Opus yang lebih baru, Claude Sonnet 4.6 dan model Sonnet yang lebih baru, Claude Haiku 5.5, Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, dan Claude Mythos Preview.
  • Hanya mempertahankan giliran terakhir: model Opus dan Sonnet yang lebih lama, serta semua model Haiku hingga Claude Haiku 4.5. Saat Anda mengirimkan kembali blok pemikiran yang lebih lama, API menghapusnya secara otomatis. Anda tidak perlu menghapusnya sendiri.

Preservasi memberikan dua manfaat:

  • Optimasi cache: blok pemikiran yang dipertahankan memungkinkan cache hit selama penggunaan alat, karena blok tersebut dikirim kembali bersama hasil alat dan di-cache secara bertahap di sepanjang giliran asisten, sehingga menghemat token dalam alur kerja multilangkah.
  • Tidak berdampak pada kecerdasan: mempertahankan blok pemikiran tidak berdampak negatif pada kinerja model.

Konsekuensinya adalah penggunaan konteks: percakapan panjang menghabiskan lebih banyak ruang konteks pada model yang mempertahankan semua giliran, karena blok pemikiran yang dipertahankan dihitung sebagai input seperti riwayat percakapan lainnya (lihat Pemikiran dan jendela konteks). Perilaku ini otomatis di kedua rezim. Tidak diperlukan perubahan kode atau header beta, dan Anda harus tetap mengirimkan kembali blok pemikiran yang lengkap dan tidak dimodifikasi seperti yang dijelaskan dalam Mempertahankan blok pemikiran. Untuk mengganti default ke arah mana pun, gunakan pembersihan blok pemikiran.

Beralih model di tengah percakapan. Tetap kirimkan kembali blok pemikiran tanpa perubahan saat Anda beralih model, misalnya setelah fallback penolakan classifier. Blok pemikiran hanya dapat dibaca oleh model yang menghasilkannya dan model tertentu lainnya, dan API mengabaikan atau membuang blok yang tidak dapat dibaca oleh model tujuan. Pada Claude Fable 5.1 dan Claude Mythos 5.1, arahnya penting: keduanya membaca blok pemikiran dari model sebelumnya, dan hanya keduanya yang saling membaca blok satu sama lain, sehingga beralih ke keduanya mempertahankan penalaran percakapan, sedangkan beralih dari keduanya ke model lain mana pun akan membuangnya (lihat bagaimana blok yang dibuang ditagih dan dilaporkan). Claude Opus 5.5 membaca blok pemikiran Claude Opus 5 dan blok dari model Opus, Sonnet, dan Haiku sebelumnya, serta, di Claude API dan Google Cloud, blok dari Claude Haiku 5.5, tetapi tidak membaca blok dari model Claude Fable dan Claude Mythos; di Claude API, Claude Fable 5.1 dan Claude Mythos 5.1 membaca blok Claude Opus 5.5. Peralihan dari Claude Opus 5.5 naik ke Claude Fable 5.1 di Claude API mempertahankan penalaran giliran sebelumnya; peralihan dari Claude Fable 5.1 ke Claude Opus 5.5 membuangnya. Claude Sonnet 5.5 membaca blok pemikiran dari Claude Sonnet 5, Claude Opus 4.8, Claude Haiku 4.5, dan model sebelumnya, serta, di Claude API dan Google Cloud, dari Claude Haiku 5.5, tetapi tidak dari Claude Opus 5, Claude Opus 5.5, atau model Claude Fable maupun Claude Mythos mana pun. Di Claude API dan Google Cloud, Claude Opus 5.5 membaca blok Claude Sonnet 5.5 dan tidak ada model lain yang membacanya: peralihan dari Claude Sonnet 5.5 naik ke Claude Opus 5.5 di Claude API dan Google Cloud mempertahankan penalaran giliran sebelumnya, dan peralihan lain apa pun dari Claude Sonnet 5.5 membuangnya. Claude Haiku 5.5 membaca blok pemikiran dari Claude Sonnet 5, Claude Opus 4.8, Claude Haiku 4.5, dan model sebelumnya, tetapi tidak dari Claude Opus 5, Claude Opus 5.5, Claude Sonnet 5.5, atau model Claude Fable maupun Claude Mythos mana pun. Di Claude API dan Google Cloud, Claude Opus 5.5 dan Claude Sonnet 5.5 membaca blok Claude Haiku 5.5 dan tidak ada model lain yang membacanya. Hapus sendiri blok thinking dan redacted_thinking sebelumnya hanya untuk menghemat token input pada model yang mengabaikan alih-alih membuangnya, dan jangan pernah melakukannya saat menukarkan kredit fallback, yang mengharuskan body tidak berubah.

Pemikiran yang dipertahankan

Pemikiran yang dipertahankan menentukan apakah model dapat menggunakan blok pemikiran yang Anda kirim kembali dari giliran sebelumnya. Mulai dari Claude Fable 5.1, API memeriksa signature dari setiap blok thinking atau redacted_thinking dalam permintaan untuk dua hal:

  • Model yang menghasilkannya. Setiap model membaca blok pemikirannya sendiri dan blok dari sekumpulan model lain yang tetap. Claude Fable 5.1 membaca blok dari Claude Opus 5 dan, di Claude API, dari Claude Opus 5.5; baik Claude Opus 5 maupun Claude Opus 5.5 tidak membaca blok dari Claude Fable 5.1. API membuang blok yang tidak dapat dibaca oleh model saat ini, tanpa error dan tanpa menagihnya. Lihat Beralih model di tengah percakapan.
  • Semua yang dikirim sebelumnya. Sebuah blok tetap valid hanya selama prompt system tingkat atas, tools, dan pesan-pesan sebelumnya tidak berubah. Jika salah satunya berubah, blok tersebut dan setiap blok pemikiran setelahnya menjadi tidak valid, dan API menolak permintaan dengan error 400 atau membuang blok yang tidak valid, sesuai pilihan Anda. Lihat Menjaga prefiks tetap tidak berubah.

Blok pemikiran dari Claude Sonnet 5.5 dan Claude Haiku 5.5 juga terikat pada akun yang menghasilkannya. Lihat Blok pemikiran tetap berada di akun yang menghasilkannya untuk mengetahui di mana API menerapkan hal ini.

Pemeriksaan model berlaku untuk setiap akun. API menerapkan pemeriksaan prefiks secara default untuk akun yang dibuat pada atau setelah 31 Agustus 2026, 00:00 UTC. Pada akun yang lebih lama, API menerapkan pemeriksaan hanya pada permintaan yang menetapkan thinking.block_binding.prefix_mismatch_behavior. Buat integrasi Anda bersifat append-only terlepas dari usia akun Anda, sehingga kode yang sama berfungsi di setiap akun, termasuk akun baru yang diterapkan secara default.

Agar pemikiran tetap valid, kirimkan kembali setiap giliran asisten persis seperti yang Anda terima dan tambahkan pesan baru hanya di akhir messages. Jika kode Anda membangun array messages sendiri, halaman Pemikiran yang dipertahankan membahas:

Pemikiran dan caching prompt

"Prompt caching" (caching prompt) berinteraksi dengan pemikiran dalam beberapa cara tertentu. Aturan berikut berlaku di kedua mode pemikiran.

Perubahan konfigurasi membatalkan caching. Konfigurasi pemikiran dan level effort yang telah ditentukan dirender ke dalam prompt itu sendiri, sehingga mengubah salah satunya akan memulai prefiks cache baru. Beralih antara adaptive, enabled, dan disabled, mengubah budget_tokens, dan mengubah nilai effort semuanya membatalkan breakpoint cache: breakpoint tingkat pesan selalu miss, dan breakpoint alat serta prompt sistem juga dapat miss, tergantung di mana model merender konfigurasi tersebut. Anggap setiap perubahan pemikiran atau effort tingkat atas sebagai memulai cache dari awal. Pada model yang mendukung effort per pesan, perubahan effort yang dibawa dalam pesan role: "system" di dalam messages membiarkan prefiks yang di-cache tetap utuh. Permintaan berturut-turut yang mempertahankan konfigurasi yang sama menjaga cache, dan menetapkan parameter secara eksplisit ke nilai default-nya setara dengan menghilangkannya. Blok pemikiran yang dibuang oleh API dalam kondisi pemikiran yang dipertahankan mana pun mengubah prefiks yang di-cache mulai dari posisi blok tersebut dan seterusnya. Blok yang dikirim kembali tanpa perubahan menjaga cache tetap utuh. Demonstrasi lengkap dengan output penggunaan tersedia di halaman Mengarahkan pemikiran.

Blok pemikiran di-cache bersama hasil alat. Selama loop penggunaan alat, caching terjadi saat Anda membuat permintaan lanjutan yang menyertakan hasil alat. Pada titik itu, riwayat percakapan sebelumnya, termasuk blok pemikirannya, dapat di-cache, dan blok pemikiran yang di-cache tersebut dihitung sebagai token input dalam metrik penggunaan Anda saat dibaca dari cache. Hal ini terjadi secara otomatis, bahkan tanpa penanda cache_control eksplisit, dan berperilaku sama untuk pemikiran biasa maupun pemikiran berselang. Konsekuensinya: blok pemikiran yang tidak pernah Anda lihat lagi dalam respons tetap berkontribusi pada penggunaan token input saat dibaca dari cache.

Apakah blok sebelumnya berada dalam konteks sama sekali bergantung pada model. Default preservasi mengatur hal ini. Pada model yang mempertahankan semua giliran, blok pemikiran dari giliran sebelumnya tetap di-cache dan berada dalam konteks. Pada model yang hanya mempertahankan giliran terakhir, begitu Anda mengirim pesan pengguna yang bukan hasil alat, semua blok pemikiran 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 pemikiran 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 yang mempertahankan semua giliran, permintaan yang sama mempertahankan thinking_block_1 dan thinking_block_2 dalam konteks dan dalam cache.

Degradasi menghapus pemikiran dari riwayat yang dapat di-cache. Jika pemikiran menjadi nonaktif di tengah giliran dan Anda mengirimkan konten pemikiran dalam giliran penggunaan alat saat ini, konten pemikiran tersebut dihapus dan pemikiran tetap nonaktif untuk permintaan itu (lihat degradasi yang mulus). Pemikiran berselang memperkuat efek pembatalan cache, karena blok pemikiran dapat muncul di antara beberapa pemanggilan alat.

Pemikiran dan jendela konteks

max_tokens, yang mencakup semua pemikiran yang dihasilkan Claude dalam giliran saat ini, diterapkan sebagai batas ketat. Pada model Claude 4.5 dan yang lebih baru, jika token input ditambah max_tokens melebihi ukuran "context window" (jendela konteks), API menerima permintaan tersebut. Jika pembuatan kemudian mencapai batas jendela konteks, pembuatan berhenti dengan stop_reason: "model_context_window_exceeded" alih-alih mengembalikan error. Pada model yang lebih lama, API mengembalikan error validasi sebagai gantinya. Lihat Menangani alasan berhenti.

Cara pemikiran dihitung terhadap jendela bergantung pada kapan pemikiran tersebut dihasilkan:

  • Pemikiran giliran saat ini selalu dihitung terhadap max_tokens, ditagih sebagai token output, dan menempati ruang jendela konteks untuk giliran yang menghasilkannya.
  • Pemikiran giliran sebelumnya bergantung pada default preservasi. Pada model yang mempertahankan semua giliran sebelumnya, blok pemikiran sebelumnya tetap berada dalam konteks, dihitung terhadap jendela, dan ditagih sebagai token input seperti riwayat percakapan lainnya. Pada model yang hanya mempertahankan giliran terakhir, API menghapus blok pemikiran yang lebih lama secara otomatis saat Anda mengirimkannya kembali, sehingga blok tersebut tidak menghabiskan ruang jendela atau token input.

Dalam praktiknya:

  • Pada model yang mempertahankan semua giliran, anggarkan jendela konteks Anda seolah-olah pemikiran adalah riwayat percakapan biasa, karena memang demikian. Sesi agentik yang panjang mengakumulasi pemikiran dalam konteks. Gunakan pembersihan blok pemikiran jika Anda perlu mengambil kembali ruang.
  • Pada model yang hanya mempertahankan giliran terakhir, pemikiran hanya merupakan biaya per giliran: pemikiran setiap giliran dihitung terhadap max_tokens giliran tersebut lalu keluar dari jendela.

Diagram berikut mengilustrasikan rezim yang hanya mempertahankan giliran terakhir (penghapusan). Diagram pertama menunjukkan percakapan multi-giliran: blok pemikiran setiap giliran dihasilkan dalam output tetapi tidak dibawa ke input giliran berikutnya.

0 tokensTurn 1SystemUser messageThinkingText responseTurn 2SystemUser messageText responseUser messageThinkingText responseTurn 3SystemUser messageText responseUser messageText responseUser messageThinkingText responseContext window1M (or 200k) tokens

Diagram kedua menunjukkan rezim yang sama dengan penggunaan alat: pemikiran tetap berada dalam konteks bersama hasil alatnya selama giliran asisten berlangsung, lalu keluar pada giliran pengguna berikutnya.

0 tokensTurn 1ToolsUser messageThinkingText responseTool useTurn 2ToolsUser messageThinkingText responseTool useTool resultText responseTurn 3ToolsUser messageText responseTool useTool resultText responseUser messageThinkingNo text responsedue to truncationContext window1M (or 200k) tokens

Gunakan API penghitungan token untuk mendapatkan hitungan yang akurat untuk kasus penggunaan spesifik Anda, terutama untuk percakapan multi-giliran yang menyertakan pemikiran.

Enkripsi pemikiran

Konten pemikiran lengkap dienkripsi dan dikembalikan dalam field signature pada setiap blok pemikiran. API menggunakan signature tersebut untuk memverifikasi bahwa blok pemikiran dihasilkan oleh Claude saat Anda mengirimkannya kembali.

Perhatikan hal-hal berikut saat bekerja dengan signature:

  • Mengirim kembali blok pemikiran hanya benar-benar diperlukan saat menggunakan alat dengan pemikiran. Jika tidak, Anda dapat menghilangkan blok pemikiran dari giliran sebelumnya. Jika Anda mengirimkannya kembali, apakah API mempertahankan atau menghapusnya bergantung pada model (lihat Preservasi blok pemikiran berdasarkan model). Gunakan pengeditan konteks untuk mengonfigurasi hal ini.
  • Saat mengirim kembali blok pemikiran, kirimkan semuanya persis seperti yang Anda terima, demi konsistensi dan untuk menghindari potensi masalah.
  • Saat melakukan streaming respons, signature tiba sebagai signature_delta di dalam event content_block_delta tepat sebelum event content_block_stop.
  • Nilai signature jauh lebih panjang pada model Claude 4 dan yang lebih baru dibandingkan model sebelumnya.
  • Field signature bersifat opaque: jangan menafsirkan atau mem-parse-nya.
  • Nilai signature kompatibel lintas platform (Claude API, Amazon Bedrock, dan Google Cloud). Nilai yang dihasilkan di satu platform berfungsi di platform lain, kecuali bahwa blok pemikiran dari Claude Sonnet 5.5 dan Claude Haiku 5.5 hanya berfungsi di akun yang menghasilkannya atau di akun yang terhubung dengannya. Lihat Blok pemikiran tetap berada di akun yang menghasilkannya.

Blok pemikiran yang disunting

Selain blok thinking biasa, API dapat mengembalikan blok redacted_thinking ketika sebagian penalaran Claude disunting demi keamanan. Blok redacted_thinking berisi konten pemikiran terenkripsi dalam field data, tanpa teks yang dapat dibaca:

{
  "type": "redacted_thinking",
  "data": "..."
}

Field data bersifat opaque dan terenkripsi. Seperti field signature pada blok pemikiran biasa, kirimkan kembali blok redacted_thinking ke API tanpa perubahan saat melanjutkan percakapan multi-giliran dengan alat.

Batasan dan kompatibilitas fitur

Parameter sampling

Pada Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 5.5, Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5.5, Claude Sonnet 5, dan Claude Haiku 5.5, nilai temperature, top_p, atau top_k yang bukan default mengembalikan error 400 pada setiap permintaan, terlepas dari apakah pemikiran digunakan atau tidak. Pada model-model ini, default top_p adalah 0.99, sehingga top_p bernilai 1 mengembalikan error 400, begitu pula permintaan yang menyertakan temperature dan top_p sekaligus, bahkan pada nilai default-nya. Lihat Hapus parameter sampling. Pada model yang lebih lama, pembatasan hanya berlaku saat pemikiran aktif: temperature dan top_k tidak kompatibel dengan pemikiran, dan top_p diizinkan pada nilai antara 0,95 dan 1.

Prefill respons dan penggunaan alat paksa

Model Claude 4.6 dan yang lebih baru serta Claude Mythos Preview menolak giliran asisten terakhir yang di-prefill dengan error 400, baik pemikiran aktif maupun tidak (lihat Prefill tidak didukung). Pada model yang lebih lama, Anda tidak dapat melakukan prefill respons asisten saat pemikiran aktif. Penggunaan alat paksa (tool_choice: {"type": "any"} atau {"type": "tool", ...}) tidak kompatibel dengan pemikiran diperpanjang manual tetapi berfungsi dengan pemikiran adaptif. Pengecualiannya adalah Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1, dan Claude Mythos 5.1, yang menolak penggunaan alat paksa pada setiap permintaan dengan error 400. Pada model-model tersebut, gunakan tool_choice: {"type": "auto"} dengan penggunaan alat ketat atau output terstruktur sebagai gantinya. Jika penggunaan alat paksa diterima, respons dimulai dengan pemanggilan alat dan tidak memiliki blok thinking. Agar model dapat berpikir sebelum memanggil alat, gunakan tool_choice: {"type": "auto"} dan sebutkan dalam prompt kapan harus menggunakan alat tersebut. Lihat Pemikiran dengan penggunaan alat.

Batas output

Setiap model menerima max_tokens hingga batas atas yang tercantum di sini. Pada Message Batches API, header beta output-300k-2026-03-24 menaikkan batas atas tersebut untuk model yang memiliki batas atas batch yang tercantum.

ModelMax output tokensBatches beta ceiling
Claude Fable 5.1128K—
Claude Mythos 5.1128K—
Claude Fable 5128K—
Claude Mythos 5128K—
Claude Mythos Preview128KNot available
Claude Opus 5.5128K300K
Claude Opus 5128K300K
Claude Opus 4.8128K300K
Claude Opus 4.7128K300K
Claude Opus 4.6128K300K
Claude Opus 4.564KNot available
Claude Sonnet 5.5128K300K
Claude Sonnet 5128K300K
Claude Sonnet 4.6128K300K
Claude Sonnet 4.564KNot available
Claude Haiku 5.5128K300K
Claude Haiku 4.564KNot available

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 bertahap, gunakan .stream() dengan .get_final_message() untuk mendapatkan objek Message lengkap tanpa harus menyusunnya sendiri dari event individual. Lihat Streaming Messages. Perkirakan waktu respons yang lebih lama saat pemikiran aktif, karena pembuatan blok pemikiran menambah waktu pemrosesan. Untuk beban kerja yang mendorong pemikiran di atas sekitar 32k token per permintaan, gunakan pemrosesan batch untuk menghindari masalah jaringan: permintaan semacam itu dapat berjalan cukup lama hingga mencapai timeout sistem dan batas koneksi terbuka.

Langkah selanjutnya

Arahkan seberapa sering dan seberapa dalam Claude berpikir dengan tingkat effort, panduan prompt sistem, dan pengarahan per pesan, serta pahami biaya dan harga pemikiran.

Telusuri perjalanan bolak-balik penggunaan alat dua giliran yang lengkap dan mempertahankan blok pemikiran dengan benar, serta lihat bagaimana pemikiran berselang mengubah alurnya.

Cari tahu apakah integrasi Messages API Anda mengedit riwayat percakapan, dan ganti setiap pengeditan dengan fitur API yang menjaga blok pemikiran sebelumnya tetap valid.

Diagnosis dan perbaiki kegagalan pemikiran yang paling umum: error 400 konfigurasi, blok pemikiran yang kosong atau hilang, penghentian karena max_tokens, dan cache miss.

Kendalikan berapa banyak token yang digunakan Claude saat merespons dengan parameter effort, dengan menyeimbangkan antara ketelitian respons dan efisiensi token.

Was this page helpful?