पाठ 12 / 29
ऐसे Tools डिज़ाइन करना जिन्हें Agents अच्छी तरह उपयोग करें
स्पष्ट नाम, संकरे दायरे और सुरक्षित व्यवहार वाले tools लिखें।
Tools मॉडल के लिए interface हैं
मॉडल tools को उनके नाम, विवरण और argument schemas से चुनता है, इसलिए यही आपका prompt हैं। अच्छे tools संकरे (एक स्पष्ट काम), अच्छे नाम वाले (get_order_status, do_stuff नहीं), प्रलेखित (कब उपयोग करें, हर argument का अर्थ, एक उदाहरण), संक्षिप्त, संरचित परिणाम लौटाने वाले (मेगाबाइट पाठ नहीं), और ऐसे कार्रवाई-योग्य error संदेश देने वाले होते हैं जिनसे मॉडल उबर सके ("order_id 6 अंकों का होना चाहिए")। कई ओवरलैपिंग tools की जगह कुछ अच्छे tools चुनें। सभी arguments कोड में validate करें, प्रति user अनुमतियाँ लागू करें, लिखने वाली कार्रवाइयाँ जहाँ संभव idempotent बनाएँ, और मॉडल आउटपुट से बने मनमाने कोड या SQL को कड़ी जाँच के बिना कभी न चलने दें।
कमज़ोर बनाम मज़बूत tool परिभाषाएँ
दूसरा संस्करण मॉडल को बताता है कि tool कब उपयोग करें और errors से कैसे उबरें। उदाहरण; यहाँ चलाया नहीं गया।
# weak
@tool
def lookup(x):
"""Look something up."""
...
# strong
@tool
def get_order_status(order_id: str) -> dict:
"""Return the status of ONE customer order.
Use when the user asks where an order is. order_id is exactly 6 digits, e.g. "481516".
Returns {"status": "...", "eta": "..."} or {"error": "..."}."""
if not (order_id.isdigit() and len(order_id) == 6):
return {"error": "order_id must be exactly 6 digits"} # recoverable message
...Errors को डेटा के रूप में लौटाएँ
Tool परिणाम में स्पष्ट error संदेश मॉडल को अगले चरण में ख़ुद सुधरने देता है, run क्रैश होने की जगह।
त्वरित जाँच: Agent के लिए कौन-सा tool डिज़ाइन बेहतर है?
- सब कुछ करने वाला एक विशाल tool
- स्पष्ट विवरण और उबरने-योग्य errors वाला एक संकरा, अच्छे नाम का tool
- बिना विवरण के tools
- कच्चे database dump लौटाने वाले tools
Answer
स्पष्ट विवरण और उबरने-योग्य errors वाला एक संकरा, अच्छे नाम का tool — मॉडल tools को अच्छी तरह उपयोग करने के लिए नामों, विवरणों और error संदेशों पर निर्भर है।