"Tool use" (penggunaan alat) memungkinkan Claude memanggil fungsi yang Anda definisikan atau yang disediakan oleh Anthropic. Claude menentukan kapan harus memanggil alat berdasarkan permintaan pengguna dan deskripsi alat tersebut. Kemudian Claude mengembalikan panggilan terstruktur yang dieksekusi oleh aplikasi Anda (alat klien) atau yang dieksekusi oleh Anthropic (alat server).
Berikut adalah contoh minimal menggunakan alat server, yaitu alat Web search, yang dieksekusi oleh Anthropic untuk Anda:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
tools=[{"type": "web_search_20260209", "name": "web_search"}],
messages=[{"role": "user", "content": "What's the latest on the Mars rover?"}],
)
print(response.content)Claude menjalankan pencarian di infrastruktur Anthropic dan mengembalikan hasil yang disertai kutipan dalam respons yang sama. Agar Claude memanggil fungsi yang Anda definisikan, kirimkan alat dengan input_schema, lalu eksekusi panggilan tersebut ketika Claude mengembalikan blok tool_use. Cara kerja penggunaan alat menunjukkan perjalanan bolak-balik tersebut dari awal hingga akhir. Pelajari lebih lanjut tentang mendefinisikan alat dan menangani panggilan alat.
Alat terutama berbeda berdasarkan di mana kode dieksekusi. Alat klien (termasuk alat yang didefinisikan pengguna dan alat dengan skema yang didefinisikan Anthropic, seperti bash dan text_editor) berjalan di aplikasi Anda. Claude merespons dengan stop_reason: "tool_use" dan satu atau lebih blok tool_use. Kode Anda mengeksekusi operasi tersebut dan mengirimkan kembali tool_result. Alat server (seperti web_search, web_fetch, code_execution, dan tool_search) berjalan di infrastruktur Anthropic: Anda melihat hasilnya secara langsung tanpa menangani eksekusi, kecuali Claude memanggil alat tersebut dalam kelompok panggilan alat paralel yang sama dengan salah satu alat klien Anda (lihat Stop reasons dan fallback).
Berikut adalah perjalanan bolak-balik lengkap untuk alat klien. Permintaan pertama mendefinisikan alat get_weather, dan Claude menjawab pertanyaan dengan memanggilnya: respons membawa blok tool_use, kode Anda menjalankan pencarian, dan permintaan kedua mengirimkan hasilnya kembali dalam blok tool_result sehingga Claude dapat membalas dengan jawabannya.
client = anthropic.Anthropic()
tools = [
{
"name": "get_weather",
"description": "Get the current weather for a given location.",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City and state, e.g. San Francisco, CA",
}
},
"required": ["location"],
},
}
]
messages = [{"role": "user", "content": "What's the weather in San Francisco?"}]
# Claude membalas dengan blok tool_use yang menyebutkan nama alat dan argumennya.
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
tools=tools,
# Minta paling banyak satu pemanggilan alat per giliran.
tool_choice={"type": "auto", "disable_parallel_tool_use": True},
messages=messages,
)
tool_use = next(block for block in response.content if block.type == "tool_use")
print(f"Claude called {tool_use.name} with {json.dumps(tool_use.input)}")
# Jalankan alatnya, lalu kirim kembali hasilnya dalam blok tool_result.
weather = "15 degrees Celsius, partly cloudy" # your weather lookup goes here
messages += [
{"role": "assistant", "content": response.content},
{
"role": "user",
"content": [
{"type": "tool_result", "tool_use_id": tool_use.id, "content": weather}
],
},
]
followup = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
tools=tools,
tool_choice={"type": "auto", "disable_parallel_tool_use": True},
messages=messages,
)
# Claude menggunakan hasil tersebut untuk menjawab pertanyaan awal.
final_text = next(block for block in followup.content if block.type == "text")
print(final_text.text)Claude called get_weather with {"location": "San Francisco, CA"}
The current weather in San Francisco is 15 degrees Celsius with partly cloudy skies.Menangani panggilan alat membahas setiap langkah secara rinci, termasuk pemformatan hasil dan pemberian sinyal kesalahan; Penggunaan alat paralel membahas respons yang memanggil beberapa alat sekaligus. Untuk melewati penulisan perjalanan bolak-balik ini sendiri, gunakan Tool Runner: SDK akan mengeksekusi alat Anda dan mengirimkan hasilnya kembali secara otomatis.
Untuk model konseptual lengkap termasuk loop agentik dan kapan harus memilih setiap pendekatan, lihat Cara kerja penggunaan alat.
Untuk terhubung ke server Model Context Protocol (MCP), lihat konektor MCP. Untuk membangun klien MCP Anda sendiri, lihat panduan Model Context Protocol tentang membangun klien MCP.
Dengan tool_choice default {"type": "auto"}, Claude menentukan pada setiap giliran apakah akan memanggil alat atau merespons secara langsung. Claude memanggil alat ketika permintaan sesuai dengan kemampuan yang dideskripsikan alat tersebut dan jawabannya belum ada dalam konteks. Claude merespons secara langsung untuk pengetahuan yang stabil, tugas kreatif, dan giliran percakapan.
Batasan ini dapat diarahkan melalui prompt sistem Anda. Jika Claude tidak memanggil alat saat Anda mengharapkannya, instruksi ringan seperti "Use the tools to investigate before responding." akan meningkatkan penggunaan alat. Bentuk yang lebih kuat seperti "Always call a tool first before responding." mendorong lebih jauh. Sebaliknya, "Use your judgment about whether to call a tool or respond directly." menjaga perilaku pemicuan tetap konservatif.
Untuk mewajibkan panggilan alat alih-alih mengandalkan prompting, atur tool_choice.
Halaman setiap alat server mendeskripsikan batasan pemicunya sendiri secara lebih rinci.
Untuk string type, versi, dan header beta, lihat Referensi alat.
Untuk alat yang Anda definisikan, Anda menulis skemanya dan aplikasi Anda mengeksekusi setiap panggilan.
Tentukan skema alat, tulis deskripsi, dan kendalikan kapan Claude memanggil alat Anda.
Parse blok tool_use, format respons tool_result, dan tangani kesalahan.
Anthropic menerbitkan skema dan melatih Claude dengannya. Aplikasi Anda tetap mengeksekusi setiap panggilan dan mengembalikan tool_result.
Simpan dan ambil informasi lintas percakapan dalam file yang Anda kendalikan.
Jalankan perintah shell dalam sesi persisten yang mempertahankan state.
Lihat dan modifikasi file teks untuk men-debug, memperbaiki, dan meningkatkan kode.
Ambil tangkapan layar dan kendalikan mouse serta keyboard di lingkungan desktop.
Alat server berjalan di infrastruktur Anthropic, tanpa kode handler di aplikasi Anda. Lihat Alat server untuk mekanisme yang mereka bagikan.
Cari informasi di web di luar batas pengetahuan, dengan sumber yang dikutip.
Ambil konten lengkap dari halaman web dan dokumen PDF yang ditentukan.
Jalankan kode Python dan bash dalam kontainer sandbox untuk menganalisis data dan menghasilkan file.
Biarkan model eksekutor yang lebih cepat berkonsultasi dengan model advisor berintelegensi lebih tinggi di tengah proses generasi.
Bekerja dengan ribuan alat dengan menemukan dan memuatnya sesuai permintaan.
Hubungkan ke server MCP jarak jauh dari Messages API tanpa klien MCP terpisah.
Permintaan "tool use" (penggunaan alat) dikenakan biaya berdasarkan:
tools)Alat sisi klien dikenakan biaya sama seperti permintaan API Claude lainnya, meskipun alat sisi server dapat menimbulkan biaya tambahan berdasarkan penggunaan spesifiknya.
Token tambahan dari penggunaan alat berasal dari:
tools dalam permintaan API (nama alat, deskripsi, dan skema)tool_use dalam permintaan dan respons APItool_result dalam permintaan APIKetika Anda menggunakan tools, API juga secara otomatis menyertakan prompt sistem khusus untuk model yang mengaktifkan penggunaan alat. Jumlah token penggunaan alat yang diperlukan untuk setiap model tercantum dalam tabel berikut (tidak termasuk token tambahan yang disebutkan sebelumnya). Perhatikan bahwa tabel ini mengasumsikan setidaknya 1 alat disediakan. Jika tidak ada tools yang disediakan, maka pilihan alat none menggunakan 0 token prompt sistem tambahan.
| Model | Pilihan alat | Jumlah token prompt sistem penggunaan alat |
|---|---|---|
| Claude Opus 5 | auto, noneany, tool | 286 token 406 token |
| Claude Opus 4.8 | auto, noneany, tool | 290 token 410 token |
| Claude Opus 4.7 | auto, noneany, tool | 675 token 804 token |
| Claude Opus 4.6 | auto, noneany, tool | 497 token 589 token |
| Claude Opus 4.5 | auto, noneany, tool | 496 token 588 token |
| Claude Opus 4.1 (dihentikan, kecuali di Bedrock dan Google Cloud) | auto, noneany, tool | 313 token 315 token |
| Claude Opus 4 (dihentikan, kecuali di Google Cloud) | auto, noneany, tool | 313 token 315 token |
| Claude Sonnet 5 | auto, noneany, tool | 354 token 474 token |
| Claude Sonnet 4.6 | auto, noneany, tool | 497 token 589 token |
| Claude Sonnet 4.5 | auto, noneany, tool | 496 token 588 token |
| Claude Sonnet 4 (dihentikan, kecuali di Bedrock dan Google Cloud) | auto, noneany, tool | 313 token 315 token |
| Claude Haiku 4.5 | auto, noneany, tool | 496 token 588 token |
| Claude Haiku 3.5 (dihentikan, kecuali di Bedrock dan Google Cloud) | auto, noneany, tool | 264 token 355 token |
Jumlah token ini ditambahkan ke token input dan output normal Anda untuk menghitung total biaya permintaan.
Lihat tabel Ikhtisar model untuk harga per model saat ini.
Ketika Anda mengirim prompt penggunaan alat, seperti permintaan API lainnya, respons menyertakan jumlah token input dan output dalam metrik usage yang dilaporkan.
Beberapa alat server menambahkan biaya berbasis penggunaan di atas token: lihat alat Web search dan alat Code execution untuk tarifnya.
Pahami loop penggunaan alat, di mana alat dieksekusi, dan kapan menggunakan alat alih-alih prosa.
Panduan langkah demi langkah dari satu panggilan alat hingga loop agentik yang siap produksi.
Direktori alat yang disediakan Anthropic dan referensi untuk properti definisi alat opsional.
Was this page helpful?