# Tool Use और Structured Output — Large Language Models

Source: https://www.geekswithgeeks.com/hi/llms/u-tools

> मॉडल को functions बुलाने दें और मशीन-पठनीय परिणाम लौटाने दें।

## मॉडल माँगता है, आपका कोड करता है

**Tool use (function calling)** में आप functions वर्णित करते हैं (नाम, उद्देश्य, arguments का JSON schema)। मॉडल किसी को बुलाने का अनुरोध लौटा सकता है, आपका कोड उसे **चलाता** है और परिणाम लौटाता है, और मॉडल उस जानकारी के साथ आगे बढ़ता है। LLMs इसी तरह search करते, databases query करते या ईमेल भेजते हैं; ऐसे चरणों की शृंखलाएँ **agents** बनाती हैं। भरोसेमंद parsing के लिए **structured output** (schema से मेल खाता JSON) माँगें और कोड में validate करें। Tool arguments को अविश्वसनीय इनपुट मानें: अनुमतियाँ जाँचें, हर tool की क्षमता सीमित करें, और जोखिम भरी कार्रवाइयों के लिए मानव पुष्टि माँगें।

## Tool परिभाषा और validation

Schema मॉडल को बताता है कि कौन-से arguments स्वीकार्य हैं; कार्रवाई से पहले आपका कोड फिर भी validate करे। उदाहरण; यहाँ चलाया नहीं गया।

```python
tool = {
    "name": "get_order_status",
    "description": "Look up the status of an order by id",
    "input_schema": {
        "type": "object",
        "properties": {"order_id": {"type": "string", "pattern": "^[0-9]{6}$"}},
        "required": ["order_id"],
    },
}

def run_tool(args):
    oid = args.get("order_id", "")
    if not (len(oid) == 6 and oid.isdigit()):
        return {"error": "invalid order_id"}
    return {"order_id": oid, "status": "shipped"}   # real code: query your system
```

## हर tool call log करें

Arguments, परिणाम और किसने ट्रिगर किया दर्ज करें। Logs से debugging और सुरक्षा समीक्षा संभव होती है; पहले व्यक्तिगत डेटा हटाएँ।

**Quiz:** Tool call वास्तव में कौन चलाता है?

- [ ] सिर्फ़ user का browser
- [ ] मॉडल ख़ुद
- [ ] Tokenizer
- [x] आपका application कोड

*Answer:* आपका application कोड. मॉडल सिर्फ़ call प्रस्तावित करता है; चलाना है या नहीं और कैसे, यह आपका कोड तय करता है।
