पाठ 8 / 27
Structured Output और उत्तरों का Validation
मशीन-पठनीय आउटपुट पाएँ और कोड में जाँचें।
माँगें, फिर जाँचें
जब कोड उत्तर उपयोग करे, सटीक keys और अनुमत मानों वाला JSON माँगें, उदाहरण दें, और जो वापस आए उसे validate करें। दोनों providers ऐसी सुविधाएँ देते हैं जो वैध आउटपुट की संभावना बहुत बढ़ाती हैं: schema के साथ tool/function calling, और समर्थित मॉडलों पर structured output / JSON-schema modes। तब भी types, सीमाएँ और अनुमत मान जाँचें, और विफलताएँ सँभालें: मॉडल कभी-कभी JSON को पाठ या code fences में लपेटते हैं, max_tokens पर कट जाते हैं, या आपकी सूची के बाहर मान चुनते हैं। JSON ऑब्जेक्ट निकालें, json.loads से parse करें, अपने नियमों से validate करें, और error संदेश के साथ retry करें या सुरक्षित रूप से fallback करें। सख़्त जाँच के बिना मॉडल आउटपुट को eval, shell या SQL में कभी न दें।
JSON निकालना और validate करना, चलाकर
मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। साफ़ JSON पास होता है; पाठ और code fence के भीतर का JSON निकलकर पास होता है; अनुमत समूह के बाहर की category अस्वीकृत है; JSON रहित उत्तर रिपोर्ट होता है। ये strings मॉडल उत्तरों की जगह हैं।
import json
def parse_json_reply(text):
"""Models sometimes wrap JSON in prose or code fences; extract and validate it."""
start, end = text.find("{"), text.rfind("}")
if start == -1 or end == -1:
return None, "no JSON object found"
try:
data = json.loads(text[start:end + 1])
except json.JSONDecodeError as e:
return None, f"invalid JSON: {e.msg}"
if data.get("category") not in {"billing", "technical", "other"}:
return None, "category not allowed"
return data, None
for reply in ['{"category": "billing"}',
'Sure! Here you go:\n```json\n{"category": "technical"}\n```',
'{"category": "refunds"}',
'I cannot help with that.']:
print(parse_json_reply(reply))
Output:
({'category': 'billing'}, None)
({'category': 'technical'}, None)
(None, 'category not allowed')
(None, 'no JSON object found')सटीक JSON का एक उदाहरण दिखाएँ
Prompt में एक उदाहरण आउटपुट अक्सर लंबे विवरण से अधिक भरोसे से key नाम और formatting ठीक करता है।
त्वरित जाँच: Structured-output सुविधा होने पर भी JSON validate क्यों करें?
- मॉडलों पर भरोसा मना है
- JSON parse नहीं हो सकता
- मान फिर भी ग़लत या आपके व्यावसायिक नियमों से बाहर हो सकते हैं, और विफलताएँ होती हैं
- यह उत्तर छोटे करता है
Answer
मान फिर भी ग़लत या आपके व्यावसायिक नियमों से बाहर हो सकते हैं, और विफलताएँ होती हैं — Schema वैधता आपके नियमों के लिए शुद्धता के बराबर नहीं।