المكاسب:
- القدرة على تقليل الخطأ إلى أصغر نسخة قابلة للتكرار ونقله إلى الذكاء الاصطناعي مع إثبات كامل
- القدرة على اختبار الفرضيات المبنية على الأدلة بأرخص تحكم والعثور على السبب الجذري
- القدرة على حل السبب الجذري وتأمينه من خلال اختبار الانحدار بدلاً من تصحيح الأعراض
تصحيح الأخطاء هو عملية اكتشاف سبب تصرف البرنامج بشكل غير متوقع وإصلاحه. إنها الوظيفة التي يقضي فيها المطور معظم الوقت ويتعب أكثر؛ لأن الخطأ في أغلب الأحيان لا يكون في المكان الذي يظهر فيه، بل يكون مخفيًا على بعد خطوات قليلة. يعد الذكاء الاصطناعي شريكًا قويًا في التفكير، حيث يعمل على تسريع هذا البحث، ولكن فقط إذا قدمت له الأدلة الصحيحة. تصحيح الأخطاء بدون دليل هو المجال الذي ينتج فيه الذكاء الاصطناعي معظم الهلوسة.
في هذه الوحدة، نقوم بإنشاء تدفق منضبط من توليد الخطأ للوصول إلى السبب الجذري: توضيح الأعراض، وجمع الأدلة (رسالة الخطأ، وتتبع المكدس، والسجل، والإدخال)، وإنشاء فرضية، واختبار الفرضية، والتحقق من صحة الإصلاح. يساعد الذكاء الاصطناعي في كل خطوة؛ ولكن يتم اتخاذ القرار "الثابت" من خلال رؤية أن الخطأ قد اختفى بالفعل.
لماذا الدليل هو كل شيء؟
لا يرى LLM الخطأ بالطريقة التي تراها أنت؛ إنه يعرف فقط ما تقوله له. جملة مثل "يتعطل التطبيق" لا تعطي النموذج أي معلومات تقريبًا، ويقوم النموذج بملء الفجوة بالتنبؤ - أي الهلوسة. في المقابل، رسالة الخطأ الكاملة، وتتبع المكدس - تفصيل الدالة التي تستدعي الخطأ الذي حدث من خلاله، والمدخلات التي تسببت في الخطأ، وما كان متوقعًا، وما إلى ذلك. ونظرًا للسلوك الملحوظ، يمكن للنموذج ترتيب الاحتمالات الحقيقية.
عند تصحيح الأخطاء، فكر في الذكاء الاصطناعي كمساعد للمحقق: كلما زاد عدد الأدلة التي تقدمها، زادت دقة الفرضية التي يولدها. إذا لم يكن هناك دليل، فسوف يخمن المساعد فقط وقد يقودك إلى المسار الخاطئ.
نصيحة: قبل نقل الخطأ إلى الذكاء الاصطناعي، قم بتقليله إلى أصغر مثال قابل للتكرار. إن أصغر التعليمات البرمجية والمدخلات التي تؤدي إلى حدوث الخطأ تجعل الأمور أسهل بشكل جذري بالنسبة لك وللنموذج؛ في أغلب الأحيان خلال هذا التخفيض تجد السبب بنفسك.
خطوة بخطوة: تدفق تحليل السبب الجذري
- توضيح الأعراض. "ماذا يحدث، ماذا كنت تتوقع أن يحدث؟" اكتب الاثنين في جملة واحدة.
- جمع الأدلة. رسالة خطأ كاملة، تتبع المكدس، سطور السجل ذات الصلة، تشغيل الإدخال، معلومات الإصدار.
- هل تم إنشاء الفرضية. من الذكاء الاصطناعي "3 أسباب محتملة تفسر هذا العرض وكيف يمكنني اختبار كل منها؟" بسأل.
- اختبر الفرضية الأرخص أولاً. قم بإضافة سجل، وطباعة قيمة، وإجراء اختبار. هل الأدلة تؤكد الفرضية؟
- أصلح السبب الجذري وليس العرض. بدلاً من إسكات الأعراض باستخدام التصحيح، قم بمعالجة السبب الجذري.
- التحقق من صحة وإضافة اختبار الانحدار. شاهد الخطأ يختفي؛ ثم اكتب اختبارًا سيكتشف هذا الخطأ حتى لا يعود مرة أخرى.
ثلاث حالات صغيرة
الحالة 1 - أدى تتبع المكدس إلى الملف الصحيح. كان أحد التطبيقات يعرض خطأ 500 في طلبات معينة. أعطى المطور تتبع المكدس الكامل وطلب التشغيل إلى الذكاء الاصطناعي؛ افترض النموذج أن الخطأ نتج عن قيمة لا شيء في طبقة تحليل التاريخ. أضاف المطور سجلاً إلى هذا السطر، وتحقق منه وحله في 15 دقيقة؛ تم إهدار ساعتين في اليوم السابق بتجارب غير مثبتة.
الحالة 2 - الهلوسة أدت إلى مسار خاطئ. كتب مطور آخر ببساطة "اتصال قاعدة البيانات ينقطع". اتهم الذكاء الاصطناعي إعداد تجمع الاتصال دون أي دليل؛ قضى المطور 40 دقيقة في تعديل هذا الإعداد. كان السبب الحقيقي هو انتهاء المهلة من جانب الشبكة ولم يتم الكشف عنه إلا من خلال النظر في السجلات. الدرس المستفاد: الفرضية المأخوذة بدون دليل هي فقط محتملة وغير موثوقة.
الحالة 3 - تم اكتشاف خطأ غير متوقع. كان هناك اختبار يفشل في بعض الأحيان. تم إعطاء الذكاء الاصطناعي رمز الاختبار ورسالة الفشل والمعلومات "أحيانًا ينجح، وأحيانًا يفشل"؛ أشار النموذج إلى تبعية مشتركة للوقت/الطلب للاختبارات. وأكدت المراجعة أن الاختبار كان يعتمد على التوقيت المحلي للنظام. بمجرد إصلاح الساعة (سخرية)، أصبح الاختبار مستقرًا.
أربعة قوالب قابلة للنسخ
توليد الفرضيات المبنية على الأدلة:
أنا أقوم بتصحيح الخلل. الأدلة أدناه.- السلوك المتوقع: {{توقع}}- السلوك الملحوظ: {{ملاحظة}}- رسالة الخطأ / تتبع المكدس: {{trace}}- إدخال التحفيز: {{input}}- البيئة/الإصدار: {{version}} قم بإدراج الأسباب الجذرية الثلاثة الأكثر ترجيحًا والتي تفسر هذا العرض. لكل منهما: كيف أقوم باختبار (أرخص فحص) وكيفية إصلاحه إذا كان صحيحًا. إذا كانت الأدلة غير كافية، أخبرني ما هي المعلومات الإضافية التي تحتاجها.
تفسير تتبع المكدس:
اقرأ تتبع المكدس هذا. ميز بين السطر الذي من المحتمل أن يبدأ الخطأ عنده (الجذر) وأي الخطوط هي مجرد استمرار للسلسلة. اقترح مكانًا أو مكانين للبحث أولاً. الكود ذو الصلة:{{code}}التتبع:{{trace}}
الحد الأدنى من الطرح المتماثل:
الكود أدناه ينتج خطأ. قم بتقليله إلى أصغر مثيل لا يزال يتسبب في حدوث الخطأ ولكنه يتجاهل أي شيء غير ضروري. لا تفترض أن كل قطعة تقوم بإزالتها لا تؤثر على الخطأ، ولكن أضف ملاحظة تقول "إذا اختفى الخطأ عند إزالة هذا، فهذا هو السبب".{{code}}
التحقق من صحة ما بعد التصحيح واختبار الانحدار:
افترض أن السبب الجذري هو {{السبب}} وقمت بإجراء الإصلاح التالي: {{fix}}.1) هل يعمل هذا الإصلاح بالفعل على إصلاح الأعراض، هل سيكون له أي آثار جانبية؟ 2) اكتب اختبار الانحدار الذي سيكتشف هذا الخطأ في المستقبل.
موجه ضعيف / موجه قوي
ضعيف: "الكود لا يعمل، لماذا؟"
Strong: "Node 20 / Express. POST /orders تُرجع 500 عندما تكون العناصر عبارة عن سلسلة فارغة في النص؛ يجب أن تُرجع 400. تتبع المكدس: TypeError: لا يمكن قراءة خصائص غير محددة (قراءة '0') - المرفق هو التتبع الكامل والمعالج المرتبط. أعطني الأسباب الثلاثة الأكثر احتمالاً التي تشرح هذا العرض وكيفية اختبار كل منها. [تتبع + رمز]"
نسخة قوية؛ إنه يوفر البيئة ونقطة النهاية ومدخلات المشغل ونوع الخطأ الدقيق والسلوك المتوقع. لم يعد النموذج قادرًا على تقديم التنبؤات، بل التحليل.
خطوة
مساهمة منظمة العفو الدولية
سيطرتك
جمع الأدلة
يذكر ما هي الأدلة المطلوبة
حقا يجمع الأدلة
توليد الفرضيات
قائمة الأسباب المحتملة
الأولوية مع السياق
اختبار الفرضيات
يوصي بطريقة الاختبار
يعمل ويلاحظ شخصيا
تصحيح
يوصي التصحيح
هل يحل السبب الجذري؟ هذا صحيح.
الانحدار
يكتب اختبارا
التأكد من كسر الاختبار
حل السبب الجذري وليس العرض
في معظم الأوقات، سيقترح الذكاء الاصطناعي تصحيحًا يعمل على إسكات الأعراض بسرعة: أضف محاولة/التقط، أو ضع علامة اختيار فارغة، أو ابتلاع الخطأ. وهذا صحيح في بعض الأحيان، وخطير في كثير من الأحيان؛ لأن السبب الأصلي يبقى في مكانه ويثور مرة أخرى من مكان آخر. مع كل إصلاح، اسأل نفسك: "هل يؤدي هذا إلى إصلاح سبب الخطأ، أم يجعله غير مرئي؟" بمجرد العثور على السبب الجذري، عادة ما يكون الإصلاح أصغر وأكثر قوة ودائمًا.
تحذير: ابتلاع الاستثناء بصمت (الالتقاط الفارغ) لا يحل الخطأ؛ إنه يخفي فقط ويجعل التشخيص المستقبلي مستحيلاً. إذا اقترح الذكاء الاصطناعي مثل هذا "الحل"، فلا تقبله دون التشكيك في السبب الجذري.
الأخطاء الشائعة
- طرح الأسئلة دون أدلة. الجمل الغامضة تدفع العارضة إلى الهلوسة؛ إعطاء الخطأ الكامل والتتبع والإدخال.
- الثبات على الفرضية الأولى. قد لا يكون الاقتراح الأول للذكاء الاصطناعي هو الأكثر ترجيحًا؛ ابدأ بأرخص فرضية يمكن التحكم فيها.
- تصحيح الأعراض وتفويت السبب الجذري. يعود الخطأ الصامت.
- إغلاق الإصلاح دون التحقق منه. انظر في حالة تشبه الإنتاج أن الخطأ يختفي بالفعل.
- عدم كتابة اختبارات الانحدار. إذا لم تتم إضافة أي اختبارات، فسيعود الخطأ نفسه بصمت في الإصدارات الأحدث.
باختصار
في تصحيح الأخطاء، تتناسب قوة الذكاء الاصطناعي بشكل مباشر مع الأدلة التي تقدمها له: بدون رسالة الخطأ الكاملة، وتتبع المكدس، وتحفيز المدخلات، والسلوك المتوقع، فإن النموذج مجرد تخمين. يؤدي التدفق المنضبط - توضيح الأعراض، وجمع الأدلة، وإنشاء الفرضيات، والاختبار باستخدام التحكم الأرخص، وإصلاح السبب الجذري، والتحقق، وإضافة اختبار الانحدار - إلى إغلاق الخطأ بسرعة وبشكل دائم. الذكاء الاصطناعي هو مولد الفرضيات؛ أنت من يقرر أن الخلل قد تم حله بالفعل.
مهمة التطبيق
اختر خطأً حقيقيًا واجهته مؤخرًا (أو أعد إنتاج خطأ اختباري). قم بخطوة "الحد الأدنى من التكاثر" أولاً؛ قم بإزالة أصغر رمز وإدخال يؤدي إلى حدوث الخطأ. ثم احصل على 3 أسباب محتملة وطرق اختبار من الذكاء الاصطناعي باستخدام قالب "توليد الفرضيات المبنية على الأدلة". اختبر الفرضية الأرخص بنفسك، وابحث عن السبب الجذري، وأصلحه، وأخيرًا اكتب اختبار الانحدار الذي سيكتشف هذا الخطأ في المستقبل ويتحقق من فشل الاختبار بالفعل.
قائمة مرجعية
- [ ] أقوم بتقليل الخطأ إلى أصغر عينة قابلة للتكرار قبل نقلها إلى الذكاء الاصطناعي.
- [ ] أقوم بإضافة رسالة الخطأ الكاملة وتتبع المكدس والإدخال والسلوك المتوقع إلى الموجه.
- [ ] أبدأ بأرخص ما يمكن التحكم فيه، دون أن أكون مقيدًا بفرضية واحدة.
- [ ] أؤكد أنني قمت بحل السبب الجذري بدلاً من تصحيح الأعراض.
- [ ] ألاحظ أن الإصلاح يعمل على إصلاح الخلل بالفعل.
- [ ] أقوم بإضافة اختبار الانحدار لكل خطأ تم حله.