লাভ:
- একটি বাগকে ক্ষুদ্রতম পুনরুত্পাদনযোগ্য দৃষ্টান্তে হ্রাস করার এবং সম্পূর্ণ প্রমাণ সহ এটিকে এআই-তে স্থানান্তর করার ক্ষমতা
- সাশ্রয়ী নিয়ন্ত্রণের সাথে প্রমাণ-ভিত্তিক অনুমান পরীক্ষা করার এবং মূল কারণ খুঁজে বের করার ক্ষমতা
- মূল কারণটি সমাধান করার ক্ষমতা এবং উপসর্গ প্যাচ করার পরিবর্তে একটি রিগ্রেশন পরীক্ষার মাধ্যমে এটি সুরক্ষিত করা
ডিবাগিং হল একটি সফ্টওয়্যার কেন অপ্রত্যাশিতভাবে আচরণ করে তা খুঁজে বের করার এবং এটি ঠিক করার প্রক্রিয়া। এটি এমন একটি কাজ যেখানে একজন বিকাশকারী সবচেয়ে বেশি সময় ব্যয় করেন এবং সবচেয়ে ক্লান্ত হয়ে পড়েন; কারণ বেশির ভাগ সময়ই ভুল যেখানে দেখা যায় সেখানে নয়, বরং কয়েক ধাপ পেছনে লুকিয়ে থাকে। AI হল একটি শক্তিশালী চিন্তার অংশীদার যা এই গবেষণাটিকে ত্বরান্বিত করে — কিন্তু শুধুমাত্র যদি আপনি এটির সঠিক প্রমাণ দেন। প্রমাণ ছাড়াই ডিবাগিং হল সেই জায়গা যেখানে AI সবচেয়ে বেশি হ্যালুসিনেশন তৈরি করে।
এই ইউনিটে, আমরা ত্রুটি তৈরি করা থেকে মূল কারণ পর্যন্ত একটি সুশৃঙ্খল প্রবাহ স্থাপন করি: লক্ষণটি স্পষ্ট করা, প্রমাণ সংগ্রহ করা (ত্রুটির বার্তা, স্ট্যাক ট্রেস, লগ, এন্ট্রি), একটি হাইপোথিসিস তৈরি করা, হাইপোথিসিস পরীক্ষা করা এবং ফিক্সটি যাচাই করা। AI প্রতিটি পদক্ষেপে সাহায্য করে; কিন্তু "স্থির" সিদ্ধান্ত নেওয়া হয় যে বাগটি আসলে চলে গেছে।
কেন প্রমাণ সবকিছু?
একটি এলএলএম আপনি যেভাবে করেন সেভাবে ত্রুটি দেখতে পায় না; আপনি তাকে যা বলবেন তা কেবল তিনিই জানেন। "অ্যাপ্লিকেশন ক্র্যাশ" এর মতো একটি বাক্য মডেলটিকে প্রায় কোনও তথ্য দেয় না এবং মডেলটি একটি ভবিষ্যদ্বাণী দিয়ে শূন্যস্থান পূরণ করে - অর্থাৎ একটি হ্যালুসিনেশন। পালাক্রমে, সম্পূর্ণ ত্রুটি বার্তা, স্ট্যাক ট্রেস — একটি ব্রেকডাউন কোন ফাংশন কল করে যে ত্রুটিটি ঘটেছে, যে ইনপুটটি ত্রুটিটিকে ট্রিগার করেছিল এবং কী প্রত্যাশিত ছিল ইত্যাদি। পর্যবেক্ষণ করা আচরণের পরিপ্রেক্ষিতে, মডেলটি সত্যিকারের সম্ভাব্যতা র্যাঙ্ক করতে পারে।
ডিবাগিং-এ, AI-কে একজন গোয়েন্দার সহকারী হিসেবে ভাবুন: আপনি যত বেশি প্রমাণ উপস্থাপন করবেন, তত বেশি নির্ভুল হাইপোথিসিস তৈরি হবে। যদি কোন প্রমাণ না থাকে, তাহলে সহকারী শুধুমাত্র অনুমান করবে এবং আপনাকে ভুল পথে নিয়ে যেতে পারে।
টিপ: AI-তে একটি বাগ পোর্ট করার আগে, এটিকে ক্ষুদ্রতম পুনরুত্পাদনযোগ্য উদাহরণে কমিয়ে দিন। ক্ষুদ্রতম কোড এবং ইনপুট যা ত্রুটিটিকে ট্রিগার করে তা আপনার এবং মডেল উভয়ের জন্যই জিনিসগুলিকে আমূল সহজ করে তোলে; প্রায়শই এই হ্রাসের সময় আপনি নিজেই কারণটি খুঁজে পান।
ধাপে ধাপে: মূল কারণ বিশ্লেষণ প্রবাহ
- লক্ষণটি স্পষ্ট করুন। "কি হচ্ছে, আপনি কি ঘটতে আশা করেছিলেন?" দুটিকে এক বাক্যে লিখুন।
- প্রমাণ সংগ্রহ করুন। সম্পূর্ণ ত্রুটি বার্তা, স্ট্যাক ট্রেস, প্রাসঙ্গিক লগ লাইন, ট্রিগারিং এন্ট্রি, সংস্করণ তথ্য।
- হাইপোথিসিস তৈরি করুন। AI থেকে "3টি সম্ভাব্য কারণ যা এই উপসর্গটি ব্যাখ্যা করে এবং আমি কীভাবে প্রতিটির জন্য পরীক্ষা করব?" জিজ্ঞাসা
- প্রথমে সস্তা হাইপোথিসিস পরীক্ষা করুন। একটি লগ যোগ করুন, একটি মান মুদ্রণ করুন, একটি পরীক্ষা চালান। প্রমাণ কি অনুমান নিশ্চিত করে?
- মূল কারণ ঠিক করুন, লক্ষণ নয়। একটি প্যাচ দিয়ে উপসর্গটি নীরব করার পরিবর্তে, মূল কারণটি সম্বোধন করুন।
- যাচাই করুন এবং রিগ্রেশন টেস্টিং যোগ করুন। ত্রুটি অদৃশ্য দেখুন; তারপরে একটি পরীক্ষা লিখুন যা সেই ত্রুটিটি ধরবে যাতে এটি ফিরে না আসে।
তিনটি মিনি কেস
কেস 1 - স্ট্যাক ট্রেস সঠিক ফাইলের দিকে পরিচালিত করে। একটি অ্যাপ্লিকেশন নির্দিষ্ট অনুরোধে একটি 500 ত্রুটি ফিরিয়ে দিচ্ছে৷ ডেভেলপার AI কে সম্পূর্ণ স্ট্যাক ট্রেস এবং ট্রিগারিং রিকোয়েস্ট দিয়েছে; মডেল অনুমান করে যে ত্রুটিটি তারিখ পার্সিং স্তরে একটি নেই মান দ্বারা সৃষ্ট হয়েছে। বিকাশকারী সেই লাইনে একটি লগ যুক্ত করেছে, এটি যাচাই করেছে এবং 15 মিনিটের মধ্যে এটি সমাধান করেছে; অপ্রমাণিত পরীক্ষা-নিরীক্ষার আগের দিন 2 ঘন্টা নষ্ট হয়েছিল।
কেস 2 - হ্যালুসিনেশন ভুল ট্র্যাকের দিকে পরিচালিত করে। অন্য একজন বিকাশকারী কেবল লিখেছেন "ডাটাবেস সংযোগ ড্রপ হচ্ছে"। এআই কোনো প্রমাণ ছাড়াই সংযোগ পুল সেটিংয়ের অভিযোগ করেছে; বিকাশকারী এই সেটিংটি নিয়ে 40 মিনিট টিঙ্কারিং করেছেন৷ আসল কারণটি ছিল নেটওয়ার্ক সাইডে একটি টাইমআউট এবং শুধুমাত্র লগগুলি দেখেই প্রকাশ করা হয়েছিল৷ পাঠ: প্রমাণ ছাড়াই নেওয়া একটি অনুমান শুধুমাত্র সম্ভাব্য, নির্ভরযোগ্য নয়।
কেস 3 - ফ্ল্যাকি ত্রুটি ধরা পড়েছে। একটি পরীক্ষা ছিল যে মাঝে মাঝে ব্যর্থ হয়। এআই-কে পরীক্ষার কোড, ব্যর্থতার বার্তা এবং তথ্য দেওয়া হয়েছিল "কখনও কখনও এটি পাস হয়, কখনও কখনও এটি ব্যর্থ হয়"; মডেলটি পরীক্ষার একটি ভাগ করা সময়/অর্ডার নির্ভরতা নির্দেশ করে। পর্যালোচনা নিশ্চিত করেছে যে পরীক্ষাটি সিস্টেমের স্থানীয় সময়ের উপর ভিত্তি করে করা হয়েছিল। একবার ঘড়ি স্থির হয়ে গেলে (বিদ্রূপ করা), পরীক্ষা স্থিতিশীল হয়ে ওঠে।
চারটি অনুলিপিযোগ্য টেমপ্লেট
প্রমাণ-ভিত্তিক অনুমান প্রজন্ম:
আমি একটি বাগ ডিবাগ করছি. নীচের প্রমাণ।- প্রত্যাশিত আচরণ: {{প্রত্যাশিত}}- পর্যবেক্ষিত আচরণ: {{পর্যবেক্ষিত}}- ত্রুটি বার্তা / স্ট্যাক ট্রেস: {{trace}}- ট্রিগারিং ইনপুট: {{input}}- পরিবেশ/সংস্করণ: {{version}} 3টি সম্ভাব্য মূল কারণের তালিকা করুন যা এই ptym ব্যাখ্যা করে৷ প্রতিটির জন্য: আমি কীভাবে পরীক্ষা করব (সস্তা চেক) এবং এটি সত্য হলে কীভাবে এটি ঠিক করব। যদি প্রমাণ অপর্যাপ্ত হয়, তাহলে আমাকে বলুন আপনার কী অতিরিক্ত তথ্য দরকার।
স্ট্যাক ট্রেস ব্যাখ্যা করা:
এই স্ট্যাক ট্রেস পড়ুন. কোন লাইনের মধ্যে ত্রুটিটি সম্ভবত (মূল) থেকে শুরু হয় এবং কোন লাইনগুলি কেবল চেইনের ধারাবাহিকতার মধ্যে পার্থক্য করুন। প্রথমে দেখার জন্য 1-2টি জায়গা সাজেস্ট করুন। সম্পর্কিত কোড:{{code}}ট্রেস:{{trace}}
ন্যূনতম রিপ্রো বিয়োগ:
নিচের কোডটি একটি ত্রুটি তৈরি করে। এটিকে ক্ষুদ্রতম দৃষ্টান্তে হ্রাস করুন যা এখনও ত্রুটিটি ট্রিগার করে তবে অপ্রয়োজনীয় কিছু বাতিল করে। অনুমান করবেন না যে আপনার মুছে ফেলা প্রতিটি অংশ ত্রুটিকে প্রভাবিত করে না, তবে একটি নোট যোগ করুন যাতে বলা হয় "যদি আপনি এটি সরানোর সময় ত্রুটিটি অদৃশ্য হয়ে যায়, সেই কারণেই"৷{{code}}
সংশোধন পরবর্তী বৈধতা এবং রিগ্রেশন পরীক্ষা:
ধরুন মূল কারণটি হল {{cause}} এবং আমি নিম্নলিখিত সমাধানটি করি: {{fix}}.1) এই ফিক্সটি কি আসলেই উপসর্গটি ঠিক করে, এর কোন পার্শ্বপ্রতিক্রিয়া আছে কি? 2) একটি রিগ্রেশন পরীক্ষা লিখুন যা ভবিষ্যতে এই বাগটি ধরবে৷
দুর্বল প্রম্পট / শক্তিশালী প্রম্পট
দুর্বল: "কোড কাজ করে না, কেন?"
শক্তিশালী: "নোড 20 / এক্সপ্রেস। POST/orders 500 রিটার্ন করে যখন আইটেমগুলি বডিতে একটি খালি স্ট্রিং হয়; 400 ফেরত দেওয়া উচিত ছিল। স্ট্যাক ট্রেস: TypeError: অনির্ধারিত ('0' পড়া) এর বৈশিষ্ট্যগুলি পড়তে পারে না — সংযুক্ত হল সম্পূর্ণ ট্রেস এবং সংশ্লিষ্ট হ্যান্ডলার। আমাকে ব্যাখ্যা করুন যে 3টি এবং সম্ভাব্য 3টি কীভাবে পরীক্ষা করে তা ব্যাখ্যা করতে পারে। + কোড]"
শক্তিশালী সংস্করণ; এটি পরিবেশ, এন্ডপয়েন্ট, ট্রিগার ইনপুট, সঠিক ত্রুটির ধরন এবং প্রত্যাশিত আচরণ দেয়। মডেলটি আর ভবিষ্যদ্বাণী করতে পারে না, তবে বিশ্লেষণ করতে পারে।
পদক্ষেপ
AI এর অবদান
আপনার নিয়ন্ত্রণ
প্রমাণ সংগ্রহ
কি প্রমাণ প্রয়োজন, মনে করিয়ে দেয়
সত্যিই প্রমাণ সংগ্রহ
অনুমান প্রজন্ম
সম্ভাব্য কারণগুলি তালিকাভুক্ত করুন
প্রসঙ্গ সহ অগ্রাধিকার দেয়
হাইপোথিসিস পরীক্ষা
পরীক্ষা পদ্ধতি সুপারিশ
পরিচালনা করে এবং ব্যক্তিগতভাবে পর্যবেক্ষণ করে
সংশোধন
প্যাচ সুপারিশ করে
এটা কি মূল কারণ সমাধান করে? এটা সত্যি।
রিগ্রেশন
একটি পরীক্ষা লেখেন
পরীক্ষা ভেঙ্গে গেছে তা যাচাই করে
মূল কারণ সমাধান করা, লক্ষণ নয়
বেশিরভাগ সময় AI এমন একটি প্যাচের পরামর্শ দেবে যা দ্রুত উপসর্গটিকে নিঃশব্দ করে দেয়: একটি চেষ্টা/ক্যাচ যোগ করুন, একটি শূন্য পরীক্ষা করুন, ত্রুটিটি গ্রাস করুন। এটি কখনও কখনও সত্য, প্রায়শই বিপজ্জনক; কারণ মূল কারণটি রয়ে যায় এবং অন্য কোথাও থেকে আবার বিস্ফোরিত হয়। প্রতিটি সমাধানের সাথে, নিজেকে জিজ্ঞাসা করুন: "এটি কি ত্রুটির কারণটি ঠিক করে, নাকি এটিকে অদৃশ্য করে তোলে?" একবার আপনি মূল কারণটি খুঁজে পেলে, সমাধানটি সাধারণত ছোট, আরও শক্তিশালী এবং স্থায়ী হয়।
সতর্কতা: নিঃশব্দে একটি ব্যতিক্রম (খালি ক্যাচ) গিলে ফেলা ত্রুটির সমাধান করে না; এটি কেবল গোপন করে এবং ভবিষ্যতে রোগ নির্ণয়কে অসম্ভব করে তোলে। যদি এআই এমন একটি "সমাধান" প্রস্তাব করে, তবে মূল কারণ নিয়ে প্রশ্ন না করে এটি গ্রহণ করবেন না।
সাধারণ ভুল
- প্রমাণ ছাড়াই প্রশ্ন করা। অস্পষ্ট বাক্য মডেলটিকে হ্যালুসিনেশনে ঠেলে দেয়; সম্পূর্ণ ত্রুটি, ট্রেস এবং ইনপুট দিন।
- প্রথম হাইপোথিসিসে লকিং। AI এর প্রথম পরামর্শটি সম্ভবত সবচেয়ে বেশি নাও হতে পারে; সবচেয়ে সস্তা নিয়ন্ত্রণযোগ্য হাইপোথিসিস দিয়ে শুরু করুন।
- উপসর্গ প্যাচিং এবং মূল কারণ অনুপস্থিত. নীরব ত্রুটি ফিরে আসে।
- যাচাই না করেই ফিক্স বন্ধ করা। উত্পাদনের মতো অবস্থায় দেখুন যে ত্রুটিটি আসলে অদৃশ্য হয়ে যায়।
- রিগ্রেশন পরীক্ষা লিখছেন না। যদি কোন পরীক্ষা যোগ করা না হয়, একই ত্রুটি নীরবে পরবর্তী সংস্করণে ফিরে আসবে।
সংক্ষেপে
ডিবাগিং-এ, এআই-এর শক্তি আপনার দেওয়া প্রমাণের সাথে সরাসরি সমানুপাতিক: সম্পূর্ণ ত্রুটি বার্তা, স্ট্যাক ট্রেস, ট্রিগারিং ইনপুট এবং প্রত্যাশিত আচরণ ছাড়াই, মডেলটি শুধু অনুমান করে। সুশৃঙ্খল প্রবাহ — লক্ষণ স্পষ্ট করুন, প্রমাণ সংগ্রহ করুন, হাইপোথিসিস তৈরি করুন, সস্তা নিয়ন্ত্রণের সাথে পরীক্ষা করুন, মূল কারণ ঠিক করুন, যাচাই করুন এবং রিগ্রেশন টেস্টিং যোগ করুন — বাগটিকে দ্রুত এবং স্থায়ীভাবে উভয়ই বন্ধ করে। এআই একটি হাইপোথিসিস জেনারেটর; আপনিই সিদ্ধান্ত নেন যে বাগটি আসলে সমাধান করা হয়েছে।
আবেদন টাস্ক
আপনি সম্প্রতি সম্মুখীন হয়েছেন এমন একটি বাস্তব বাগ চয়ন করুন (বা একটি পরীক্ষা বাগ পুনরুত্পাদন করুন)। প্রথমে "ন্যূনতম প্রজনন" পদক্ষেপটি করুন; ত্রুটিটি ট্রিগার করে এমন ক্ষুদ্রতম কোড এবং ইনপুটটি সরান। তারপর "প্রমাণ-ভিত্তিক হাইপোথিসিস জেনারেশন" টেমপ্লেট সহ AI থেকে 3টি সম্ভাব্য কারণ এবং পরীক্ষার পদ্ধতি পান৷ সবচেয়ে সস্তা হাইপোথিসিস নিজেই পরীক্ষা করুন, মূল কারণ খুঁজুন, এটি ঠিক করুন এবং অবশেষে একটি রিগ্রেশন পরীক্ষা লিখুন যা ভবিষ্যতে এই বাগটি ধরবে এবং যাচাই করবে যে পরীক্ষাটি আসলে ভেঙে গেছে।
চেকলিস্ট
- [ ] AI তে সরানোর আগে আমি ত্রুটিটিকে ক্ষুদ্রতম প্রজননযোগ্য নমুনায় কমিয়ে দিই।
- [ ] আমি প্রম্পটে সম্পূর্ণ ত্রুটি বার্তা, স্ট্যাক ট্রেস, ইনপুট এবং প্রত্যাশিত আচরণ যোগ করছি।
- [ ] আমি একটি একক অনুমানে আটকে না থেকে সবচেয়ে সস্তা নিয়ন্ত্রণযোগ্য একটি দিয়ে শুরু করি৷
- [ ] আমি যাচাই করছি যে আমি লক্ষণটি প্যাচ করার পরিবর্তে মূল কারণটি সমাধান করেছি৷
- [ ] আমি লক্ষ্য করেছি যে ফিক্স আসলে বাগ সংশোধন করে।
- [ ] আমি প্রতিটি সমাধান করা বাগের জন্য একটি রিগ্রেশন পরীক্ষা যোগ করি।