Panduan lengkap untuk mengimplementasikan penggunaan tool dengan Claude, termasuk definisi tool, kontrol output, dan penanganan error.
tools
dari permintaan API. Setiap definisi tool mencakup:
Parameter | Deskripsi |
---|---|
name | Nama tool. Harus sesuai dengan regex ^[a-zA-Z0-9_-]{1,64}$ . |
description | Deskripsi plaintext yang detail tentang apa yang dilakukan tool, kapan harus digunakan, dan bagaimana perilakunya. |
input_schema | Objek JSON Schema yang mendefinisikan parameter yang diharapkan untuk tool. |
Contoh definisi tool sederhana
get_weather
, mengharapkan objek input dengan string location
yang wajib dan string unit
opsional yang harus berupa “celsius” atau “fahrenheit”.tools
, kami membuat system prompt khusus dari definisi tool, konfigurasi tool, dan system prompt yang ditentukan pengguna. Prompt yang dibuat dirancang untuk menginstruksikan model menggunakan tool yang ditentukan dan memberikan konteks yang diperlukan agar tool dapat beroperasi dengan benar:
Contoh deskripsi tool yang baik
Contoh deskripsi tool yang buruk
ticker
. Deskripsi yang buruk terlalu singkat dan meninggalkan Claude dengan banyak pertanyaan terbuka tentang perilaku dan penggunaan tool.
tool_choice
seperti ini:
auto
memungkinkan Claude memutuskan apakah akan memanggil tools yang disediakan atau tidak. Ini adalah nilai default ketika tools
disediakan.any
memberi tahu Claude bahwa ia harus menggunakan salah satu tools yang disediakan, tetapi tidak memaksa tool tertentu.tool
memungkinkan kita memaksa Claude untuk selalu menggunakan tool tertentu.none
mencegah Claude menggunakan tools apa pun. Ini adalah nilai default ketika tidak ada tools
yang disediakan.tool_choice
akan membatalkan blok pesan yang di-cache. Definisi tool dan system prompts tetap di-cache, tetapi konten pesan harus diproses ulang.tool_choice
sebagai any
atau tool
, kami akan prefill pesan assistant untuk memaksa tool digunakan. Ini berarti bahwa model tidak akan mengeluarkan blok konten text
chain-of-thought sebelum blok konten tool_use
, bahkan jika diminta secara eksplisit untuk melakukannya.
tool_choice: {"type": "any"}
dan tool_choice: {"type": "tool", "name": "..."}
tidak didukung dan akan menghasilkan error. Hanya tool_choice: {"type": "auto"}
(default) dan tool_choice: {"type": "none"}
yang kompatibel dengan extended thinking.{"type": "auto"}
untuk tool_choice
(default) dan menambahkan instruksi eksplisit dalam pesan user
. Misalnya: What's the weather like in London? Use the get_weather tool in your response.
record_summary
dengan skema tertentu. Lihat Tool use with Claude untuk contoh kerja lengkap.
tool_choice
diatur ke auto
(ini adalah nilai default, lihat Memaksa penggunaan tool), dan Sonnet dan Haiku dapat diprompt untuk melakukannya.
Misalnya, diberikan prompt “What’s the weather like in San Francisco right now, and what time is it there?”, Claude mungkin merespons dengan:
disable_parallel_tool_use=true
ketika tipe tool_choice adalah auto
, yang memastikan bahwa Claude menggunakan paling banyak satu tooldisable_parallel_tool_use=true
ketika tipe tool_choice adalah any
atau tool
, yang memastikan bahwa Claude menggunakan tepat satu toolContoh lengkap penggunaan tool paralel
Script tes lengkap untuk tool paralel
System prompts untuk penggunaan tool paralel
Prompting pesan pengguna
disable_parallel_tool_use
. Untuk mengatasi ini, kami merekomendasikan mengaktifkan token-efficient tool use, yang membantu mendorong Claude menggunakan tool paralel. Fitur beta ini juga mengurangi latensi dan menghemat rata-rata 14% dalam token output.Jika Anda lebih memilih untuk tidak ikut serta dalam beta token-efficient tool use, Anda juga dapat memperkenalkan “batch tool” yang dapat bertindak sebagai meta-tool untuk membungkus pemanggilan ke tool lain secara bersamaan. Kami menemukan bahwa jika tool ini ada, model akan menggunakannya untuk secara bersamaan memanggil multiple tools secara paralel untuk Anda.Lihat contoh ini dalam cookbook kami untuk cara menggunakan workaround ini.stop_reason
dari tool_use
dan satu atau lebih blok konten tool_use
yang mencakup:
id
: Pengenal unik untuk blok penggunaan tool tertentu ini. Ini akan digunakan untuk mencocokkan hasil tool nanti.name
: Nama tool yang digunakan.input
: Objek yang berisi input yang diteruskan ke tool, sesuai dengan input_schema
tool.Contoh respons API dengan blok konten `tool_use`
name
, id
, dan input
dari blok tool_use
.input
tool.role
dari user
, dan blok content
yang berisi tipe tool_result
dan informasi berikut:
tool_use_id
: id
dari permintaan penggunaan tool yang ini adalah hasilnya.content
: Hasil tool, sebagai string (misalnya "content": "15 degrees"
), daftar blok konten bersarang (misalnya "content": [{"type": "text", "text": "15 degrees"}]
), atau daftar blok dokumen (misalnya "content": ["type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}]
). Blok konten ini dapat menggunakan tipe text
, image
, atau document
.is_error
(opsional): Atur ke true
jika eksekusi tool menghasilkan error.Contoh hasil tool yang berhasil
Contoh hasil tool dengan gambar
Contoh hasil tool kosong
Contoh hasil tool dengan dokumen
tool
atau function
, API Anthropic mengintegrasikan tools langsung ke dalam struktur pesan user
dan assistant
.Pesan berisi array blok text
, image
, tool_use
, dan tool_result
. Pesan user
mencakup konten client dan tool_result
, sementara pesan assistant
berisi konten yang dihasilkan AI dan tool_use
.max_tokens
max_tokens
, dan respons yang terpotong berisi blok penggunaan tool yang tidak lengkap, Anda perlu mencoba ulang permintaan dengan nilai max_tokens
yang lebih tinggi untuk mendapatkan penggunaan tool yang lengkap.
pause_turn
pause_turn
, yang menunjukkan bahwa API telah menjeda turn yang berjalan lama.
Berikut cara menangani stop reason pause_turn
:
pause_turn
:
Error eksekusi tool
content
bersama dengan "is_error": true
:Nama tool tidak valid
description
yang lebih detail dalam definisi tool Anda.Namun, Anda juga dapat melanjutkan percakapan ke depan dengan tool_result
yang menunjukkan error, dan Claude akan mencoba menggunakan tool lagi dengan informasi yang hilang diisi:Tag <search_quality_reflection>
Error server tool
is_error
untuk server tools.Untuk web search secara khusus, kode error yang mungkin meliputi:too_many_requests
: Batas rate terlampauiinvalid_input
: Parameter query pencarian tidak validmax_uses_exceeded
: Penggunaan tool web search maksimum terlampauiquery_too_long
: Query melebihi panjang maksimumunavailable
: Terjadi error internalPanggilan tool paralel tidak bekerja