# Tools से Structured Output — AI Agents और Tool Use

Source: https://www.geekswithgeeks.com/hi/ai-agents-mcp/use-structured-output

> गद्य parse करने की जगह निश्चित आकार का JSON पाने के लिए tool call को अनिवार्य करें।

## ऐसा tool जिसे आप कभी चलाते नहीं

साफ़ JSON चाहिए, जैसे निकाला गया invoice? ऐसा tool परिभाषित करें जिसका input schema आपका वांछित आकार हो (`record_invoice` जिसमें vendor, तारीख़ और कुल के fields हों) और उसे `tool_choice` से अनिवार्य करें। Model arguments भरता है, जो parse हुए object के रूप में आते हैं। आप असल में कुछ चलाते नहीं; arguments ही नतीजा हैं। फिर भी मान जाँचें, क्योंकि schema आकार नियंत्रित करता है, सच्चाई नहीं।

## Extraction tool को अनिवार्य करना

`INVOICE_TOOL` पहले के उदाहरणों जैसा schema है। संरचित डेटा `block.input` में है।

```python
reply = client.messages.create(
    model=MODEL, max_tokens=512,
    tools=[INVOICE_TOOL],
    tool_choice={"type": "tool", "name": "record_invoice"},
    messages=[{"role": "user", "content": invoice_text}],
)
block = next(b for b in reply.content if b.type == "tool_use")
data = block.input        # {"vendor": ..., "date": ..., "total": ...}
```

## Extraction schemas छोटे रखें

चालीस fields वाला schema ग़लतियों को न्योता देता है। हर call में कुछ अच्छे नाम वाले fields निकालें, अनिश्चित को वैकल्पिक रखें, और मान गढ़ने की जगह model को null लौटाने दें।

**Quiz:** क्या schema निकाले गए मानों के सही होने की गारंटी देता है?

- [ ] हाँ, हमेशा
- [ ] सिर्फ़ संख्याओं के लिए
- [x] नहीं, वह आकार तय करता है, इसलिए मान फिर भी जाँचें
- [ ] सिर्फ़ हिंदी में

*Answer:* नहीं, वह आकार तय करता है, इसलिए मान फिर भी जाँचें. सही आकार का object फिर भी ग़लत तारीख़ या कुल रख सकता है।
