Thinking dalam alur kerja alat dan multi-giliran
Telusuri perjalanan bolak-balik penggunaan alat dua giliran yang lengkap yang mempertahankan blok thinking dengan benar, dan lihat bagaimana interleaved thinking mengubah alurnya.
Halaman ini menelusuri perjalanan bolak-balik "tool use" (penggunaan alat) dua giliran yang lengkap dengan thinking diaktifkan: Claude berpikir, meminta pemanggilan alat, menerima hasilnya, dan menyelesaikan jawabannya, dengan blok thinking ditangani dengan benar di setiap langkah. Aturan lengkapnya ada di halaman Thinking, di Thinking dengan penggunaan alat dan Mempertahankan blok thinking; halaman ini menunjukkan aturan-aturan tersebut diterapkan dalam kode yang dapat dijalankan.
Aturan yang diterapkan dalam panduan ini
Setiap tautan mengarah ke pernyataan lengkapnya di halaman Thinking:
- Batasi pilihan alat ke
autoataunonedalam mode manual: opsitool_choiceyang memaksa penggunaan alat mengembalikan error dengan "extended thinking" (pemikiran diperpanjang) manual (thinking: {type: "enabled"}); adaptive thinking mendukung penggunaan alat yang dipaksakan. - Pertahankan satu konfigurasi thinking per giliran asisten: loop penggunaan alat adalah satu giliran asisten, jadi ubah konfigurasi hanya di antara giliran.
- Kirim kembali blok thinking secara lengkap dan tanpa modifikasi: saat Anda mengembalikan hasil alat, blok thinking dari pesan asisten harus ikut dikembalikan bersamanya.
- Gemakan pesan asisten persis seperti yang diterima: membangun ulang pesan atau menyaring blok
redacted_thinkingakan memicu error 400.
Contoh-contoh ini menggunakan adaptive thinking; pada model yang hanya mendukung pemikiran diperpanjang, ganti dengan thinking: {type: "enabled", budget_tokens: N}. Aturan perjalanan bolak-baliknya identik.
Menelusuri perjalanan bolak-balik penggunaan alat dua giliran
Contoh ini mendefinisikan alat get_weather, membiarkan Claude berpikir dan meminta pemanggilan alat, lalu mengembalikan hasil alat bersama dengan giliran asisten yang digemakan persis seperti yang diterima, termasuk blok thinking.
Buat permintaan pertama dengan alat yang tersedia
Kirim permintaan dengan adaptive thinking diaktifkan dan alat didefinisikan. Selain parameter
thinking, ini adalah permintaan penggunaan alat standar:client = anthropic.Anthropic() weather_tool = { "name": "get_weather", "description": "Get current weather for a location", "input_schema": { "type": "object", "properties": {"location": {"type": "string", "description": "City name"}}, "required": ["location"], }, } # Permintaan pertama - Claude merespons dengan pemikiran dan permintaan alat response = client.messages.create( model="claude-opus-4-8", max_tokens=16000, thinking={"type": "adaptive"}, tools=[weather_tool], messages=[{"role": "user", "content": "What's the weather in Paris?"}], ) print(response)Tangkap array content untuk digemakan kembali
Anda akan melihat blok
thinking,text, dantool_usedalam content respons pada eksekusi di mana Claude memilih untuk berpikir (pada permintaan yang lebih sederhana, mode adaptive mungkin melewatkan blok thinking). Jaga array content ini tetap utuh: langkah berikutnya mengirimkannya kembali kata demi kata.Output{ "content": [ { "type": "thinking", "thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`...", "signature": "BDaL4VrbR2Oj0hO4XpJxT28J5T...." }, { "type": "text", "text": "I can help you get the current weather information for Paris. Let me check that for you" }, { "type": "tool_use", "id": "toolu_01CswdEQBMshySk6Y9DFKrfq", "name": "get_weather", "input": { "location": "Paris" } } ] }Kembalikan hasil alat, dengan menggemakan giliran asisten kata demi kata
Jalankan alat di sisi Anda, lalu kirim permintaan kedua yang menambahkan dua pesan ke percakapan. Yang pertama adalah content asisten yang digemakan kembali persis seperti yang diterima, sehingga blok thinking tetap tidak berubah di samping blok
tool_use. Yang kedua adalah pesan pengguna yang membawatool_result.Setiap contoh adalah skrip mandiri: skrip ini mengulangi permintaan pertama, lalu segera mengirim tindak lanjutnya menggunakan respons yang baru saja diterima.
client = anthropic.Anthropic() weather_tool = { "name": "get_weather", "description": "Get current weather for a location", "input_schema": { "type": "object", "properties": {"location": {"type": "string", "description": "City name"}}, "required": ["location"], }, } response = client.messages.create( model="claude-opus-4-8", max_tokens=16000, thinking={"type": "adaptive"}, tools=[weather_tool], messages=[{"role": "user", "content": "What's the weather in Paris?"}], ) # Ekstrak blok tool use untuk mendapatkan ID-nya bagi tool result tool_use_block = next(block for block in response.content if block.type == "tool_use") # Panggil API cuaca Anda yang sebenarnya, di sinilah panggilan API Anda yang sebenarnya ditempatkan # Anggap saja inilah yang kita terima kembali weather_data = {"temperature": 88} # Permintaan kedua - Sertakan giliran asisten dan tool result continuation = client.messages.create( model="claude-opus-4-8", max_tokens=16000, thinking={"type": "adaptive"}, tools=[weather_tool], messages=[ {"role": "user", "content": "What's the weather in Paris?"}, # Kembalikan konten asisten persis seperti yang diterima. Ketika blok thinking # ada, blok tersebut harus menyertai blok tool_use. {"role": "assistant", "content": response.content}, { "role": "user", "content": [ { "type": "tool_result", "tool_use_id": tool_use_block.id, "content": f"Current temperature: {weather_data['temperature']}°F", } ], }, ], ) print(continuation)Baca respons akhir
Anda akan melihat Claude menyelesaikan giliran dengan teks. Karena interleaved thinking bersifat otomatis dalam mode adaptive, kelanjutannya juga dapat dibuka dengan blok thinking baru sebelum teks akhir:
Output{ "content": [ { "type": "text", "text": "Currently in Paris, the temperature is 88°F (31°C)" } ] }
Bagaimana interleaved thinking mengubah alur
"Interleaved thinking" (pemikiran berselang-seling) memungkinkan Claude berpikir di antara pemanggilan alat, bernalar tentang setiap hasil alat sebelum menindaklanjutinya. Konsep dan ketersediaan per model dibahas di Interleaved thinking pada halaman Thinking; interleaving mengubah di mana blok thinking muncul, bukan apakah pemanggilan alat dapat dirangkai. Perbandingan berikut menunjukkan apa yang diubah oleh interleaved thinking dalam alur kerja dua alat:
Tanpa interleaved thinking, Claude berpikir sekali di awal giliran asisten. Respons berikutnya setelah hasil alat berlanjut tanpa blok thinking baru.
User: "What's the total revenue if we sold 150 units at $50 each,
and how does this compare to our average monthly revenue?"
Response 1: [thinking] "I need to calculate 150 * $50, then check the database..."
[tool_use: calculator] { "expression": "150 * 50" }
↓ tool result: "7500"
Response 2: [tool_use: database_query] { "query": "SELECT AVG(revenue)..." }
↑ no thinking block
↓ tool result: "5200"
Response 3: [text] "The total revenue is $7,500, which is 44% above your
average monthly revenue of $5,200."
↑ no thinking blockDengan interleaved thinking diaktifkan, Claude dapat berpikir setelah menerima setiap hasil alat, memungkinkannya bernalar tentang hasil antara sebelum melanjutkan.
User: "What's the total revenue if we sold 150 units at $50 each,
and how does this compare to our average monthly revenue?"
Response 1: [thinking] "I need to calculate 150 * $50 first..."
[tool_use: calculator] { "expression": "150 * 50" }
↓ tool result: "7500"
Response 2: [thinking] "Got $7,500. Now I should query the database to compare..."
[tool_use: database_query] { "query": "SELECT AVG(revenue)..." }
↑ thinking after receiving calculator result
↓ tool result: "5200"
Response 3: [thinking] "$7,500 vs $5,200 average - that's a 44% increase..."
[text] "The total revenue is $7,500, which is 44% above your
average monthly revenue of $5,200."
↑ thinking before final answerLangkah selanjutnya
Ikhtisarnya: aktifkan thinking, baca output thinking, dan tinjau aturan lengkap untuk penggunaan alat, caching, dan streaming.
Arahkan seberapa sering dan seberapa dalam Claude berpikir dengan tingkat effort dan panduan berbasis prompt.
Anggaran thinking manual pada model lama: mekanisme budget_tokens dan migrasi ke adaptive.
Was this page helpful?