आठ वैलिडेशन नियम स्कीमा की गुणवत्ता सुनिश्चित करते हैं। AI स्कीमा जनरेशन द्वारा अपना उत्तर तैयार कर लेने के बाद ये नियम कोड में चलते हैं — एक ऐसी पाइपलाइन के ऊपर अंतिम सुरक्षा जाल, जो पहले ही कदम-दर-कदम खुद को सुधारती रहती है।
सुधार वहीं होता है जहाँ गलती होती है, अंत में नहीं। जनरेशन छोटे, एकल-उद्देश्य कॉल्स का एक क्रम है, और हर कॉल अपना अलग वैलिडेटर साथ लाती है: वह उस कॉल के उत्तर की जाँच करता है, जो सही था उसे रखता है, और सिर्फ़ उसी के लिए दोबारा पूछता है जो अब भी बाकी है। इसलिए टुकड़ों में जवाब देने वाला मॉडल शुरू से शुरू करने के बजाय क्रमशः पूरे उत्तर तक पहुँच जाता है।
केवल दो चरण किसी जनरेशन को सीधे विफल कर सकते हैं: एंटिटी का नाम तय करना, और प्रॉपर्टीज़ को विशेषज्ञता डोमेन तक रूट करना। बाकी सबके लिए नियतात्मक फ़ॉलबैक है, और यही छोटे मॉडलों को यहाँ उपयोगी बनाता है।
सभी नियम स्कीमा जनरेशन और AI एडिटिंग दोनों पर लागू नहीं होते। इनपुट डेटा से तुलना करने वाले नियम एडिटिंग के दौरान छोड़ दिए जाते हैं क्योंकि आप जानबूझकर फ़ील्ड जोड़ या हटा सकते हैं:
| स्कोप | लागू किए गए नियम | क्यों |
|---|---|---|
| जेनरेशन | सभी 8 नियम | इनपुट डेटा तुलना के लिए उपलब्ध है |
| AI एडिटिंग | केवल नियम 2, 3, 4, 5 | कोई इनपुट डेटा नहीं; उपयोगकर्ता जानबूझकर संरचना बदल सकता है |
एक्सपर्टीज़ डोमेन की संख्या आपकी प्रॉपर्टी काउंट के आधार पर गणना किए गए अधिकतम से अधिक नहीं होनी चाहिए। यह AI को छोटे स्कीमा के लिए बहुत अधिक बारीक डोमेन बनाने से रोकता है।
Too many expertise domains: 6 defined, maximum is 3अधिकतम की गणना floor(property_count / 6) के रूप में की जाती है, न्यूनतम 1 के साथ। 12 प्रॉपर्टीज़ वाला स्कीमा अधिकतम 2 डोमेन की अनुमति देता है।
हर स्कीमा को कम से कम एक प्रॉपर्टी परिभाषित करनी चाहिए। एक खाली स्कीमा संवर्धन के लिए उपयोग नहीं की जा सकती।
Schema must have at least one propertyयह उन मामलों को पकड़ता है जहाँ AI एक मान्य JSON संरचना तैयार करता है लेकिन किसी भी वास्तविक फ़ील्ड को शामिल करना भूल जाता है।
हर प्रॉपर्टी टाइप मानक JSON Schema टाइप्स में से एक होना चाहिए: string, number, integer, boolean, array, object, या null।
revenue: invalid type 'float'AI कभी-कभी "float", "decimal", या "date" जैसे प्रकार गढ़ लेता है। यह नियम उन्हें पकड़ता है और किसी मान्य प्रकार में सुधार करने के लिए कहता है।
हर $ref को किसी मौजूद चीज़ की ओर इशारा करना चाहिए: #/$defs/... किसी एंटिटी परिभाषा की ओर, #/$enums/... किसी वैल्यू सेट की ओर। अधूरे रेफरेंस एनरिचमेंट पाइपलाइन को तोड़ देते हैं।
manufacturer: $ref '#/$defs/Company' references undefined definitionदोनों नेमस्पेस अलग हैं: एक #/$defs/ रेफरेंस किसी नेस्टेड एंटिटी से एक संबंध है, जबकि एक #/$enums/ रेफरेंस किसी टेक्स्ट प्रॉपर्टी को अनुमत मानों की एक बंद सूची तक सीमित करता है। प्रत्येक की अपने ब्लॉक में एक मेल खाती प्रविष्टि होनी चाहिए।
हर प्रॉपर्टी का विशेषज्ञता मान परिभाषित विशेषज्ञता डोमेन में से किसी एक से मेल खाना चाहिए। यह टाइपो और असंगतियों को रोकता है।
revenue: expertise 'finance' not in defined domains: ['financial_analyst']AI परिभाषित "financial_analyst" कुंजी के बजाय "finance" का उपयोग कर सकता है। यह नियम इस बेमेल को पकड़ता है ताकि AI इसे सुधार सके।
नॉन-ऑब्जेक्ट, नॉन-प्रिज़र्व्ड प्रॉपर्टीज़ के लिए एक विशेषज्ञता डोमेन असाइनमेंट आवश्यक है। इससे यह सुनिश्चित होता है कि हर एनरिच-योग्य फ़ील्ड को किसी विशेषज्ञ डोमेन द्वारा संभाला जाए।
revenue: expertise is required for non-object typesObject प्रकारों को छूट है क्योंकि उनकी चाइल्ड प्रॉपर्टीज़ अपनी स्वयं की expertise domain रखती हैं। संरक्षित फ़ील्ड को छूट है क्योंकि वे अपरिवर्तित रूप से पास होते हैं।
हर प्रॉपर्टी का स्कीमा टाइप आपके इनपुट डेटा में संबंधित वैल्यू के वास्तविक Python टाइप से मेल खाना चाहिए।
revenue: type mismatch - input is number but schema says 'string'यदि आपके input में "revenue": 42.5 है, तो schema को type "number" या "integer" का उपयोग करना होगा, "string" का नहीं। Validator लचीला है: यह integers के लिए "number" स्वीकार करता है और इसके विपरीत भी।
आपके इनपुट डेटा में हर कुंजी को जनरेट किए गए स्कीमा में एक प्रॉपर्टी के रूप में दिखना चाहिए। यह AI को चुपचाप फ़ील्ड हटाने से रोकता है।
Missing property from input: 'headquarters'यदि आपके input JSON में "headquarters" key है, तो उत्पन्न schema में इसे शामिल करना होगा। यह आपके डेटा का पूर्ण कवरेज सुनिश्चित करता है।
नियम 7 (टाइप मैचिंग) आपके इनपुट वैल्यू की तुलना स्कीमा में घोषित टाइप से करने के लिए ऑटोमैटिक टाइप इन्फरेंस का उपयोग करता है। फॉल्स पॉज़िटिव से बचने के लिए यह इन्फरेंस लचीला है:
| इनपुट वैल्यू | अनुमानित प्रकार | यह भी स्वीकार करता है |
|---|---|---|
| true / false | boolean | (केवल boolean) |
| 42 | integer | number |
| 3.14 | number | integer |
| "hello" | string | (केवल स्ट्रिंग) |
| [1, 2, 3] | array | (केवल array) |
| {"key": "val"} | object | (केवल object) |
ध्यान दें: booleans की जाँच integers से पहले की जाती है क्योंकि कुछ भाषाओं में boolean, integer का एक सबटाइप होता है। यह क्रम true को integer के रूप में मान लिए जाने से रोकता है।
यह टेबल बताती है कि validator क्या स्वीकार करता है, न कि जनरेशन क्या बनाता है। सैंपल में 3 मान होने से प्रॉपर्टी integer नहीं बन जाती: numeric फ़ील्ड number के रूप में ही जाते हैं, जब तक कोई समर्पित स्टेप यह पुष्टि न कर दे कि मात्रा सचमुच असतत है और कोई देखा गया मान इसके विरुद्ध न हो। सैंपल में एक पूर्णांक इस बात का प्रमाण नहीं है कि आधे मान असंभव हैं — और गलती से integer घोषित कर देने पर consumer डेटाबेस में 6.2 कटकर 6 हो जाएगा।