आठ वैलिडेशन नियम schema गुणवत्ता सुनिश्चित करते हैं। AI schema generation के दौरान जब कोई नियम विफल होता है, तो त्रुटि को स्वचालित स्व-सुधार के लिए AI को वापस भेजा जाता है।
AI द्वारा स्कीमा जनरेट करने के बाद, यह सभी 8 वैलिडेशन नियमों से गुजरता है। यदि कोई नियम विफल होता है, तो विशिष्ट त्रुटि संदेश संकलित किए जाते हैं और फ़ीडबैक के रूप में AI को वापस भेजे जाते हैं। फिर AI एक संशोधित स्कीमा तैयार करता है, जिसे फिर से वैलिडेट किया जाता है। यह लूप कुल 6 प्रयासों तक जारी रहता है (1 प्रारंभिक + 5 पुनः प्रयास)।
व्यवहार में, अधिकांश schemas पहले प्रयास में ही पास हो जाते हैं। स्व-सुधार लूप एक सुरक्षा जाल है जो उन किनारे के मामलों को संभालता है जहाँ AI type त्रुटियाँ करता है या किसी field को भूल जाता है।
सभी नियम स्कीमा जनरेशन और 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 सेक्शन में परिभाषित एंटिटीज़ की ओर इंगित करना चाहिए। डैंगलिंग रेफरेंस संवर्धन पाइपलाइन को तोड़ देते हैं।
manufacturer: $ref '#/$defs/Company' references undefined definitionजब AI #/$defs/Company जैसा कोई रेफ़रेंस बनाता है, तो $defs ब्लॉक में एक मेल खाती Company परिभाषा होनी चाहिए।
हर प्रॉपर्टी का विशेषज्ञता मान परिभाषित विशेषज्ञता डोमेन में से किसी एक से मेल खाना चाहिए। यह टाइपो और असंगतियों को रोकता है।
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 के रूप में मान लिए जाने से रोकता है।