قواعد التحقق - وثائق Entity Enricher

قواعد التحقق

ثماني قواعد تحقق تضمن جودة المخطط. وتُنفَّذ برمجيًا بمجرد أن يُجمّع توليد المخططات بالذكاء الاصطناعي إجابته — شبكة أمان أخيرة فوق مسار يصحح نفسه خطوة بخطوة أصلًا.

كيف يعمل التصحيح الذاتي

يجري التصحيح عند موضع وقوع الخطأ لا في النهاية. فالتوليد سلسلة من الاستدعاءات الصغيرة أحادية الغرض، ويحمل كل استدعاء مُحقِّقه الخاص: يفحص إجابة ذلك الاستدعاء، ويحتفظ بكل ما كان صحيحًا، ثم يعيد السؤال عمّا لا يزال ناقصًا فقط. وهكذا يتقارب النموذج الذي يجيب على شكل أجزاء بدلًا من أن يبدأ من جديد.

مسار التصحيح

إجابات الخطوةسؤال ضيّق واحد — مثل الأعلام الخاصة بدفعة من الخصائص، أو أوصاف مجال واحد
عمليات الدمج التي يجريها المدقّقتُجمَّع المدخلات الصالحة؛ وتُسقَط غير الصالحة فرادى، دون أن تُفقد الدفعة إجاباتها الجيدة
إذا كان غير مكتملتطلب إعادة المحاولة المسارات الناقصة فقط — بحد أقصى 3 محاولات لتلك الخطوة
ثم التدرّج نزولًاتُملأ الفجوات المتبقية بطريقة حتمية ويُدوَّن ذلك على السجل، فالنموذج الضعيف يكلّفك جودة الوصف لا المخطط
التجميعتُطبَّق القواعد الثماني أدناه على المخطط المكتمل باعتبارها الفحص الأخير

خطوتان فقط يمكن أن تُفشلا عملية التوليد كليًا: تسمية الكيان، وتوجيه الخصائص إلى مجالات الخبرة. ولكل ما عداهما بديل احتياطي حتمي، وهو ما يجعل النماذج الصغيرة صالحة للاستخدام هنا.

قواعد التوليد مقابل التحرير

لا تنطبق جميع القواعد على كل من توليد المخطط والتحرير بالذكاء الاصطناعي. تُتخطّى القواعد التي تقارن ببيانات الإدخال أثناء التحرير لأنك قد تضيف حقولًا أو تزيلها عمدًا:

النطاقالقواعد المطبَّقةلماذا
التوليدجميع القواعد الثمانيبيانات المُدخل متاحة للمقارنة
التحرير بالذكاء الاصطناعيالقواعد 2 و3 و4 و5 فقطلا توجد بيانات إدخال؛ قد يعدّل المستخدم البنية عمداً

القواعد الثماني

القاعدة 1

عدد مجالات الخبرة

النطاق: التوليد فقط

يجب ألّا يتجاوز عدد مجالات الخبرة الحدّ الأقصى المحسوب بناءً على عدد خصائصك. يمنع هذا الذكاء الاصطناعي من إنشاء عدد كبير من المجالات الدقيقة للمخطّطات الصغيرة.

مثال على خطأ: Too many expertise domains: 6 defined, maximum is 3

يُحسب الحدّ الأقصى بالصيغة floor(property_count / 6)، بحدّ أدنى قدره 1. يسمح المخطّط الذي يحتوي على 12 خاصية بما يصل إلى مجالين.

القاعدة 2

خاصية واحدة على الأقل

النطاق: كلاهما

يجب أن يُعرّف كل مخطط خاصية واحدة على الأقل. ولا يمكن استخدام مخطط فارغ للإثراء.

مثال على خطأ: Schema must have at least one property

يلتقط هذا الحالات التي يُنتج فيها الذكاء الاصطناعي بنية JSON صالحة لكنه ينسى تضمين أي حقول فعلية.

