मुख्य सामग्री पर जाएं
जब किसी एजेंट को ऐप्लिकेशन डेटा पढ़ना हो, किसी आंतरिक सेवा को कॉल करना हो, या कोई कार्रवाई करनी हो, तब एक टूल परिभाषित करें। मॉडल टूल को उसके ID से कॉल करता है; SDK arguments की जाँच करता है, आपका कोड आपके प्रोसेस में चलाता है, और नतीजा अगले टर्न पर वापस भेजता है।

टूल परिभाषित करें

टूल फ़ील्ड

Schemas हर भाषा का अपना validator लेते हैं: TypeScript में एक function या parse() या safeParse() वाला object; Python में एक callable, एक Pydantic मॉडल, या parse या safe_parse वाला object; बाकी जगह एक function या callable जो मान लौटाता है या exception फेंकता है।

Timeout क्या करता है

ऐसे टूल ID की कॉल जो मौजूदा टूल सूची में नहीं है, रन को विफल कर देती है (Go में unknown tool, C#, PHP, Ruby और Java में Unknown tool '<name>', Rust में AgentError के रूप में Unknown tool: <name>)। return-to-model के साथ TypeScript में, अज्ञात टूल या न पढ़े जा सकने वाले arguments का जवाब इसकी जगह टूल त्रुटि की तरह दिया जाता है।

अनुमोदन ज़रूरी करें

किसी टूल का अनुमोदन flag true सेट करें, या उसे एक function दें जो हर कॉल के लिए तय करे। एजेंट-स्तर का अनुमोदन function, जिन भाषाओं में है, हर टूल पर लागू होता है और दोनों को override करता है। नियंत्रित कॉल रन को waiting_for_human स्टेटस के साथ रोक देती है; स्टेट और अनुमोदन में कॉल ID से उसे अनुमोदित या अस्वीकार करें।

कॉल किसी व्यक्ति या दूसरे सिस्टम को सौंपें

मैन्युअल टूल का कोई executor नहीं होता: काम आपका ऐप्लिकेशन, कोई queue या कोई दूसरी सेवा करती है। इंटरैक्टिव टूल एक hook चलाता है जो किसी व्यक्ति के लिए रुक सकता है। दोनों रन को तब तक रोके रखते हैं जब तक आप कॉल ID के लिए टूल आउटपुट के साथ उसे जारी न रखें; स्टेट और अनुमोदन देखें। अगर इंटरैक्टिव hook इसकी जगह कोई मान लौटाता है, तो वह तुरंत टूल नतीजा बन जाता है। जारी रखने के बाद, आउटपुट validator की जाँच से पहले onResponseReceived (या उस भाषा का समकक्ष) दिए गए आउटपुट की जाँच कर सकता है या उसे रूपांतरित कर सकता है। Rust के external टूल में कोई executor नहीं होता:
अगर एक मॉडल टर्न में स्वचालित और लंबित टूल दोनों हों, तो रनटाइम pause लौटाने से पहले स्वचालित टूल चलाता है।

प्रगति बताएँ और संदर्भ अपडेट करें

कोई टूल काम करते समय प्रारंभिक नतीजे प्रकाशित कर सकता है और बाद के टर्न के लिए ऐप्लिकेशन संदर्भ बदल सकता है। प्रगति tool.preliminary_result इवेंट के रूप में दिखती है (स्ट्रीमिंग देखें), और अगर आपने event validator सेट किया है तो उसके सामने जाँची जाती है।

टूल त्रुटियों से उबरें

डिफ़ॉल्ट रूप से टूल की त्रुटि रन को विफल करती है और फिर से फेंकी जाती है। त्रुटि को टूल के नतीजे ({"error": "..."}) के रूप में वापस भेजने के लिए टूल की त्रुटि नीति return-to-model सेट करें, ताकि मॉडल कुछ और आज़मा सके। असुरक्षित या न सुधारी जा सकने वाली विफलताओं के लिए डिफ़ॉल्ट रखें। TypeScript में, toolExecution.maxOutputChars यह सीमित करता है कि मॉडल टूल के आउटपुट का कितना हिस्सा देखे; लंबे आउटपुट की शुरुआत और अंत रखे जाते हैं और बीच में एक सूचना होती है।

टूल समवर्ती रूप से चलाएँ

जब एक मॉडल टर्न कई स्वतंत्र टूल कॉल करता है, तो उन्हें एक साथ चलाने के लिए concurrency सीमा सेट करें। जब तक आप ऐसा नहीं करते, Go, C#, Ruby और Java टूल एक-एक करके चलाते हैं। नतीजे उसी क्रम में जोड़े जाते हैं जिसमें मॉडल ने कॉल कीं, चाहे वे किसी भी क्रम में पूरी हों। Go और C# में, अगर कई समवर्ती टूल संदर्भ सेट करते हैं, तो कॉल क्रम में आख़िरी वाला मान्य होता है।
अंतिम संशोधन 5 नवंबर 2026