يستطيع نموذج اللغة الكبير (LLM) قراءة الصيغة الكامنة خلف كل خلية بدلًا من القيمة المطبوعة فوقها، ثم مقارنة تلك الصيغة بجاراتها وبالوصف المكتوب في ترويسة الصف المجاور لها. لا يمكنه اعتماد نموذج. ما يُنتجه هو قائمة مرتّبة بالخلايا الجديرة بنظرة ثانية، لكل منها سبب مرفق، بسرعة تكفي لتشغيله قبل أن يغادر أي رقم أسوار المؤسسة.
نادرًا ما يكون خطأ جدول البيانات صاخبًا. يُفتح الملف، وتُظهر كل خلية رقمًا، ويبدو المجموع في الأسفل معقولًا. الأخطاء التي تهمّ لا تعلن عن نفسها أبدًا، ولهذا يستحقّ المرور الآلي على طبقة الصيغ مكانه. النموذج نفسه ليس الضابط. المحلّل الذي يقرأ إشاراته هو الضابط، وسجلّ التدقيق (audit trail) هو الدليل على أنه فعل ذلك.
ما الذي ينكسر فعلًا في جدول البيانات
تندرج معظم أخطاء النماذج ضمن عدد قليل من الأشكال، ولا يظهر أيٌّ منها كرسالة خطأ. فخطأ #REF! يعلن عن نفسه على الأقل. أما الأخطاء الخطيرة فتبقى صامتة.
- صيغة مُنسوخة عبر صف تتخطّى عمودًا واحدًا، فيشير الشهر السابع إلى الخلية السابقة الخطأ، وينحرف كل مجموع لاحق بما يعادل إيرادات ربع كامل.
- رقم مُدخَل يدويًا داخل صيغة، مثل
=B14*1.03*1200000، حيث كان الرقم 1200000 قيمةً مؤقتةً كتبها أحدهم أثناء تعديل متأخّر ولم يُعِدها قطّ إلى مرجع خلية. - صيغة غير متّسقة داخل نطاق يُفترض أن يكون موحّدًا، خليةٌ واحدة في توقّع لاثني عشر شهرًا تجمع مجموعةً مختلفة من الصفوف عن الأحد عشر الباقية.
- انقلاب في الإشارة (sign flip)، حيث تُدخَل التكاليف موجبةً في قسم وسالبةً في آخر، فيجمع مجموعٌ فرعي ما كان ينبغي أن يطرحه.
- رابط مكسور إلى مصنّف خارجي (external workbook) انتهى إلى قيمة مخزّنة مؤقتًا وقديمة بعد أن نُقل الملف المصدر.
- مجموع لم يعد يشمل صفًّا أُدرِج فوقه، لأن نطاق
SUMكان محدودًا بحدود ثابتة بدلًا من أن يمتدّ.
الشخص الذي يراجع نموذجًا كبيرًا يلتقط بعض هذه الأخطاء ويفوته بعضها، ويتوقف ذلك في الغالب على مدى إرهاقه في نهاية الربع. المراجع ليس عديم الكفاءة. المساحة المطلوب تغطيتها آلاف الخلايا، وانتباه الإنسان لا يتوسّع خطّيًا عبرها.
أعطِ النموذج الرسم البياني للصيغ، لا صورة
المقاربة الساذجة أن تلصق لقطة شاشة أو الشبكة المطبوعة في المُطالبة (prompt) وتسأل عمّا يبدو خطأً. هذا يفشل، لأن طبقة القيم تخفي بالضبط ما تصطاده. لا يمكنك رؤية قيمة مُدخَلة يدويًا داخل رقم مُعرَض.
نحن نستخرج البنية بدلًا من ذلك. لكل خلية نسحب نص الصيغة، والقيمة المحسوبة، وقائمة الخلايا السابقة (precedents) والتابعة (dependents)، ونصّ أقرب ترويسة صف وعمود. هذا يمنح النموذج النسب (lineage): يمكنه السير من مجموع رجوعًا إلى المدخلات التي تغذّيه، ويمكنه مقارنة خلية بالحساب الذي تستخدمه جاراتها. النطاقات التي يُفترض أن تكون متجانسة تُجمَّع معًا، فتبرز صيغة واحدة شاذّة في كتلة من أربعين بوصفها كسرًا في النمط لا مجرد سلسلة معزولة.
ثم تطرح المُطالبة سؤالًا ضيّقًا لكل مجموعة. ليس “هل هذا النموذج صحيح؟”، وهو سؤال يستدعي هراءً واثقًا، بل “إليك اثنتي عشرة صيغة تشغل الصف نفسه من التوقّع، واحدة منها تختلف، صِف كيف تختلف ولماذا قد يكون ذلك متعمّدًا أو خطأً”. الأسئلة الضيّقة المرفقة بسياقها المحيط هي حيث تكون هذه النماذج مفيدة حقًّا. أما الأسئلة الفضفاضة فهي حيث تختلق الأشياء.
المخرجات مُهيكلة (structured)، لا نصًّا سرديًا. تعود كل نتيجة على هيئة مرجع خلية، وفئة، وسبب موجز، ودرجة ثقة. يتيح لنا ذلك الفرز، وإزالة التكرار، وكتم الفئات التي لا تعنى بها فرقة بعينها، وتغذية المجموعة كلها في طابور مراجعة بدلًا من فقرة يتعيّن على إنسان تحليلها.
أبقِ الإنسان في الحلقة، واحتفظ بالإيصالات
قاعدتان تمسكان بهذا كلّه معًا. النموذج لا يعدّل المصنّف أبدًا، والنموذج ليس الكلمة الأخيرة أبدًا.
كل إشارة اقتراح. تحطّ أمام المراجع مصحوبةً بالخلية والصيغة والسبب، وبسياق يُقفَز به إلى ذلك الموضع في الملف بنقرة واحدة. يقبل المراجع، أو يرفض، أو يصحّح. ويُسجَّل قراره في مقابل الخلية ونسخة النموذج التي أثارتها، ما يمنحك سجلّ تدقيق: ماذا أُشير إليه، ومن نظر فيه، وإلى ماذا خلص. وإذا سأل جهةٌ رقابية أو مدقّقٌ داخلي كيف جرى التحقق من رقم، فذلك السجل هو الجواب، وهو موجود سواء أكانت الإشارة صائبةً أم خاطئة.
الاقتصاديات تعيش في ميزانية النتائج الإيجابية الكاذبة (false-positive budget). سيقرأ المراجع بضع عشرات من الإشارات ربما قبل أن يبدأ بالختم الآلي، فالدقّة (precision) في أعلى الترتيب تهمّ أكثر من الاستدعاء (recall) عبر الملف كلّه. نحتفظ بمجموعة تقييم موسومة (labelled eval set) من نماذج حقيقية بأخطاء معروفة، مزروعة وطبيعية، ونقيس عليها الدقّة والاستدعاء لكل فئة خطأ، لا على عرض توضيحي. وحين يرفع تغييرٌ في المُطالبة أو النموذج الاستدعاءَ على انقلابات الإشارة لكنه يغرق الطابور بإشارات كاذبة عن قيم مُدخَلة يدويًا، تكشف مجموعة التقييم ذلك قبل أن يصل إلى شخص. هذا هو الفرق بين أداة يواظب الناس على استخدامها وأخرى يطفئونها بهدوء بعد الأسبوع الثاني.
النطاق صادق. هذا يلتقط العيوب الآلية والبنيوية: المراجع، والاتّساق، والقيم المُدخَلة يدويًا، والإشارة، والروابط القديمة. لكنه لا يخبرك ما إذا كان افتراض نموّ بنسبة 3 في المئة معقولًا لهذا العمل في هذه الدورة. ذلك الحكم يبقى للمحلّل، وهكذا ينبغي أن يكون. ما يوفّره له النموذج هو المرور الآلي على كل خلية كي ينزل حكمه على الافتراضات التي تهمّ، بدلًا من أن يُستنزَف في البحث عن خطأ مطبعي في الصف 214.
الأسئلة الشائعة
هل يستطيع نموذج اللغة قراءة الصيغ، أم القيم المطبوعة فقط؟
إنه يعمل على طبقة الصيغ. نستخرج نص الصيغة، والقيمة المحسوبة، والخلايا السابقة (precedents) والتابعة (dependents) لكل خلية، بحيث يستدلّ النموذج على الحساب نفسه لا على الرقم الذي تصادف أن تعرضه لقطة الشاشة.
ألن يختلق النموذج أخطاءً غير موجودة (hallucination)؟
سيفعل، ولهذا لا شيء مما يقوله حجّة نهائية. كل إشارة تُوجَّه إلى شخص مصحوبةً بمرجع الخلية وسبب الإشارة. ونضبط ميزانية النتائج الإيجابية الكاذبة (false-positive budget) في مقابل مجموعة تقييم موسومة (labelled eval set) كي لا يغرق المراجعون في الضوضاء.
هل يحلّ هذا محلّ المحلّل الذي يراجع النموذج؟
لا. إنه يحلّ محلّ المرور الآلي الأول على آلاف الخلايا، ويسلّم المراجع قائمةً قصيرةً مرتّبةً بالأولوية. أما الحكم على ما إذا كانت الصيغة خاطئة بالنسبة لهذا العمل تحديدًا فيبقى للمحلّل.