القاعدة 3

أنواع مخطط JSON الصالحة

النطاق: كلاهما

يجب أن يكون نوع كل خاصية أحد أنواع JSON Schema القياسية: نص، أو رقم، أو عدد صحيح، أو قيمة منطقية، أو مصفوفة، أو كائن، أو null.

مثال على خطأ: revenue: invalid type 'float'

يخترع الذكاء الاصطناعي أحيانًا أنواعًا مثل ”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']

قد يستخدم الذكاء الاصطناعي ”finance“ بدلاً من المفتاح المحدد ”financial_analyst“. تلتقط هذه القاعدة عدم التطابق حتى يتمكن الذكاء الاصطناعي من تصحيحه.

القاعدة 6

الخبرة مطلوبة

النطاق: التوليد فقط

يجب أن تحتوي الخصائص غير الكائنية وغير المحفوظة على تعيين خبرة. يضمن ذلك معالجة كل حقل قابل للإثراء بواسطة مجال متخصص.

مثال على خطأ: revenue: expertise is required for non-object types

تُستثنى أنواع الكائنات لأن خصائصها الفرعية تحمل خبرتها الخاصة. وتُستثنى الحقول المحفوظة لأنها تمر دون تغيير.

القاعدة 7

النوع يطابق بيانات الإدخال

النطاق: التوليد فقط

يجب أن يتطابق نوع المخطط لكل خاصية مع نوع Python الفعلي للقيمة المقابلة في بيانات الإدخال.

مثال على خطأ: revenue: type mismatch - input is number but schema says 'string'

إذا احتوى إدخالك على "revenue": 42.5، فيجب أن يستخدم المخطط النوع "number" أو "integer"، وليس "string". أداة التحقق مرنة: فهي تقبل "number" للأعداد الصحيحة والعكس صحيح.

القاعدة 8

جميع خصائص الإدخال موجودة

النطاق: التوليد فقط

يجب أن يظهر كل مفتاح في بيانات الإدخال كخاصية في المخطط المُولّد. وهذا يمنع الذكاء الاصطناعي من إسقاط الحقول بصمت.

مثال على خطأ: Missing property from input: 'headquarters'

إذا احتوى JSON المُدخل على مفتاح "headquarters"، فيجب أن يتضمنه المخطط المُولَّد. وهذا يضمن تغطية كاملة لبياناتك.

استنتاج النوع

تستخدم القاعدة 7 (مطابقة النوع) الاستنتاج التلقائي للنوع لمقارنة قيم الإدخال الخاصة بك بالأنواع المُعلَنة في المخطط. والاستنتاج مرن لتجنّب النتائج الإيجابية الخاطئة:

قيمة الإدخالالنوع المُستنتَجيقبل أيضًا
true / falseboolean(قيمة منطقية فقط)
42integernumber
3.14numberinteger
"hello"string(نص فقط)
[1, 2, 3]array(مصفوفة فقط)
{"key": "val"}object(كائن فقط)

ملاحظة: يتم فحص القيم المنطقية قبل الأعداد الصحيحة لأن القيمة المنطقية في بعض اللغات نوع فرعي من العدد الصحيح. يمنع هذا الترتيب استنتاج true كعدد صحيح.

يصف هذا الجدول ما يقبله المدقّق، لا ما يُنتجه التوليد. فوجود قيمة 3 في العيّنة لا يجعل الخاصية عددًا صحيحًا: تُشحن الحقول الرقمية بوصفها number ما لم تؤكّد خطوة مخصّصة أن الكمية منفصلة فعلًا وألّا تناقضها أي قيمة ملاحَظة. فعدد صحيح واحد في عيّنة ليس دليلًا على استحالة الأنصاف — وإعلانها عددًا صحيحًا بالخطأ سيقتطع 6.2 إلى 6 في قاعدة بيانات مستهلِكة.

الخطوات التالية