Claude Platform Docs
  • Messages
  • Managed Agents
  • Admin

Search...
⌘K
Langkah pertama
Pengenalan ClaudeMulai cepat
Membangun dengan Claude
Ikhtisar fiturMenggunakan Messages APIAlasan berhenti dan fallbackPenolakan dan fallbackKredit fallback
Kemampuan model
Pemikiran diperpanjangPemikiran adaptifUpayaAnggaran tugas (beta)Mode cepat (pratinjau riset)Output terstrukturSitasiStreaming MessagesPemrosesan batchHasil pencarianStreaming penolakanDukungan multibahasaEmbeddings
Alat
IkhtisarCara kerja penggunaan alatTutorial: Membangun agen pengguna alatMendefinisikan alatMenangani panggilan alatPenggunaan alat paralelTool Runner (SDK)Penggunaan alat ketatAlat serverAlat pencarian webAlat pengambilan webAlat eksekusi kodeAlat penasihatAlat pencarian alatAlat memoriAlat BashAlat editor teksAlat penggunaan komputerPemecahan masalah
Infrastruktur alat
Referensi alatMengelola konteks alatKombinasi alatPenggunaan alat dengan caching promptPemanggilan alat terprogramStreaming alat terperinci
Manajemen konteks
Jendela konteksPemadatanPengeditan konteksCaching promptPesan sistem di tengah percakapanMembangun mode orkestrasiDiagnostik cache (beta)Penghitungan token
Bekerja dengan file
Files APIDukungan PDF
Skills
IkhtisarMulai cepatPraktik terbaikSkills untuk enterpriseSkills di API
MCP
Server MCP jarak jauhKonektor MCP
Claude di platform cloud
Amazon BedrockAmazon Bedrock (lama)Claude Platform di AWSGoogle CloudMicrosoft Foundry

Log in
Mendefinisikan alat
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Messages/Alat

Mendefinisikan alat

Tentukan skema alat, tulis deskripsi yang efektif, dan kendalikan kapan Claude memanggil alat Anda.

Memilih model

Gunakan model Claude Opus (4.8) terbaru untuk alat yang kompleks dan kueri yang ambigu; model ini menangani beberapa alat dengan lebih baik dan meminta klarifikasi saat diperlukan.

Gunakan model Claude Haiku untuk alat yang sederhana, tetapi perhatikan bahwa model ini mungkin menyimpulkan parameter yang hilang.



Jika menggunakan Claude dengan penggunaan alat dan pemikiran diperpanjang, lihat panduan pemikiran diperpanjang untuk informasi lebih lanjut.

Menentukan alat klien

Alat klien (baik skema Anthropic maupun yang didefinisikan pengguna) ditentukan dalam parameter tingkat atas tools dari permintaan API. Setiap definisi alat mencakup:

ParameterDeskripsi
nameNama alat. Harus cocok dengan regex ^[a-zA-Z0-9_-]{1,64}$.
descriptionDeskripsi teks biasa yang terperinci tentang apa yang dilakukan alat, kapan harus digunakan, dan bagaimana perilakunya.
input_schemaObjek JSON Schema yang mendefinisikan parameter yang diharapkan untuk alat tersebut.
input_examples(Opsional) Array objek input contoh untuk membantu Claude memahami cara menggunakan alat. Lihat Menyediakan contoh penggunaan alat.

Untuk kumpulan lengkap properti opsional yang tersedia pada definisi alat apa pun, termasuk cache_control, strict, defer_loading, dan allowed_callers, lihat Referensi alat.

Prompt sistem penggunaan alat

Saat Anda memanggil API Claude dengan parameter tools, API membangun prompt sistem khusus dari definisi alat, konfigurasi alat, dan prompt sistem apa pun yang ditentukan pengguna. Prompt yang dibangun dirancang untuk menginstruksikan model agar menggunakan alat yang ditentukan dan menyediakan konteks yang diperlukan agar alat dapat beroperasi dengan benar:

In this environment you have access to a set of tools you can use to answer the user's question.
{{ FORMATTING INSTRUCTIONS }}
String and scalar parameters should be specified as is, while lists and objects should use JSON format. Note that spaces for string values are not stripped. The output is not expected to be valid XML and is parsed with regular expressions.
Here are the functions available in JSONSchema format:
{{ TOOL DEFINITIONS IN JSON SCHEMA }}
{{ USER SYSTEM PROMPT }}
{{ TOOL CONFIGURATION }}

Praktik terbaik untuk definisi alat

