पाठ 8 / 25

Tools से 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 में है।

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 लौटाने दें।

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

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

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