Berikut adalah contoh cara menyediakan tools kepada Claude menggunakan Messages API:
Cara kerja penggunaan tool
Claude mendukung dua jenis tools:-
Client tools: Tools yang dieksekusi pada sistem Anda, yang meliputi:
- Tools kustom yang ditentukan pengguna yang Anda buat dan implementasikan
- Tools yang ditentukan Anthropic seperti computer use dan text editor yang memerlukan implementasi klien
- Server tools: Tools yang dieksekusi pada server Anthropic, seperti tools web search dan web fetch. Tools ini harus ditentukan dalam permintaan API tetapi tidak memerlukan implementasi dari pihak Anda.
Tools yang ditentukan Anthropic menggunakan jenis berversi (misalnya,
web_search_20250305, text_editor_20250124) untuk memastikan kompatibilitas di seluruh versi model.Client tools
Integrasikan client tools dengan Claude dalam langkah-langkah berikut:1
Berikan Claude tools dan prompt pengguna
- Tentukan client tools dengan nama, deskripsi, dan skema input dalam permintaan API Anda.
- Sertakan prompt pengguna yang mungkin memerlukan tools ini, misalnya, “Bagaimana cuaca di San Francisco?”
2
Claude memutuskan untuk menggunakan tool
- Claude menilai apakah ada tools yang dapat membantu dengan kueri pengguna.
- Jika ya, Claude membuat permintaan penggunaan tool yang diformat dengan benar.
- Untuk client tools, respons API memiliki
stop_reasonberupatool_use, menandakan niat Claude.
3
Eksekusi tool dan kembalikan hasil
- Ekstrak nama tool dan input dari permintaan Claude
- Eksekusi kode tool pada sistem Anda
- Kembalikan hasil dalam pesan
userbaru yang berisi blok kontentool_result
4
Claude menggunakan hasil tool untuk merumuskan respons
- Claude menganalisis hasil tool untuk menyusun respons akhirnya terhadap prompt pengguna asli.
Server tools
Server tools mengikuti alur kerja yang berbeda:1
Berikan Claude tools dan prompt pengguna
- Server tools, seperti web search dan web fetch, memiliki parameter mereka sendiri.
- Sertakan prompt pengguna yang mungkin memerlukan tools ini, misalnya, “Cari berita terbaru tentang AI” atau “Analisis konten di URL ini.”
2
Claude mengeksekusi server tool
- Claude menilai apakah server tool dapat membantu dengan kueri pengguna.
- Jika ya, Claude mengeksekusi tool, dan hasilnya secara otomatis dimasukkan ke dalam respons Claude.
3
Claude menggunakan hasil server tool untuk merumuskan respons
- Claude menganalisis hasil server tool untuk menyusun respons akhirnya terhadap prompt pengguna asli.
- Tidak diperlukan interaksi pengguna tambahan untuk eksekusi server tool.
Contoh penggunaan tool
Berikut adalah beberapa contoh kode yang mendemonstrasikan berbagai pola dan teknik penggunaan tool. Untuk singkatnya, tools yang digunakan adalah tools sederhana, dan deskripsi tool lebih pendek dari yang ideal untuk memastikan performa terbaik.Contoh tool tunggal
Contoh tool tunggal
JSON
get_weather dengan input yang disediakan, dan mengembalikan hasil dalam pesan user baru:JSON
Penggunaan tool paralel
Penggunaan tool paralel
Claude dapat memanggil beberapa tools secara paralel dalam satu respons, yang berguna untuk tugas yang memerlukan beberapa operasi independen. Saat menggunakan tools paralel, semua blok Untuk contoh komprehensif, skrip tes, dan praktik terbaik untuk mengimplementasikan panggilan tool paralel, lihat bagian penggunaan tool paralel dalam panduan implementasi kami.
tool_use disertakan dalam satu pesan asisten, dan semua blok tool_result yang sesuai harus disediakan dalam pesan pengguna berikutnya.Penting: Hasil tool harus diformat dengan benar untuk menghindari kesalahan API dan memastikan Claude terus menggunakan tools paralel. Lihat panduan implementasi kami untuk persyaratan format yang detail dan contoh kode lengkap.
Contoh beberapa tool
Contoh beberapa tool
Anda dapat menyediakan Claude dengan beberapa tools untuk dipilih dalam satu permintaan. Berikut adalah contoh dengan tool Dalam kasus ini, Claude mungkin:
get_weather dan get_time, bersama dengan kueri pengguna yang meminta keduanya.- Menggunakan tools secara berurutan (satu per satu) — memanggil
get_weatherterlebih dahulu, kemudianget_timesetelah menerima hasil cuaca - Menggunakan panggilan tool paralel — mengeluarkan beberapa blok
tool_usedalam satu respons ketika operasinya independen
user, dengan setiap hasil dalam blok tool_result sendiri.Informasi yang hilang
Informasi yang hilang
Jika prompt pengguna tidak menyertakan informasi yang cukup untuk mengisi semua parameter yang diperlukan untuk tool, Claude Opus jauh lebih mungkin mengenali bahwa parameter hilang dan memintanya. Claude Sonnet mungkin bertanya, terutama ketika diminta untuk berpikir sebelum mengeluarkan permintaan tool. Tetapi mungkin juga melakukan yang terbaik untuk menyimpulkan nilai yang masuk akal.Misalnya, menggunakan tool Perilaku ini tidak dijamin, terutama untuk prompt yang lebih ambigu dan untuk model yang kurang cerdas. Jika Claude Opus tidak memiliki konteks yang cukup untuk mengisi parameter yang diperlukan, ia jauh lebih mungkin merespons dengan pertanyaan klarifikasi daripada melakukan panggilan tool.
get_weather di atas, jika Anda bertanya kepada Claude “Bagaimana cuacanya?” tanpa menentukan lokasi, Claude, khususnya Claude Sonnet, mungkin membuat tebakan tentang input tools:JSON
Tools berurutan
Tools berurutan
Beberapa tugas mungkin memerlukan pemanggilan beberapa tools secara berurutan, menggunakan output dari satu tool sebagai input untuk tool lain. Dalam kasus seperti itu, Claude akan memanggil satu tool pada satu waktu. Jika diminta untuk memanggil semua tools sekaligus, Claude kemungkinan akan menebak parameter untuk tools yang lebih hilir jika mereka bergantung pada hasil tool untuk tools yang lebih hulu.Berikut adalah contoh menggunakan tool Dalam kasus ini, Claude akan terlebih dahulu memanggil tool
Contoh ini mendemonstrasikan bagaimana Claude dapat merangkai beberapa panggilan tool untuk menjawab pertanyaan yang memerlukan pengumpulan data dari sumber yang berbeda. Langkah-langkah kuncinya adalah:
get_location untuk mendapatkan lokasi pengguna, kemudian meneruskan lokasi tersebut ke tool get_weather:get_location untuk mendapatkan lokasi pengguna. Setelah Anda mengembalikan lokasi dalam tool_result, Claude kemudian akan memanggil get_weather dengan lokasi tersebut untuk mendapatkan jawaban akhir.Percakapan lengkap mungkin terlihat seperti:| Peran | Konten |
|---|---|
| Pengguna | Bagaimana cuaca di tempat saya? |
| Asisten | Saya akan mencari lokasi Anda saat ini terlebih dahulu, kemudian memeriksa cuaca di sana. [Penggunaan tool untuk get_location] |
| Pengguna | [Hasil tool untuk get_location dengan id yang cocok dan hasil San Francisco, CA] |
| Asisten | [Penggunaan tool untuk get_weather dengan input berikut]{ “location”: “San Francisco, CA”, “unit”: “fahrenheit” } |
| Pengguna | [Hasil tool untuk get_weather dengan id yang cocok dan hasil “59°F (15°C), sebagian besar berawan”] |
| Asisten | Berdasarkan lokasi Anda saat ini di San Francisco, CA, cuaca sekarang adalah 59°F (15°C) dan sebagian besar berawan. Ini adalah hari yang cukup sejuk dan mendung di kota. Anda mungkin ingin membawa jaket ringan jika akan keluar. |
- Claude pertama menyadari bahwa ia memerlukan lokasi pengguna untuk menjawab pertanyaan cuaca, jadi ia memanggil tool
get_location. - Pengguna (yaitu kode klien) mengeksekusi fungsi
get_locationyang sebenarnya dan mengembalikan hasil “San Francisco, CA” dalam bloktool_result. - Dengan lokasi sekarang diketahui, Claude melanjutkan untuk memanggil tool
get_weather, meneruskan “San Francisco, CA” sebagai parameterlocation(serta parameterunityang ditebak, karenaunitbukan parameter yang diperlukan). - Pengguna lagi mengeksekusi fungsi
get_weatheryang sebenarnya dengan argumen yang disediakan dan mengembalikan data cuaca dalam bloktool_resultlain. - Akhirnya, Claude menggabungkan data cuaca ke dalam respons bahasa alami untuk pertanyaan asli.
Penggunaan tool chain of thought
Penggunaan tool chain of thought
Secara default, Claude Opus diminta untuk berpikir sebelum menjawab kueri penggunaan tool untuk menentukan dengan baik apakah tool diperlukan, tool mana yang akan digunakan, dan parameter yang sesuai. Claude Sonnet dan Claude Haiku diminta untuk mencoba menggunakan tools sebanyak mungkin dan lebih mungkin memanggil tool yang tidak perlu atau menyimpulkan parameter yang hilang. Untuk meminta Sonnet atau Haiku untuk menilai kueri pengguna dengan lebih baik sebelum melakukan panggilan tool, prompt berikut dapat digunakan:Prompt chain of thought
Jawab permintaan pengguna menggunakan tools yang relevan (jika tersedia). Sebelum memanggil tool, lakukan beberapa analisis. Pertama, pikirkan tentang tool mana dari tools yang disediakan yang relevan untuk menjawab permintaan pengguna. Kedua, periksa setiap parameter yang diperlukan dari tool yang relevan dan tentukan apakah pengguna telah memberikan secara langsung atau memberikan informasi yang cukup untuk menyimpulkan nilai. Ketika memutuskan apakah parameter dapat disimpulkan, pertimbangkan dengan hati-hati semua konteks untuk melihat apakah mendukung nilai tertentu. Jika semua parameter yang diperlukan ada atau dapat disimpulkan secara wajar, lanjutkan dengan panggilan tool. TETAPI, jika salah satu nilai untuk parameter yang diperlukan hilang, JANGAN panggil fungsi (bahkan tidak dengan pengisi untuk parameter yang hilang) dan sebaliknya, minta pengguna untuk memberikan parameter yang hilang. JANGAN meminta informasi lebih lanjut tentang parameter opsional jika tidak disediakan. Mode JSON
Mode JSON
Anda dapat menggunakan tools untuk membuat Claude menghasilkan output JSON yang mengikuti skema, bahkan jika Anda tidak berniat menjalankan output tersebut melalui tool atau fungsi.Saat menggunakan tools dengan cara ini:
- Anda biasanya ingin menyediakan tool tunggal
- Anda harus mengatur
tool_choice(lihat Memaksa penggunaan tool) untuk menginstruksikan model untuk secara eksplisit menggunakan tool tersebut - Ingat bahwa model akan meneruskan
inputke tool, jadi nama tool dan deskripsi harus dari perspektif model.
record_summary untuk mendeskripsikan gambar mengikuti format tertentu.Harga
Tool use requests are priced based on:- The total number of input tokens sent to the model (including in the
toolsparameter) - The number of output tokens generated
- For server-side tools, additional usage-based pricing (e.g., web search charges per search performed)
- The
toolsparameter in API requests (tool names, descriptions, and schemas) tool_usecontent blocks in API requests and responsestool_resultcontent blocks in API requests
tools, we also automatically include a special system prompt for the model which enables tool use. The number of tool use tokens required for each model are listed below (excluding the additional tokens listed above). Note that the table assumes at least 1 tool is provided. If no tools are provided, then a tool choice of none uses 0 additional system prompt tokens.
| Model | Tool choice | Tool use system prompt token count |
|---|---|---|
| Claude Opus 4.1 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Opus 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 3.7 (deprecated) | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 3.5 | auto, noneany, tool | 264 tokens 340 tokens |
| Claude Opus 3 (deprecated) | auto, noneany, tool | 530 tokens 281 tokens |
| Claude Sonnet 3 | auto, noneany, tool | 159 tokens 235 tokens |
| Claude Haiku 3 | auto, noneany, tool | 264 tokens 340 tokens |
usage yang dilaporkan.
Langkah Selanjutnya
Jelajahi repositori contoh kode penggunaan tool siap implementasi kami dalam cookbook kami:Calculator Tool
Pelajari cara mengintegrasikan tool kalkulator sederhana dengan Claude untuk komputasi numerik yang presisi.
Customer Service Agent
Bangun bot layanan pelanggan yang responsif yang memanfaatkan client tools untuk
meningkatkan dukungan.
JSON Extractor
Lihat bagaimana Claude dan penggunaan tool dapat mengekstrak data terstruktur dari teks tidak terstruktur.