Untuk mendapatkan performa terbaik dari Claude saat menggunakan alat, ikuti panduan berikut:

  • Berikan deskripsi yang sangat terperinci. Ini adalah faktor terpenting dalam performa alat. Deskripsi Anda harus menjelaskan setiap detail tentang alat, termasuk:
    • Apa yang dilakukan alat
    • Kapan harus digunakan (dan kapan tidak)
    • Apa arti setiap parameter dan bagaimana pengaruhnya terhadap perilaku alat
    • Peringatan atau batasan penting apa pun, seperti informasi apa yang tidak dikembalikan alat jika nama alat tidak jelas. Semakin banyak konteks yang dapat Anda berikan kepada Claude tentang alat Anda, semakin baik Claude dalam memutuskan kapan dan bagaimana menggunakannya. Usahakan setidaknya 3-4 kalimat per deskripsi alat, lebih banyak jika alatnya kompleks.
  • Prioritaskan deskripsi, tetapi pertimbangkan menggunakan input_examples untuk alat yang kompleks. Deskripsi yang jelas adalah yang paling penting, tetapi untuk alat dengan input kompleks, objek bersarang, atau parameter yang sensitif terhadap format, Anda dapat menggunakan field input_examples untuk menyediakan contoh yang divalidasi skema. Lihat Menyediakan contoh penggunaan alat untuk detailnya.
  • Konsolidasikan operasi terkait ke dalam lebih sedikit alat. Daripada membuat alat terpisah untuk setiap tindakan (create_pr, review_pr, merge_pr), kelompokkan ke dalam satu alat dengan parameter action. Alat yang lebih sedikit namun lebih mumpuni mengurangi ambiguitas pemilihan dan membuat kumpulan alat Anda lebih mudah dinavigasi oleh Claude.
  • Gunakan namespacing yang bermakna dalam nama alat. Ketika alat Anda mencakup beberapa layanan atau sumber daya, beri prefiks nama dengan layanan (misalnya, github_list_prs, slack_send_message). Ini membuat pemilihan alat tidak ambigu seiring bertambahnya pustaka Anda, dan sangat penting saat menggunakan pencarian alat.
  • Rancang respons alat agar hanya mengembalikan informasi bernilai tinggi. Kembalikan pengidentifikasi yang semantik dan stabil (misalnya, slug atau UUID) daripada referensi internal yang tidak jelas, dan sertakan hanya field yang dibutuhkan Claude untuk bernalar tentang langkah berikutnya. Respons yang membengkak membuang-buang konteks dan mempersulit Claude untuk mengekstrak apa yang penting.

Deskripsi yang baik dengan jelas menjelaskan apa yang dilakukan alat, kapan menggunakannya, data apa yang dikembalikan, dan apa arti parameter ticker. Deskripsi yang buruk terlalu singkat dan menyisakan banyak pertanyaan terbuka bagi Claude tentang perilaku dan penggunaan alat.



Untuk panduan lebih mendalam tentang desain alat (konsolidasi, penamaan, dan pembentukan respons), lihat Writing tools for agents.

Menyediakan contoh penggunaan alat

Anda dapat menyediakan contoh konkret dari input alat yang valid untuk membantu Claude memahami cara menggunakan alat Anda dengan lebih efektif. Ini sangat berguna untuk alat kompleks dengan objek bersarang, parameter opsional, atau input yang sensitif terhadap format.

Penggunaan dasar

Tambahkan field opsional input_examples ke definisi alat Anda dengan array objek input contoh. Setiap contoh harus valid sesuai dengan input_schema alat:

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    tools=[
        {
            "name": "get_weather",
            "description": "Get the current weather in a given location",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA",
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "The unit of temperature",
                    },
                },
                "required": ["location"],
            },
            "input_examples": [
                {"location": "San Francisco, CA", "unit": "fahrenheit"},
                {"location": "Tokyo, Japan", "unit": "celsius"},
                {
                    "location": "New York, NY"  # 'unit' is optional
                },
            ],
        }
    ],
    messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
)

print(response)

Contoh disertakan dalam prompt bersama dengan skema alat Anda, menunjukkan kepada Claude pola konkret untuk panggilan alat yang terbentuk dengan baik. Ini membantu Claude memahami kapan harus menyertakan parameter opsional, format apa yang digunakan, dan bagaimana menyusun input yang kompleks.

Persyaratan dan batasan

  • Validasi skema - Setiap contoh harus valid sesuai dengan input_schema alat. Contoh yang tidak valid mengembalikan error 400
  • Tidak didukung untuk alat sisi server - Contoh input berfungsi pada alat klien yang didefinisikan pengguna dan skema Anthropic, tetapi tidak pada alat server seperti pencarian web atau eksekusi kode
  • Biaya token - Contoh menambah token prompt: ~20-50 token untuk contoh sederhana, ~100-200 token untuk objek bersarang yang kompleks

Mengontrol output Claude

Memaksa penggunaan alat

Dalam beberapa kasus, Anda mungkin ingin Claude menggunakan alat tertentu untuk menjawab pertanyaan pengguna, bahkan jika Claude sebenarnya akan menjawab langsung tanpa memanggil alat. Anda dapat melakukan ini dengan menentukan alat di field tool_choice dari permintaan. Baris yang disorot adalah satu-satunya perbedaan dari permintaan penggunaan alat standar:

