# ऐसे Tools डिज़ाइन करना जिन्हें Agents अच्छी तरह उपयोग करें — LangGraph Agents और Multi-Agent Systems

Source: https://www.geekswithgeeks.com/hi/langgraph-agents/a-tooldesign

> स्पष्ट नाम, संकरे दायरे और सुरक्षित व्यवहार वाले 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 से कैसे उबरें। उदाहरण; यहाँ चलाया नहीं गया।

```python
# 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 क्रैश होने की जगह।

**Quiz:** Agent के लिए कौन-सा tool डिज़ाइन बेहतर है?

- [ ] सब कुछ करने वाला एक विशाल tool
- [x] स्पष्ट विवरण और उबरने-योग्य errors वाला एक संकरा, अच्छे नाम का tool
- [ ] बिना विवरण के tools
- [ ] कच्चे database dump लौटाने वाले tools

*Answer:* स्पष्ट विवरण और उबरने-योग्य errors वाला एक संकरा, अच्छे नाम का tool. मॉडल tools को अच्छी तरह उपयोग करने के लिए नामों, विवरणों और error संदेशों पर निर्भर है।
