AI দিয়ে বাগ খোঁজা: কোড, এরর আর প্রত্যাশা একসাথে দিন

AI দিয়ে বাগ খোঁজা: কোড, এরর আর প্রত্যাশা একসাথে দিন

সফটওয়্যার ডেভেলপমেন্টে AIমাঝারি স্তর২ মিনিটEnglish

যা লাগবে: ChatGPT (chatgpt.com), Python 3, pytest

“কোড কাজ করছে না, ঠিক করে দাও”, এভাবে লিখলে AI আন্দাজে উত্তর দেয়। Simon Willison তাঁর কোডিংয়ে LLM ব্যবহারের লেখায় বলছেন, ভালো ফলের বেশিরভাগটাই নির্ভর করে context-এর উপর: আপনি AI-কে কী দেখাচ্ছেন। বাগ খোঁজার সময় তিনটা জিনিস লাগবে: কোড, পুরো এরর, আর আপনি কী আশা করছিলেন।

ধাপ ১: বাগটা নিজে আগে চালিয়ে দেখুন

আমাদের একটা অনলাইন দোকানের দাম “৳ 1,250” এভাবে লেখা থাকে। ফাংশনটা এই লেখা থেকে সংখ্যা বের করবে:

price.py
def parse_price(text):
# "৳ 1,250" -> 1250
return int(text.replace("৳", "").strip())
print(parse_price("৳ 1,250"))

চালালে আসল এরর:

টার্মিনালের ফল
Traceback (most recent call last):
File "price.py", line 5, in <module>
print(parse_price("৳ 1,250"))
File "price.py", line 3, in parse_price
return int(text.replace("৳", "").strip())
ValueError: invalid literal for int() with base 10: '1,250'

ধাপ ২: তিনটা জিনিস একসাথে দিন

এরর থেকে শুধু শেষ লাইন না, পুরো Traceback দিন। আর বলে দিন উত্তর কোন ক্রমে চান: আগে কারণ, তারপর সমাধান, তারপর টেস্ট। আপনার আসল ডেটা কেমন হয়, সেটাও লিখুন। আমাদের সাইটে বাংলা অঙ্কেও দাম থাকে, তাই সেটা উল্লেখ করেছি।

অনুরোধ
আমার Python ফাংশনটা crash করছে। আগে কারণটা ব্যাখ্যা করুন, তারপর সবচেয়ে ছোট সমাধান দিন, তারপর pytest টেস্ট লিখুন।
কোড (price.py):
def parse_price(text):
# "৳ 1,250" -> 1250
return int(text.replace("৳", "").strip())
print(parse_price("৳ 1,250"))
এরর:
Traceback (most recent call last):
File "price.py", line 5, in <module>
print(parse_price("৳ 1,250"))
File "price.py", line 3, in parse_price
return int(text.replace("৳", "").strip())
ValueError: invalid literal for int() with base 10: '1,250'
আমি চাই ফল আসুক 1250। আমাদের সাইটে দাম এভাবেও লেখা থাকে: "৳950", " ৳ 1,250 ", আবার বাংলা অঙ্কে "৳ ১,২৫০"।

বড় করে দেখতে ছবিতে চাপ দিন

  1. কোড, এরর আর প্রত্যাশা একসাথে
  2. পাঠানোর বোতাম

ধাপ ৩: কারণটা আগে পড়ুন

বড় করে দেখতে ছবিতে চাপ দিন

  1. কারণ: কমা থেকে যাচ্ছে, তাই int() পারছে না

কারণটা সোজা: ৳ আর দুই পাশের ফাঁকা সরানো হচ্ছিল, কিন্তু মাঝের কমা থেকে যাচ্ছিল। সমাধানেও এক লাইন: .replace(",", "")। ChatGPT আরও বলেছে, Python-এর int() বাংলা অঙ্কও পড়তে পারে, তাই আলাদা রূপান্তর লাগবে না।

(ইংরেজিতে একই পরীক্ষায় ChatGPT উল্টো পথে গেছে: str.maketrans দিয়ে বাংলা অঙ্ক আগে ইংরেজি অঙ্কে বদলেছে। দুই উত্তরই আমরা চালিয়ে দেখেছি, দুটোই নিজের টেস্টে পাস করেছে।)

শেষ দাবিটা অবাক করার মতো। এটা বিশ্বাস করব, নাকি যাচাই করব? যাচাই করব, পরের ধাপে।

ধাপ ৪: AI-এর টেস্ট নিজের মেশিনে চালান

বড় করে দেখতে ছবিতে চাপ দিন

  1. AI-এর লেখা টেস্ট: চারটা ইনপুট, বাংলা অঙ্কসহ

ঠিক করা ফাংশন price.py-তে আর টেস্টটা test_price.py-তে রেখে চালান। আমাদের মেশিনে আসল ফল:

python -m pytest -q
.... [100%]
4 passed in 0.01s

চারটাই পাস, বাংলা অঙ্কের “৳ ১,২৫০”-ও। মানে ChatGPT-এর দাবি সত্যি: int() বাংলা অঙ্ক পড়ে। এখন আমরা এটা জানি, কারণ চালিয়ে দেখেছি।

ধাপ ৫: টেস্টের বাইরের ইনপুট ভাবুন

টেস্ট শুধু ততটুকুই প্রমাণ করে যতটুকু আপনি জিজ্ঞেস করেছেন। আমরা আরও দুইটা ইনপুট চালালাম, যেগুলো অনুরোধে ছিল না:

নতুন ইনপুট, একই ফাংশন
'Tk 1,250' -> ValueError: invalid literal for int() with base 10: 'Tk 1250'
'৳ 1,250.50' -> ValueError: invalid literal for int() with base 10: '1250.50'

দুটোতেই crash। এটা AI-এর দোষ না, আমরা এসব বলিনি। আপনার আসল ডেটাবেসে দাম কী কী রূপে আছে, একবার দেখে নিন, আর সেগুলো অনুরোধ ও টেস্টে যোগ করুন।

মূল উৎস

  • Simon Willison, Here’s how I use LLMs to help me write code (মার্চ ২০২৫): context-এর গুরুত্ব, নতুন কথোপকথন, আর AI-এর কোড পরীক্ষা করা।
  • GitHub Docs, Best practices for using GitHub Copilot: কাজ ভেঙে বলা, উদাহরণ দেওয়া, আর AI-এর কোড টেস্ট দিয়ে যাচাই।

স্ক্রিনশট ও ধাপ যাচাই করা হয়েছে: । AI-এর উত্তর ভুল হতে পারে। টাকা, স্বাস্থ্য, আইন বা পরীক্ষার মতো জরুরি বিষয়ে সবসময় মূল উৎস বা বিশেষজ্ঞের সাথে মিলিয়ে নিন। নিজের পাসওয়ার্ড, পিন, এনআইডি বা ব্যাংকের তথ্য কোনো AI-কে দেবেন না।

পরের লেখা
সাইবার নিরাপত্তা ও AIAI দিয়ে কোডের নিরাপত্তা পরীক্ষা: SQL injection ধরা