टूल परिभाषित करें
टूल फ़ील्ड
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 का जवाब इसकी जगह टूल त्रुटि की तरह दिया जाता है।
अनुमोदन ज़रूरी करें
किसी टूल का अनुमोदन flagtrue सेट करें, या उसे एक function दें जो हर कॉल के लिए तय करे। एजेंट-स्तर का अनुमोदन function, जिन भाषाओं में है, हर टूल पर लागू होता है और दोनों को override करता है। नियंत्रित कॉल रन को waiting_for_human स्टेटस के साथ रोक देती है; स्टेट और अनुमोदन में कॉल ID से उसे अनुमोदित या अस्वीकार करें।
कॉल किसी व्यक्ति या दूसरे सिस्टम को सौंपें
मैन्युअल टूल का कोई executor नहीं होता: काम आपका ऐप्लिकेशन, कोई queue या कोई दूसरी सेवा करती है। इंटरैक्टिव टूल एक hook चलाता है जो किसी व्यक्ति के लिए रुक सकता है। दोनों रन को तब तक रोके रखते हैं जब तक आप कॉल ID के लिए टूल आउटपुट के साथ उसे जारी न रखें; स्टेट और अनुमोदन देखें।
अगर इंटरैक्टिव hook इसकी जगह कोई मान लौटाता है, तो वह तुरंत टूल नतीजा बन जाता है। जारी रखने के बाद, आउटपुट validator की जाँच से पहले
onResponseReceived (या उस भाषा का समकक्ष) दिए गए आउटपुट की जाँच कर सकता है या उसे रूपांतरित कर सकता है।
Rust के external टूल में कोई executor नहीं होता:
प्रगति बताएँ और संदर्भ अपडेट करें
कोई टूल काम करते समय प्रारंभिक नतीजे प्रकाशित कर सकता है और बाद के टर्न के लिए ऐप्लिकेशन संदर्भ बदल सकता है। प्रगतिtool.preliminary_result इवेंट के रूप में दिखती है (स्ट्रीमिंग देखें), और अगर आपने event validator सेट किया है तो उसके सामने जाँची जाती है।
टूल त्रुटियों से उबरें
डिफ़ॉल्ट रूप से टूल की त्रुटि रन को विफल करती है और फिर से फेंकी जाती है। त्रुटि को टूल के नतीजे ({"error": "..."}) के रूप में वापस भेजने के लिए टूल की त्रुटि नीति return-to-model सेट करें, ताकि मॉडल कुछ और आज़मा सके। असुरक्षित या न सुधारी जा सकने वाली विफलताओं के लिए डिफ़ॉल्ट रखें।
TypeScript में,
toolExecution.maxOutputChars यह सीमित करता है कि मॉडल टूल के आउटपुट का कितना हिस्सा देखे; लंबे आउटपुट की शुरुआत और अंत रखे जाते हैं और बीच में एक सूचना होती है।