सत्यापन नियम - Entity Enricher दस्तावेज़ीकरण

सत्यापन नियम

आठ वैलिडेशन नियम स्कीमा की गुणवत्ता सुनिश्चित करते हैं। AI स्कीमा जनरेशन द्वारा अपना उत्तर तैयार कर लेने के बाद ये नियम कोड में चलते हैं — एक ऐसी पाइपलाइन के ऊपर अंतिम सुरक्षा जाल, जो पहले ही कदम-दर-कदम खुद को सुधारती रहती है।

सेल्फ-करेक्शन कैसे काम करता है

सुधार वहीं होता है जहाँ गलती होती है, अंत में नहीं। जनरेशन छोटे, एकल-उद्देश्य कॉल्स का एक क्रम है, और हर कॉल अपना अलग वैलिडेटर साथ लाती है: वह उस कॉल के उत्तर की जाँच करता है, जो सही था उसे रखता है, और सिर्फ़ उसी के लिए दोबारा पूछता है जो अब भी बाकी है। इसलिए टुकड़ों में जवाब देने वाला मॉडल शुरू से शुरू करने के बजाय क्रमशः पूरे उत्तर तक पहुँच जाता है।

करेक्शन फ़्लो

स्टेप के उत्तरएक सीमित सवाल — जैसे प्रॉपर्टीज़ के किसी बैच के फ़्लैग, या किसी एक डोमेन के विवरण
वैलिडेटर मर्ज करता हैमान्य एंट्रीज़ जमा होती जाती हैं; अनुपयोगी एंट्रीज़ अलग-अलग हटा दी जाती हैं, जिससे बैच के सही जवाब कभी नहीं जाते
अगर अधूरा होरीट्राई केवल उन पाथ के लिए पूछता है जो अब भी गायब हैं — उस स्टेप के लिए अधिकतम 3 प्रयास
फिर डिग्रेड करेंबची हुई कमियाँ नियतात्मक रूप से भरी जाती हैं और रिकॉर्ड पर दर्ज कर दी जाती हैं, इसलिए कमज़ोर मॉडल से आपको विवरण की क्वालिटी का नुक़सान होता है, स्कीमा का नहीं
असेंबलीनीचे दिए गए 8 नियम अंतिम जाँच के रूप में तैयार स्कीमा पर चलते हैं

केवल दो चरण किसी जनरेशन को सीधे विफल कर सकते हैं: एंटिटी का नाम तय करना, और प्रॉपर्टीज़ को विशेषज्ञता डोमेन तक रूट करना। बाकी सबके लिए नियतात्मक फ़ॉलबैक है, और यही छोटे मॉडलों को यहाँ उपयोगी बनाता है।

जेनरेशन बनाम एडिटिंग नियम

सभी नियम स्कीमा जनरेशन और AI एडिटिंग दोनों पर लागू नहीं होते। इनपुट डेटा से तुलना करने वाले नियम एडिटिंग के दौरान छोड़ दिए जाते हैं क्योंकि आप जानबूझकर फ़ील्ड जोड़ या हटा सकते हैं:

स्कोपलागू किए गए नियमक्यों
जेनरेशनसभी 8 नियमइनपुट डेटा तुलना के लिए उपलब्ध है
AI एडिटिंगकेवल नियम 2, 3, 4, 5कोई इनपुट डेटा नहीं; उपयोगकर्ता जानबूझकर संरचना बदल सकता है

8 नियम

नियम 1

विशेषज्ञता डोमेन गणना

स्कोप: केवल जेनरेशन

एक्सपर्टीज़ डोमेन की संख्या आपकी प्रॉपर्टी काउंट के आधार पर गणना किए गए अधिकतम से अधिक नहीं होनी चाहिए। यह AI को छोटे स्कीमा के लिए बहुत अधिक बारीक डोमेन बनाने से रोकता है।

उदाहरण एरर: Too many expertise domains: 6 defined, maximum is 3

अधिकतम की गणना floor(property_count / 6) के रूप में की जाती है, न्यूनतम 1 के साथ। 12 प्रॉपर्टीज़ वाला स्कीमा अधिकतम 2 डोमेन की अनुमति देता है।

नियम 2

कम से कम एक गुण

स्कोप: दोनों

हर स्कीमा को कम से कम एक प्रॉपर्टी परिभाषित करनी चाहिए। एक खाली स्कीमा संवर्धन के लिए उपयोग नहीं की जा सकती।

उदाहरण एरर: Schema must have at least one property

यह उन मामलों को पकड़ता है जहाँ AI एक मान्य JSON संरचना तैयार करता है लेकिन किसी भी वास्तविक फ़ील्ड को शामिल करना भूल जाता है।

नियम 3

