टूल उपयोग / फ़ंक्शन कॉलिंग
टूल उपयोग Claude को आपके द्वारा परिभाषित फ़ंक्शन कॉल करने देता है — खोज, एक कैलकुलेटर, आपका डेटाबेस, कोई भी API — और परिणामों का उपयोग करने देता है। यह हर एजेंट की नींव है।
- चार-चरणीय एजेंटिक लूप कैसे काम करता है, टूल परिभाषाओं से लेकर अंतिम जवाब तक
- Python में किसी टूल को नाम, विवरण और JSON-स्कीमा इनपुट के साथ कैसे परिभाषित करें
- टूल विवरण प्रॉम्प्ट की तरह क्यों काम करते हैं जो आकार देते हैं कि Claude उन्हें कब और कैसे कॉल करता है
- इनपुट को कैसे सत्यापित करें, त्रुटियों को परिणाम के रूप में कैसे लौटाएँ, और सर्वर-साइड टूल का सुरक्षित रूप से उपयोग कैसे करें
लूप
टूल उपयोग एक बातचीत है, एकल कॉल नहीं। आप Claude को टूल का एक मेन्यू सौंपते हैं; Claude एक चुनता है और रुक जाता है; आप उसे चलाते हैं और वापस रिपोर्ट करते हैं; Claude परिणाम को अपने जवाब में समाहित कर लेता है — आवश्यकतानुसार इसे दोहराते हुए।
- आप टूल परिभाषाओं की एक सूची शामिल करते हैं — प्रत्येक में एक नाम, एक विवरण, और एक JSON-स्कीमा इनपुट होता है।
- यदि Claude किसी एक का उपयोग करने का निर्णय लेता है, तो यह तर्कों के साथ एक tool_use ब्लॉक लौटाता है और रुक जाता है।
- आप स्वयं टूल चलाते हैं और आउटपुट को एक tool_result के रूप में वापस भेजते हैं।
- Claude जारी रखता है, संभवतः और टूल कॉल करते हुए, जब तक यह जवाब न दे दे।
एक टूल परिभाषित करना (Python)
एक टूल परिभाषा बस एक नाम, एक सादा-भाषा विवरण, और इनपुट के लिए एक JSON-स्कीमा है। इसे tools में पास करें, फिर यह जानने के लिए stop_reason जाँचें कि Claude कब कार्य करना चाहता है।
get_weather टूल + पहली कॉल
tools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
msg = client.messages.create(
model="claude-sonnet-5", max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Rome?"}],
)
# If msg.stop_reason == "tool_use": run the tool, then send a tool_result back.टिप्स
आप टूल को कैसे परिभाषित और संभालते हैं, इसमें किए गए छोटे चुनाव विश्वसनीयता में बड़ा अंतर पैदा करते हैं।
- विवरण प्रॉम्प्ट होते हैं। एक स्पष्ट टूल
descriptionऔर पैरामीटर दस्तावेज़ इस बात को बहुत बेहतर बनाते हैं कि Claude इसे कब/कैसे कॉल करता है। - निष्पादित करने से पहले प्राप्त किए गए इनपुट को सत्यापित करें — कभी उन पर आँख मूँदकर भरोसा न करें।
- त्रुटियों को परिणाम के रूप में लौटाएँ। यदि कोई टूल विफल होता है, तो त्रुटि का वर्णन करता एक
tool_resultभेजें ताकि Claude उबर सके। - सर्वर-साइड टूल। Anthropic बिल्ट-इन टूल भी प्रदान करता है (उदा. वेब सर्च, कोड एक्ज़ीक्यूशन, कंप्यूटर उपयोग) — मौजूदा मेन्यू के लिए दस्तावेज़ जाँचें।
:::warning टूल = क्रियाएँ = जोखिम एक टूल जो वास्तविक क्रियाएँ करता है, एक सुरक्षा मॉडल विरासत में पाता है। न्यूनतम विशेषाधिकार लागू करें और जोखिमपूर्ण कॉल्स के लिए एक मानव को लूप में रखें — देखें एजेंट और टूल सुरक्षित करना। :::
स्वयं को परखें
0/3- टूल उपयोग एक लूप है: टूल परिभाषाएँ भेजें, Claude एक tool_use ब्लॉक लौटाता है और रुक जाता है, आप निष्पादित करते हैं और एक tool_result लौटाते हैं, Claude तब तक जारी रखता है जब तक यह जवाब न दे दे।
- एक टूल परिभाषा एक नाम, एक विवरण, और एक JSON-स्कीमा इनपुट है — इसे tools में पास करें और stop_reason == tool_use जाँचें।
- विवरण प्रॉम्प्ट होते हैं; निष्पादित करने से पहले इनपुट सत्यापित करें; विफलताओं को tool_result त्रुटियों के रूप में लौटाएँ ताकि Claude उबर सके।
- Anthropic सर्वर-साइड टूल भी प्रदान करता है, और कोई भी टूल जो वास्तविक क्रियाएँ करता है उसे न्यूनतम विशेषाधिकार के साथ-साथ एक मानव को लूप में रखने की आवश्यकता होती है।