Was this page helpful?
Tool search tool memungkinkan Claude bekerja dengan ratusan atau ribuan alat dengan cara menemukan dan memuatnya secara dinamis sesuai kebutuhan. Alih-alih memuat semua definisi alat ke dalam jendela konteks di awal, Claude mencari katalog alat Anda (termasuk nama alat, deskripsi, nama argumen, dan deskripsi argumen) dan hanya memuat alat yang diperlukan.
Pendekatan ini memecahkan dua masalah yang berkembang pesat seiring bertambahnya skala pustaka alat:
Untuk latar belakang tentang tantangan penskalaan yang dipecahkan oleh tool search, lihat Advanced tool use. Pemuatan sesuai permintaan dari tool search juga merupakan contoh dari prinsip pengambilan just-in-time yang lebih luas yang dijelaskan dalam Effective context engineering.
Meskipun ini disediakan sebagai alat sisi server, Anda juga dapat mengimplementasikan fungsionalitas tool search sisi klien Anda sendiri. Lihat Implementasi tool search kustom untuk detailnya.
Bagikan umpan balik tentang fitur ini melalui formulir umpan balik.
This feature qualifies for Zero Data Retention (ZDR) with limited technical retention. See the Data retention section for details on what is retained and why.
Di Amazon Bedrock, tool search sisi server hanya tersedia melalui invoke API, bukan converse API.
Anda juga dapat mengimplementasikan tool search sisi klien dengan mengembalikan blok tool_reference dari implementasi pencarian Anda sendiri.
Ada dua varian tool search:
tool_search_tool_regex_20251119): Claude membuat pola regex untuk mencari alattool_search_tool_bm25_20251119): Claude menggunakan kueri bahasa alami untuk mencari alatSaat Anda mengaktifkan tool search tool:
tool_search_tool_regex_20251119 atau tool_search_tool_bm25_20251119) dalam daftar alat Andadefer_loading: true untuk alat yang tidak boleh dimuat segeratool_reference yang paling relevanIni menjaga jendela konteks Anda tetap efisien sambil mempertahankan akurasi pemilihan alat yang tinggi.
Berikut adalah contoh sederhana dengan alat yang ditangguhkan:
Tool search tool memiliki dua varian:
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex"
}{
"type": "tool_search_tool_bm25_20251119",
"name": "tool_search_tool_bm25"
}Format kueri varian Regex: Python regex, BUKAN bahasa alami
Saat menggunakan tool_search_tool_regex_20251119, Claude membuat pola regex menggunakan sintaks re.search() Python, bukan kueri bahasa alami. Pola umum:
"weather" - mencocokkan nama/deskripsi alat yang mengandung "weather""get_.*_data" - mencocokkan alat seperti get_user_data, get_weather_data"database.*query|query.*database" - pola OR untuk fleksibilitas"(?i)slack" - pencarian tidak peka huruf besar/kecilPanjang kueri maksimum: 200 karakter
Format kueri varian BM25: Bahasa alami
Saat menggunakan tool_search_tool_bm25_20251119, Claude menggunakan kueri bahasa alami untuk mencari alat.
Tandai alat untuk pemuatan sesuai permintaan dengan menambahkan defer_loading: true:
{
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {
"location": { "type": "string" },
"unit": { "type": "string", "enum": ["celsius", "fahrenheit"] }
},
"required": ["location"]
},
"defer_loading": true
}Poin-poin penting:
defer_loading dimuat ke dalam konteks segeradefer_loading: true hanya dimuat ketika Claude menemukannya melalui pencariandefer_loading: trueKedua varian tool search (regex dan bm25) mencari nama alat, deskripsi, nama argumen, dan deskripsi argumen.
Cara kerja penangguhan secara internal: Alat yang ditangguhkan tidak disertakan dalam prefiks system-prompt. Ketika model menemukan alat yang ditangguhkan melalui tool search, definisi alat ditambahkan secara inline sebagai blok tool_reference dalam percakapan. Prefiks tidak tersentuh, sehingga prompt caching tetap terjaga. Tata bahasa untuk mode ketat dibangun dari keseluruhan toolset, sehingga defer_loading dan mode ketat dapat dikombinasikan tanpa kompilasi ulang tata bahasa.
Ketika Claude menggunakan tool search tool, respons menyertakan tipe blok baru:
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "I'll search for tools to help with the weather information."
},
{
"type": "server_tool_use",
"id": "srvtoolu_01ABC123",
"name": "tool_search_tool_regex",
"input": {
"query": "weather"
}
},
{
"type": "tool_search_tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_search_result",
"tool_references": [{ "type": "tool_reference", "tool_name": "get_weather" }]
}
},
{
"type": "text",
"text": "I found a weather tool. Let me get the weather for San Francisco."
},
{
"type": "tool_use",
"id": "toolu_01XYZ789",
"name": "get_weather",
"input": { "location": "San Francisco", "unit": "fahrenheit" }
}
],
"stop_reason": "tool_use"
}server_tool_use: Menunjukkan bahwa Claude sedang memanggil tool search tooltool_search_tool_result: Berisi hasil pencarian dengan objek tool_search_tool_search_result yang bersarangtool_references: Array objek tool_reference yang menunjuk ke alat yang ditemukantool_use: Claude memanggil alat yang ditemukanBlok tool_reference secara otomatis diperluas menjadi definisi alat lengkap sebelum ditampilkan ke Claude. Anda tidak perlu menangani perluasan ini sendiri. Ini terjadi secara otomatis di API selama Anda menyediakan semua definisi alat yang cocok dalam parameter tools.
Untuk mengonfigurasi mcp_toolset dengan defer_loading, lihat MCP connector.
Anda dapat mengimplementasikan logika tool search Anda sendiri (misalnya, menggunakan embeddings atau pencarian semantik) dengan mengembalikan blok tool_reference dari alat kustom. Ketika Claude memanggil alat pencarian kustom Anda, kembalikan tool_result standar dengan blok tool_reference dalam array konten:
{
"type": "tool_result",
"tool_use_id": "toolu_your_tool_id",
"content": [{ "type": "tool_reference", "tool_name": "discovered_tool_name" }]
}Setiap alat yang direferensikan harus memiliki definisi alat yang sesuai dalam parameter tools tingkat atas dengan defer_loading: true. Pendekatan ini memungkinkan Anda menggunakan algoritma pencarian yang lebih canggih sambil mempertahankan kompatibilitas dengan sistem tool search.
Format tool_search_tool_result yang ditampilkan di bagian Format respons adalah format sisi server yang digunakan secara internal oleh tool search bawaan Anthropic. Untuk implementasi sisi klien kustom, selalu gunakan format tool_result standar dengan blok konten tool_reference seperti yang ditunjukkan di atas.
Untuk contoh lengkap menggunakan embeddings, lihat tool search with embeddings cookbook.
Tool search tool tidak kompatibel dengan contoh penggunaan alat. Jika Anda perlu memberikan contoh penggunaan alat, gunakan pemanggilan alat standar tanpa tool search.
Kesalahan ini mencegah permintaan diproses:
Semua alat ditangguhkan:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "All tools have defer_loading set. At least one tool must be non-deferred."
}
}Definisi alat tidak ditemukan:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Tool reference 'unknown_tool' has no corresponding tool definition"
}
}Kesalahan selama eksekusi alat mengembalikan respons 200 dengan informasi kesalahan di dalam body:
{
"type": "tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_result_error",
"error_code": "invalid_pattern"
}
}Kode kesalahan:
too_many_requests: Batas laju terlampaui untuk operasi tool searchinvalid_pattern: Pola regex tidak validpattern_too_long: Pola melebihi batas 200 karakterunavailable: Layanan tool search sementara tidak tersediaUntuk cara defer_loading mempertahankan prompt caching, lihat Tool use with prompt caching.
Sistem secara otomatis memperluas blok tool_reference di seluruh riwayat percakapan, sehingga Claude dapat menggunakan kembali alat yang ditemukan pada giliran berikutnya tanpa perlu mencari ulang.
Dengan streaming diaktifkan, Anda akan menerima event tool search sebagai bagian dari stream:
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "tool_search_tool_regex"}}
// Search query streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"query\":\"weather\"}"}}
// Pause while search executes
// Search results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "tool_search_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"type": "tool_search_tool_search_result", "tool_references": [{"type": "tool_reference", "tool_name": "get_weather"}]}}}
// Claude continues with discovered toolsAnda dapat menyertakan tool search tool dalam Messages Batches API. Operasi tool search melalui Messages Batches API dihargai sama dengan yang ada dalam permintaan Messages API biasa.
Tool search sisi server (alat tool_search) mengindeks dan menyimpan data katalog alat (nama alat, deskripsi, dan metadata argumen) di luar respons API langsung; data katalog ini disimpan sesuai dengan kebijakan retensi standar Anthropic. Implementasi tool search sisi klien kustom yang menggunakan Messages API standar sepenuhnya memenuhi syarat ZDR.
Untuk kelayakan ZDR di semua fitur, lihat API and data retention.
Kasus penggunaan yang baik:
Kapan pemanggilan alat tradisional mungkin lebih baik:
github_, slack_) sehingga kueri pencarian secara alami menampilkan grup alat yang tepatPenggunaan tool search tool dilacak dalam objek penggunaan respons:
{
"usage": {
"input_tokens": 1024,
"output_tokens": 256,
"server_tool_use": {
"tool_search_requests": 2
}
}
}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-opus-4-6",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "What is the weather in San Francisco?"
}
],
"tools": [
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex"
},
{
"name": "get_weather",
"description": "Get the weather at a specific location",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string"},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
},
"defer_loading": true
},
{
"name": "search_files",
"description": "Search through files in the workspace",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"file_types": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["query"]
},
"defer_loading": true
}
]
}'Panduan langkah demi langkah untuk mendefinisikan alat.