मान्य JSON Schema प्रकार

स्कोप: दोनों

हर प्रॉपर्टी टाइप मानक JSON Schema टाइप्स में से एक होना चाहिए: string, number, integer, boolean, array, object, या null।

उदाहरण एरर: revenue: invalid type 'float'

AI कभी-कभी "float", "decimal", या "date" जैसे प्रकार गढ़ लेता है। यह नियम उन्हें पकड़ता है और किसी मान्य प्रकार में सुधार करने के लिए कहता है।

नियम 4

$ref लक्ष्य मौजूद हैं

स्कोप: दोनों

हर $ref को किसी मौजूद चीज़ की ओर इशारा करना चाहिए: #/$defs/... किसी एंटिटी परिभाषा की ओर, #/$enums/... किसी वैल्यू सेट की ओर। अधूरे रेफरेंस एनरिचमेंट पाइपलाइन को तोड़ देते हैं।

उदाहरण एरर: manufacturer: $ref '#/$defs/Company' references undefined definition

दोनों नेमस्पेस अलग हैं: एक #/$defs/ रेफरेंस किसी नेस्टेड एंटिटी से एक संबंध है, जबकि एक #/$enums/ रेफरेंस किसी टेक्स्ट प्रॉपर्टी को अनुमत मानों की एक बंद सूची तक सीमित करता है। प्रत्येक की अपने ब्लॉक में एक मेल खाती प्रविष्टि होनी चाहिए।

नियम 5

विशेषज्ञता कुंजी मौजूद है

स्कोप: दोनों

हर प्रॉपर्टी का विशेषज्ञता मान परिभाषित विशेषज्ञता डोमेन में से किसी एक से मेल खाना चाहिए। यह टाइपो और असंगतियों को रोकता है।

उदाहरण एरर: revenue: expertise 'finance' not in defined domains: ['financial_analyst']

AI परिभाषित "financial_analyst" कुंजी के बजाय "finance" का उपयोग कर सकता है। यह नियम इस बेमेल को पकड़ता है ताकि AI इसे सुधार सके।

नियम 6

विशेषज्ञता आवश्यक

स्कोप: केवल जेनरेशन

नॉन-ऑब्जेक्ट, नॉन-प्रिज़र्व्ड प्रॉपर्टीज़ के लिए एक विशेषज्ञता डोमेन असाइनमेंट आवश्यक है। इससे यह सुनिश्चित होता है कि हर एनरिच-योग्य फ़ील्ड को किसी विशेषज्ञ डोमेन द्वारा संभाला जाए।

उदाहरण एरर: revenue: expertise is required for non-object types

Object प्रकारों को छूट है क्योंकि उनकी चाइल्ड प्रॉपर्टीज़ अपनी स्वयं की expertise domain रखती हैं। संरक्षित फ़ील्ड को छूट है क्योंकि वे अपरिवर्तित रूप से पास होते हैं।

नियम 7

प्रकार इनपुट डेटा से मेल खाता है

स्कोप: केवल जेनरेशन

हर प्रॉपर्टी का स्कीमा टाइप आपके इनपुट डेटा में संबंधित वैल्यू के वास्तविक Python टाइप से मेल खाना चाहिए।

उदाहरण एरर: revenue: type mismatch - input is number but schema says 'string'

यदि आपके input में "revenue": 42.5 है, तो schema को type "number" या "integer" का उपयोग करना होगा, "string" का नहीं। Validator लचीला है: यह integers के लिए "number" स्वीकार करता है और इसके विपरीत भी।

नियम 8

सभी इनपुट प्रॉपर्टीज़ मौजूद हैं

स्कोप: केवल जेनरेशन

आपके इनपुट डेटा में हर कुंजी को जनरेट किए गए स्कीमा में एक प्रॉपर्टी के रूप में दिखना चाहिए। यह AI को चुपचाप फ़ील्ड हटाने से रोकता है।

उदाहरण एरर: Missing property from input: 'headquarters'

यदि आपके input JSON में "headquarters" key है, तो उत्पन्न schema में इसे शामिल करना होगा। यह आपके डेटा का पूर्ण कवरेज सुनिश्चित करता है।

प्रकार अनुमान

नियम 7 (टाइप मैचिंग) आपके इनपुट वैल्यू की तुलना स्कीमा में घोषित टाइप से करने के लिए ऑटोमैटिक टाइप इन्फरेंस का उपयोग करता है। फॉल्स पॉज़िटिव से बचने के लिए यह इन्फरेंस लचीला है:

इनपुट वैल्यूअनुमानित प्रकारयह भी स्वीकार करता है
true / falseboolean(केवल boolean)
42integernumber
3.14numberinteger
"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 हो जाएगा।

अगले चरण