import anthropic

client = anthropic.Anthropic()

tools = [
    {
        "name": "get_weather",
        "description": "Get the current weather in a given location",
        "input_schema": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The city and state, e.g. San Francisco, CA",
                }
            },
            "required": ["location"],
        },
    }
]

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    tools=tools,
    tool_choice={"type": "tool", "name": "get_weather"},
    messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
)

print(response)

Saat bekerja dengan parameter tool_choice, ada empat opsi yang memungkinkan:

  • auto memungkinkan Claude memutuskan apakah akan memanggil alat yang disediakan atau tidak. Ini adalah nilai default ketika tools disediakan.
  • any memberi tahu Claude bahwa ia harus menggunakan salah satu alat yang disediakan, tetapi tidak memaksa alat tertentu.
  • tool memaksa Claude untuk selalu menggunakan alat tertentu.
  • none mencegah Claude menggunakan alat apa pun. Ini adalah nilai default ketika tidak ada tools yang disediakan.


Saat menggunakan caching prompt, perubahan pada parameter tool_choice akan membatalkan blok pesan yang di-cache. Definisi alat dan prompt sistem tetap di-cache, tetapi konten pesan harus diproses ulang.

Diagram ini mengilustrasikan cara kerja setiap opsi:

Diagram yang menunjukkan empat opsi tool_choice: auto, any, tool, dan none

Perhatikan bahwa ketika Anda mengatur tool_choice sebagai any atau tool, API melakukan prefill pada pesan asisten untuk memaksa alat digunakan. Ini berarti bahwa model tidak akan mengeluarkan respons atau penjelasan bahasa alami sebelum blok konten tool_use, bahkan jika secara eksplisit diminta untuk melakukannya.



Saat menggunakan pemikiran diperpanjang dengan penggunaan alat, 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 pemikiran diperpanjang.



Claude Mythos Preview tidak mendukung penggunaan alat yang dipaksa. Permintaan dengan tool_choice: {"type": "any"} atau tool_choice: {"type": "tool", "name": "..."} mengembalikan error 400 pada model ini. Gunakan tool_choice: {"type": "auto"} (default) atau tool_choice: {"type": "none"} dan andalkan prompting untuk memengaruhi pemilihan alat.

Pengujian telah menunjukkan bahwa ini seharusnya tidak mengurangi performa. Jika Anda ingin model memberikan konteks atau penjelasan bahasa alami sambil tetap meminta model menggunakan alat tertentu, Anda dapat menggunakan {"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.



Panggilan alat yang dijamin dengan alat strict

Kombinasikan tool_choice: {"type": "any"} dengan penggunaan alat strict untuk menjamin bahwa salah satu alat Anda akan dipanggil DAN bahwa input alat secara ketat mengikuti skema Anda. Atur strict: true pada definisi alat Anda untuk mengaktifkan validasi skema.

Respons model dengan alat

Saat menggunakan alat, Claude sering kali akan mengomentari apa yang sedang dilakukannya atau merespons secara alami kepada pengguna sebelum memanggil alat.

Misalnya, diberikan prompt "What's the weather like in San Francisco right now, and what time is it there?", Claude mungkin merespons dengan:

JSON
{
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "I'll help you check the current weather and time in San Francisco."
    },
    {
      "type": "tool_use",
      "id": "toolu_01A09q90qw90lq917835lq9",
      "name": "get_weather",
      "input": { "location": "San Francisco, CA" }
    }
  ]
}

Gaya respons alami ini membantu pengguna memahami apa yang sedang dilakukan Claude dan menciptakan interaksi yang lebih percakapan. Anda dapat memandu gaya dan konten respons ini melalui prompt sistem Anda dan dengan menyediakan <examples> dalam prompt Anda.

Penting untuk dicatat bahwa Claude mungkin menggunakan berbagai frasa dan pendekatan saat menjelaskan tindakannya. Kode Anda harus memperlakukan respons ini seperti teks lain yang dihasilkan asisten, dan tidak bergantung pada konvensi pemformatan tertentu.

Langkah selanjutnya

Menangani panggilan alat

Parse blok tool_use dan format respons tool_result.

Tool Runner (SDK)

Biarkan SDK menangani loop agentik secara otomatis.

Referensi alat

Direktori alat yang disediakan Anthropic dan properti opsional.

Was this page helpful?

  • Memilih model
  • Menentukan alat klien
  • Prompt sistem penggunaan alat
  • Praktik terbaik untuk definisi alat
  • Menyediakan contoh penggunaan alat
  • Penggunaan dasar
  • Persyaratan dan batasan
  • Mengontrol output Claude
  • Memaksa penggunaan alat
  • Respons model dengan alat
  • Langkah selanjutnya