Menetapkan strict: true pada definisi alat menjamin input alat Claude sesuai dengan JSON Schema Anda dengan membatasi pengambilan sampel token model hanya pada output yang valid menurut skema (teknik yang disebut "grammar-constrained sampling" (pengambilan sampel yang dibatasi tata bahasa)). Halaman ini membahas mengapa mode strict penting untuk agen, cara mengaktifkannya, dan kasus penggunaan umum. Untuk subset JSON Schema yang didukung, lihat Batasan JSON Schema. Untuk panduan skema non-strict, lihat Mendefinisikan alat.
Penggunaan alat strict memvalidasi parameter alat, memastikan Claude memanggil fungsi Anda dengan argumen yang bertipe benar. Gunakan penggunaan alat strict ketika Anda perlu:
Membangun sistem agentik yang andal memerlukan jaminan kesesuaian skema. Tanpa mode strict, 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 strict menjamin parameter yang type-safe:
Misalnya, anggaplah sistem pemesanan membutuhkan passengers: int. Tanpa mode strict, Claude mungkin memberikan passengers: "two" atau passengers: "2". Dengan strict: true, respons selalu berisi passengers: 2.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
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 tool use dengan input yang tervalidasi di response.content[x].input
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}Jaminan:
input alat secara ketat mengikuti input_schemaname alat selalu valid (dari alat yang disediakan atau alat server)Definisikan skema alat Anda
Buat skema JSON untuk input_schema alat Anda. Skema ini menggunakan format JSON Schema standar dengan beberapa batasan (lihat Batasan JSON Schema).
Tambahkan strict: true
Tetapkan "strict": true sebagai properti tingkat atas dalam definisi alat Anda, bersama dengan name, description, dan input_schema.
Tangani pemanggilan alat
Ketika Claude menggunakan alat tersebut, field input dalam blok tool_use secara ketat mengikuti input_schema Anda, dan name selalu valid.
Penggunaan alat strict mengompilasi definisi input_schema alat menjadi tata bahasa menggunakan pipeline yang sama dengan structured outputs. Skema alat disimpan sementara dalam cache hingga 24 jam sejak penggunaan terakhir. Prompt dan respons tidak disimpan setelah respons API dikembalikan.
Penggunaan alat strict memenuhi syarat HIPAA, tetapi PHI tidak boleh disertakan dalam definisi skema alat. API menyimpan skema yang telah dikompilasi dalam cache 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 di bawah pengamanan HIPAA.
Untuk kelayakan ZDR dan HIPAA di seluruh fitur, lihat API dan retensi data.
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 yang 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?