Penggunaan alat ketat
Terapkan kepatuhan JSON Schema pada input alat Claude dengan grammar-constrained sampling.
Menetapkan strict: true pada definisi alat menjamin input alat Claude sesuai dengan JSON Schema Anda dengan membatasi sampling token model hanya pada output yang valid menurut skema (sebuah teknik yang disebut "grammar-constrained sampling" (sampling yang dibatasi tata bahasa)). Halaman ini membahas mengapa mode ketat penting untuk agen, cara mengaktifkannya, dan kasus penggunaan umum. Untuk subset JSON Schema yang didukung, lihat Keterbatasan JSON Schema. Untuk panduan skema non-ketat, lihat Mendefinisikan alat.
"Strict tool use" (penggunaan alat ketat) memvalidasi parameter alat, memastikan Claude memanggil fungsi Anda dengan argumen yang bertipe benar. Gunakan penggunaan alat ketat ketika Anda perlu:
- Memvalidasi parameter alat
- Membangun alur kerja agentik
- Memastikan pemanggilan fungsi yang type-safe
- Menangani alat kompleks dengan properti bersarang
Mengapa penggunaan alat ketat penting untuk agen
Membangun sistem agentik yang andal memerlukan jaminan kesesuaian skema. Tanpa mode ketat, Claude mungkin mengembalikan tipe yang tidak kompatibel ("2" alih-alih 2) atau menghilangkan field yang wajib, sehingga merusak fungsi Anda dan menyebabkan error runtime.
Penggunaan alat ketat menjamin parameter yang type-safe:
- Fungsi menerima argumen yang bertipe benar setiap saat
- Tidak perlu memvalidasi dan mencoba ulang pemanggilan alat
- Agen siap produksi yang bekerja secara konsisten dalam skala besar
Sebagai contoh, misalkan sebuah sistem pemesanan membutuhkan passengers: int. Tanpa mode ketat, Claude mungkin memberikan passengers: "two" atau passengers: "2". Dengan strict: true, respons selalu berisi passengers: 2.
Mulai cepat
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
tools=[
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"strict": True, # Enable strict mode
"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, either 'celsius' or 'fahrenheit'",
},
},
"required": ["location"],
"additionalProperties": False,
},
}
],
)
print(response.content)Format respons: Blok penggunaan alat dengan input tervalidasi di response.content[x].input
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}Jaminan:
inputalat secara ketat mengikutiinput_schemanamealat selalu valid (dari alat yang disediakan atau alat server)
Cara kerjanya
Definisikan skema alat Anda
Buat skema JSON untuk
input_schemaalat Anda. Skema ini menggunakan format JSON Schema standar dengan beberapa keterbatasan (lihat Keterbatasan JSON Schema).Tambahkan strict: true
Tetapkan
"strict": truesebagai properti tingkat atas dalam definisi alat Anda, bersamaname,description, daninput_schema.Tangani pemanggilan alat
Ketika Claude menggunakan alat tersebut, field
inputdalam bloktool_usesecara ketat mengikutiinput_schemaAnda, dannameselalu valid.
Entri toolset computer use dan browser use (computer_toolset_20260801 dan browser_toolset_20260801) tidak menerima strict: true; permintaan yang menetapkannya pada salah satu entri tersebut akan ditolak.
Kasus penggunaan umum
Pastikan parameter alat sama persis dengan skema Anda:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Search for flights to Tokyo departing June 1, 2026",
}
],
tools=[
{
"name": "search_flights",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"destination": {"type": "string"},
"departure_date": {"type": "string", "format": "date"},
"passengers": {
"type": "integer",
"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
},
},
"required": ["destination", "departure_date"],
"additionalProperties": False,
},
}
],
)
print(response)Bangun agen multilangkah yang andal dengan parameter alat yang terjamin:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Help me plan a trip from New York to Paris for 2 people, departing June 1, 2026",
}
],
tools=[
{
"name": "search_flights",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"origin": {"type": "string"},
"destination": {"type": "string"},
"departure_date": {"type": "string", "format": "date"},
"travelers": {"type": "integer", "enum": [1, 2, 3, 4, 5, 6]},
},
"required": ["origin", "destination", "departure_date"],
"additionalProperties": False,
},
},
{
"name": "search_hotels",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string"},
"check_in": {"type": "string", "format": "date"},
"guests": {"type": "integer", "enum": [1, 2, 3, 4]},
},
"required": ["city", "check_in"],
"additionalProperties": False,
},
},
],
)
print(response)Retensi data
Penggunaan alat ketat mengompilasi definisi input_schema alat menjadi grammar menggunakan pipeline yang sama dengan structured outputs. Skema alat di-cache sementara hingga 24 jam sejak penggunaan terakhir. Prompt dan respons tidak disimpan di luar respons API.
Penggunaan alat ketat memenuhi syarat HIPAA, tetapi "protected health information" (informasi kesehatan yang dilindungi), atau PHI, tidak boleh disertakan dalam definisi skema alat. API menyimpan cache skema yang telah dikompilasi secara terpisah dari konten pesan, dan skema yang di-cache ini tidak menerima perlindungan PHI yang sama seperti prompt dan respons. Jangan sertakan PHI dalam nama properti input_schema, nilai enum, nilai const, atau ekspresi reguler pattern. PHI hanya boleh muncul dalam konten pesan (prompt dan respons), di mana PHI dilindungi berdasarkan pengamanan HIPAA.
Untuk kelayakan ZDR dan HIPAA di seluruh fitur, lihat API dan retensi data.
Langkah selanjutnya
Ambil dan baca konten dari URL tertentu untuk membawa konten web langsung ke dalam konteks Claude.
Cache definisi alat di seluruh giliran untuk mengurangi biaya dan latensi.
Dapatkan respons JSON tervalidasi menggunakan grammar-constrained sampling yang sama.
Tentukan skema alat, tulis deskripsi yang efektif, dan kendalikan kapan Claude memanggil alat Anda.
Was this page helpful?