ভূমিকা: কোড আপনার মেজাজ নিয়ে যায় না
বড় ভাষার মডেল এবং কোড সম্পর্কে বিবেচ্য বিষয় হল: তারা অত্যন্ত আত্মবিশ্বাসী এবং আপনার প্রোগ্রাম কম্পাইল হয় কিনা তাতে একেবারেই উদাসীন। Claude Haiku 4.5 আনন্দের সঙ্গে আপনার সমস্যার সমাধান করার জন্য একটি পাইটন স্ক্রিপ্ট লিখবে, সঙ্গে দুটি নতুন সমাধানও, খেলার নামে। কৌশল — একমাত্র গুরুত্বপূর্ণ কৌশল — হল কীভাবে Claude Haiku 4.5 কে সঠিক কোড তৈরি করার জন্য এমনভাবে প্রম্পট দিতে হয় যাতে কোনো অপ্রয়োজনীয় আবেগ না থাকে এবং সর্বোচ্চ সত্যতা থাকে। আপনি এমন প্রোজ লেখতে চাননা যা কোডের মত শোনায়, বরং এমন কোড চান যা কোডের মতো আচরণ করে। এটা দুটির মধ্যে পার্থক্য।
মানুষ প্রম্পটিংকে যাদুকরী মন্ত্রপাঠের মতো ধরে নেয়—সঠিক শব্দ বলো, একদম নিখুঁত অ্যাপ পাবো। এটি কার্গো কাল্ট চিন্তা। কোড হল একটি চুক্তি। Claude Haiku থেকে নির্ভুলতা পেতে হলে আপনাকে চুক্তি লিখতে হবে। “একটি ওয়েব অ্যাপ তৈরি কর” চুক্তি নয়। “Python 3.12 এর FastAPI endpoint তৈরি কর যা JSON গ্রহণ করে, Pydantic v2 দিয়ে স্কিমা যাচাই করে, এবং স্কিমা ত্রুটিতে 422 নির্দিষ্ট পে’লোড ফরম্যাটে রিটার্ন করে” এমন চুক্তি। এর মাধ্যমে Claude Haiku 4.5 কে সঠিক কোড জেনারেশনের জন্য প্রম্পট দিতে হয়: চুক্তি নির্ধারণ কর।
এটা কী (এবং কী নয়)
- এটি Claude Haiku 4.5 থেকে নির্ভরযোগ্য, পরীক্ষা করা কোড পাওয়ার জন্য একটি কিভাবে-করতে হয় নির্দেশিকা।
- এটি “AI ডেভেলপারদের পরিবর্তন করবে” এমন উপদেশ নয়। টুল চিন্তা প্রতিস্থাপন করে না।
- এটি ব্যবহারিক প্রম্পট, গঠন, এবং গার্ডরেইলগুলোর উপর ফোকাস করে: সেই বিরক্তিকর অংশ যা জাদু কাজ করে।
আপনি যেই কোড চালাতে চান, Claude কে চালানোর সঠিক সংজ্ঞা দিতে হবে। সঠিক কোড তৈরি করতে সঠিক সংজ্ঞা পরিস্কার, পরীক্ষনযোগ্য ভাষায় দিতে হবে। এটাই পুরো খেলা।
সঠিকতাকে একজন আইনজীবীর মতো সংজ্ঞায়িত করুন, কবির মতো নয়
“সঠিক” কোড মানে “বর্ণনায় মনে হয় সঠিক” কোড নয়। সঠিকতা হল:
- সিন্ট্যাকটিক ভ্যালিডিটি: কোড কম্পাইল হয় বা ইন্টারপ্রেটারে চলে।
- সেম্যান্টিক বিশ্বস্ততা: কোড স্পেসিফিকেশন অনুযায়ী কাজ করে।
- ডিটারমিনিস্টিক আচরণ: একি ইনপুটে একি আউটপুট, নির্ধারিত ত্রুটি সীমানার মধ্যে।
- ভার্সন সঠিকতা: সঠিক SDK, API ভার্সন, এবং ভাষার ফিচার ব্যবহার।
Claude আপনাকে যা চান তাই দিবে। যদি বলেন “একটি লিস্ট সাজানোর ফাংশন লিখো,”তো সম্ভবত দেবে। কিন্তু “Timsort সেমান্টিক্স সহ O(1) অতিরিক্ত স্পেস ব্যবহার করে স্থিতিশীল ইন-প্লেস সাজানো” বলতে হলে অন্য একটি চুক্তি। “Claude Haiku 4.5 কে সঠিক কোড তৈরির জন্য কীভাবে প্রম্পট করতে হয়” শুরু হয় এই প্রতিশ্রুতি প্রম্পট লেখার মাধ্যমে।
ন্যূনতম কার্যকর প্রম্পট, উন্নত সংস্করণ
খারাপ: “টাস্কের জন্য Node API লিখো।”
ভালো: “Node 20 Express 4 API লিখো একটি /tasks POST রুট নিয়ে যা ফিল্ড যাচাই করে {title: string, dueDate: ISO 8601} এবং 201 রেসপন্স করে তৈরি অবজেক্ট সহ অথবা 400 রেসপন্স করে ত্রুটি বিস্তারিত সহ।”
ঠিক: “একটি Node 20 Express 4 সার্ভার তৈরি কর যেখানে একটি একক /tasks POST এন্ডপয়েন্ট আছে। শর্তাবলী: 1) [email protected] দিয়ে বডি যাচাই; 2) ফিল্ড: title (খালি নয় এমন স্ট্রিং, সর্বোচ্চ ১৪০), dueDate (ISO 8601 ভবিষ্যতের তারিখ); 3) সফল হলে 201 সাথে {id: ULID, title, dueDate} রিটার্ন; 4) ভুল হলে 400 সাথে {error: 'VALIDATION', details: array}; 5) ডাটাবেস নয়; ইন-মেমোরি Map; 6) Jest 29 টেস্ট ফাইল অন্তর্ভুক্ত যা বৈধ এবং অবৈধ (খালি title, অতীত তারিখ) কভার করে; 7) npm স্ক্রিপ্ট টেস্ট এবং ডেভের জন্য; 8) ESM ব্যবহার; 9) অতিরিক্ত মন্তব্য অন্তর্ভুক্ত করবেন না।” দেখুন গঠন: ভাষার সংস্করণ, লাইব্রেরি, সীমাবদ্ধতা, আউটপুট, ত্রুটি, টেস্ট, এবং প্যাকেজের গঠন। আপনি অস্পষ্টতা দূর করেছেন। Claude এর কাজ কোড পূরণ করা, চাহিদা নয়।
স্ক্যাফোল্ডিং প্যাটার্ন: সিস্টেম, স্পেসিফিকেশন, টেস্ট, তারপর কোড
Claude Haiku 4.5 থেকে সঠিক কোড পেতে হলে এটি একটি রানওয়ে দিতে হবে:
- সিস্টেম ফ্রেমিং (ছোট লাশ)
- আপনি: “আপনি Node 20 এর প্রোডাকশন কোয়ালিটির টাইপস্ক্রিপ্ট লিখছেন। শুধুমাত্র কোড ব্লক filename সহ আউটপুট দিন, অন্য কিছু নয়।”
- কারণ: আপনি টোন এবং আউটপুট ফরম্যাট নিয়ন্ত্রণ করেন। ভাগ্য ছেড়ে দেবেন না।
- ভাষার সংস্করণ, প্যাকেজ পছন্দ, ত্রুটি অর্থ, I/O ফরম্যাট, পারফরম্যান্স সীমা, এবং নিরাপত্তা শর্তাবলী অন্তর্ভুক্ত করুন।
- Claude কে প্রথমে ইউনিট টেস্ট লিখতে বলুন। টেস্টগুলি “সঠিক” সংজ্ঞা দেয় বিশেষণ ছাড়া। যদি কোডের একটি লাইন টেস্টে সেবা না করে, তা শুধুমাত্র অলংকরণ।
- শুধুমাত্র টেস্টের পরে। হ্যাঁ, এটি প্রায় TDD, কিন্তু একটি রোবটের সাথে যে কখনো বোর হয় না প্যাকেজিং লিখতে।
- পুনরায় চালানোর জন্য নির্দেশনা
- “যদি টেস্ট ব্যর্থ হয় বা ইমপোর্ট মেলেনা, কেবল ব্যর্থ অংশ আপডেট করুন। পুরো প্রকল্প পুনরায় লিখবেন না।”
Claude ভাল কাজ করে যখন এর কাছে প্রসঙ্গ এবং রেল থাকে। এটা দিন।
ভার্সন পিনিং ঐচ্ছিক নয়
Claude এর প্রশিক্ষণ তথ্য পুরনো ও নতুন গুরুত্বপূর্ণ ডকুমেন্ট নিয়ে ভরা। এর মানে হল এটি অনেক বিরোধপূর্ণ পরামর্শ দেখেছে। “React Router ব্যবহার করুন” অস্পষ্ট। “[email protected] ডেটা রাউটার নিয়ে ব্যবহার করুন” স্পষ্ট নির্দেশনা। ডিফল্ট এ বিশ্বাস করবেন না: - ভাষা: Python 3.12, Node 20, Go 1.22, Java 21 এমন সংস্করণ নির্ধারণ করুন যা আপনি প্রকৃত চালাচ্ছেন।
- ফ্রেমওয়ার্ক: সঠিক প্রধান সংস্করণ এবং যেকোন ব্রেকিং-চেঞ্জ ফ্ল্যাগ উল্লেখ করুন।
- ক্লাউড SDK: সংস্করণ পিন করুন; aws-sdk v2 বনাম v3 পার্থক্য করো।
- লিন্টার/ফরম্যাটার: নিয়ম নির্ধারণ করুন যাতে 'স্টাইল পিং-পং' পুনর্লিখন এড়ায়।
যদি পিন না করেন, পাঁচ বছরের ব্লগ পোস্ট সমন্বয়ে একটি মোটামুটি সংগৃহীত সংস্করণ পাবেন। সঠিক কোড জেনারেশন অতীতের প্রতি সংবেদনশীল নয়।
প্রথমেই স্কিমা, সবসময়
“ব্যবহারকারী প্রোফাইল” স্ট্রাকচার চাওয়া বন্ধ করুন। প্রম্পটে স্কিমা ব্যাখ্যা করুন এবং যাচাই নিশ্চয়তা দিন:
- জেসন স্কিমা অথবা Zod/Yup টাইপ জাভাস্ক্রিপ্ট/টাইপস্ক্রিপ্ট-এ
- সার্ভিসে Protobuf বা Avro
তারপর Claude কে স্কিমাগুলো সীমান্তে প্রয়োগ করতে বলুন — API ইনপুট, ডাটাবেস লেখার সময়, এবং মেসেজ কিউ। স্পষ্ট ত্রুটি পে’লোড এবং কোড আবশ্যক। সঠিকতা স্কিমা পছন্দ করে। অস্পষ্টতা নয়।
পর্যবেক্ষণযোগ্য করুন, অথবা বাস্তব ভান করবেন না
Claude কে লগিং, মেট্রিক্স, এবং ট্রেসিং যুক্ত করতে বলুন যেখানে দরকার - এবং যেখানে দরকার নেই সেখানে শান্ত থাকতে বলুন। ভাল প্রম্পটে থাকবে:
- লগিং নীতি: স্তর, ব্যক্তিগত তথ্য লুকানো, গঠন (দয়া করে JSON লগ)
- মেট্রিক্স: অনুরোধ প্রতি সময়, ত্রুটি গণনা
- স্বাস্থ্য পরীক্ষা পয়েন্ট: /healthz যা প্রমাণ করে নির্ভরযোগ্যতা আছে
Claude যা বলেন তাই যোগ করবে। না বললে আপনি প্রিন্ট স্টেটমেন্ট পাবেন — সর্বোচ্চ সৌভাগ্যবশত।
টেস্ট-ফার্স্ট প্রম্পট “বিশ্বাস রাখো” এর চেয়ে উত্তম
Claude Haiku 4.5 কে সঠিক কোড তৈরির জন্য ভাল উপায় হল টেস্টকে সত্যির উৎস বানানো। উদাহরণ:
“normalize_email(s) ফাংশনের pytest টেস্ট লিখো যা:
- লোকাল এবং ডোমেন অংশকে ছোট হাতের বানানে রূপান্তর করে;
- শুধুমাত্র gmail.com এর লোকাল অংশ থেকে ডট রিমুভ করে;
- শুধুমাত্র gmail.com এ সাবঅ্যাড্রেস (+tag) রিমুভ করে;
- একটিমাত্র @ না থাকা অথবা স্পেস থাকা ইনপুট গ্রহণ করে না;
- ইউনিকোড ডোমেন পুনি-কোড অপরিবর্তিত রাখে।
এজ কেসগুলি কভার করো। টেস্ট লেখার পরে ফাংশনকে তাতে সঠিক করে বাস্তবায়ন করো।”
Claude প্রায়ই বর্ণিত টেস্ট পূরণ করতে বাধ্য হলে ভাল কোড লিখে। যদি না পারে, তখন আপনার কাছে একটি স্পষ্ট ব্যর্থতা থাকবে, না যে মেজাজের তর্ক।
হ্যালুসিনেশন নির্মাণের মাধ্যমে এড়ানো
আপনি হ্যালুসিনেশন পুরোপুরি নির্মূল করতে পারবেন না, কিন্তু সীমাবদ্ধ করতে পারবেন:
- উৎস বা URL চাওয়া যখন উৎস থাক, তখনই চাও। SDK মেথডের জন্য ডক লিংক চাও, এবং কোড সেই ডকের সঙ্গে মেলে কি না নিশ্চিত করো।
- প্রাইভেট API এর জন্য স্পেসিফিকেশন প্রম্পটে পেস্ট করো। Claude আপনার অভ্যন্তরীণ এন্ডপয়েন্ট জানবে না বলে প্রত্যাশা করবেন না।
- বিভ্রান্তিকর API এর লাইব্রেরির জন্য অফিসিয়াল ডকুমেন্টের উদাহরণসহ একটি স্নিপেট অন্তর্ভুক্ত করো এবং Claude কে অনুগত থাকতে বলো।
সঠিক কোড মানে সঠিক রেফারেন্স। Claude কে রেফারেন্স দাও।
স্টাইল গাইড: সবচেয়ে কম আকর্ষণীয়, সবচেয়ে দরকারী বিষয়
Claude কোড লিখে নিজেকে অনুমানকৃত স্টাইলে। এটি চক্র তৈরির কারণ। স্টাইল গাইড পেস্ট করো। নির্দেশ করো:
- ফরম্যাটিং (Prettier, Black, gofmt ডিফল্ট)
- ত্রুটি মোকাবেলা প্যাটার্ন
এছাড়াও অপ্রসঙ্গ মন্তব্যের জন্য একটি সংক্ষিপ্ত কারণ চাও। ভবিষ্যতের আপনি আপনাকে ধন্যবাদ জানাবে, এবং বর্তমান Claude কম “ফিক্স-আপ” PR তৈরি করবে।
দীর্ঘ প্রম্পট, সংক্ষিপ্ত আউটপুট
Claude Haiku 4.5 থেকে সঠিক কোড পেতে আরেকভাবে ভাবুন: প্রম্পটে আপনার শব্দ ব্যয় করো, আউটপুটে নয়। আপনি চান:
- প্রম্পটে বিস্তৃত সীমাবদ্ধতা
- আউটপুটে ন্যূনতম অতিরিক্ত বর্ণনা
একে ব্যাখ্যা দমনে বলুন এবং শুধু কোড ব্লক (filename সহ) এবং সংক্ষিপ্ত README ফিরিয়ে দিন। মন্তব্য চাইলে আলাদা চালনায় বলুন। প্রোজ এবং কোড মিশালে বাগ চুপচাপ এলোমেলো হয়।
পরিশোধন: কার্যকর টাইট লুপ
নির্ভরযোগ্য কোডের দ্রুততম পথ হল “প্রথম ট্রাইতেই সবার সঠিক” নয়। এটি হলো ছোট, সঠিক সংশোধনী চক্র:
- লোকালি চালাও। ব্যর্থ টেস্ট আউটপুট এবং কম্পাইলার ত্রুটি Claude এর কাছে অক্ষরে অক্ষরে পেস্ট করো।
- নির্দেশ দাও: “শুধুমাত্র প্রয়োজনীয় লাইনে পরিবর্তন করো; ব্যর্থ টেস্ট দাবি না করলে ফাংশন সিগনেচার বদলিও করো না।”
- সবুজ হওয়া পর্যন্ত পুনরাবৃত্তি করো।
Claude অপরিহার্যভাবে ডিফ প্রয়োগে দক্ষ যখন আপনি নির্দিষ্ট করেন কী ভেঙেছে। ব্যর্থতা লগের প্যারাফ্রেজ করবেন না। সেগুলো পেস্ট করুন। লগ সত্য।
নিরাপত্তা একটি ফিচার, পোস্টস্ক্রিপ্ট নয়
মডেলগুলো পাবলিক কোডে (ভালো, খারাপ, এবং অভিশপ্ত) প্রশিক্ষিত, তাই নিরাপত্তাকে প্রথম শ্রেণির শর্তাবলীতে নেওয়া জরুরি:
- eval, shell=True, এবং স্ট্রিং-টাইপ SQL স্পষ্টভাবে নিষিদ্ধ করো
- প্যারামিটারাইজড কোয়েরি, CSRF সুরক্ষা, এবং রেট সীমাবদ্ধতা বাধ্যতামূলক করো
- ডিপেন্ডেন্সি পিনিং এবং লকফাইল চাও
- সিক্রেট ব্যবস্থাপনায় এনভায়রনমেন্ট ভেরিয়েবল বা সিক্রেট ম্যানেজার ব্যবহার বাধ্যতামূলক করো
সুরক্ষিত-বাই-ডিফল্ট প্রম্পট নিরাপদ কোড দেয়। “পরে প্যাচ করব” প্রম্পট খবরের শিরোনাম দেয়।
পারফরম্যান্স: “দ্রুত” মানে বলুন
“দ্রুত কর” মানে “যেকোনো কিছুকে” নির্দেশ দেয়। বদলে, মেট্রিক নির্দিষ্ট করো:
- ল্যাটেন্সি লক্ষ্য (p95 < 50ms মেমোরি, p95 < 300ms ডাটাবেস অপারেশন)
- মেমোরি সীমা (RSS < 150MB)
- সময় জটিলতা (O(n log n) হতে হবে, O(n^2) নয়)
Claude এমন অ্যালগোরিদম বেছে নেবে যা নির্ধারিত বাজেটের মধ্যে থাকে। বাজেট দাও।
ডকুমেন্টেশন: এক অচেনা লোককে অনবোর্ড করার জন্য যথেষ্ট
Claude কে এমন README বলো যাতে থাকে:
- সেটআপ নির্দেশনা সঠিক সংস্করণ সহ
- টেস্ট, লিন্ট, টাইপচেক, রান করার কমান্ড
- সীমাবদ্ধতা এবং পরিচিত ট্রেডঅফ
“সঠিক কোড” এর মধ্যে সঠিক ডকুমেন্টেশনও থাকে। তা ডেলিভারির অংশ।
কনক্রিট প্রম্পট টেমপ্লেট যা আপনি চুরি করতে পারেন
টেমপ্লেট: ব্যাকএন্ড এন্ডপয়েন্ট
সিস্টেম: আপনি একটি যত্নশীল Python 3.12 ইঞ্জিনিয়ার। শুধুমাত্র filename সহ কোড ব্লক আউটপুট কর।
ব্যবহারকারী:
- FastAPI 0.111 অ্যাপ তৈরি কর একটি POST /convert এন্ডপয়েন্ট সহ।
- অনুরোধ: {amount: Decimal স্ট্রিং হিসেবে, from: 'USD'|'EUR', to: একই}.
- pydantic v2 দিয়ে যাচাই করো; স্কিমা ভুল হলে 422 রিটার্ন করো।
- convert(amount, from, to) একটি পিউর ফাংশন ব্যবহার করো যেখানে রেট {USD:1, EUR:1.1} নির্দিষ্ট।
- 200 সহ {amount: স্ট্রিং, currency: স্ট্রিং} রিটার্ন করো।
- pytest টেস্ট অন্তর্ভুক্ত করো যা বৈধ, অবৈধ (ভুল দশমিক, অজানা কোড), এবং প্রান্ত (0) কভার করে।
- pyproject.toml প্রদান করো, নির্ভরতা পিনিং সহ; ruff এবং mypy কনফিগ অন্তর্ভুক্ত করো।
- নেটওয়ার্ক কল নয়, মন্তব্য নয়।
টেমপ্লেট: CLI ইউটিলিটি
সিস্টেম: আপনি Go 1.22 লিখছেন। শুধুমাত্র filename সহ কোড ব্লক আউটপুট কর।
ব্যবহারকারী:
- slugify নামের একটি CLI তৈরি কর যা stdin পড়ে এবং URL-সেফ স্লাগ প্রিন্ট করে।
- নিয়ম: ছোট হাতের, ASCII-শুধুমাত্র, হাইফেন বিভাগ, স্পেস একত্রিত করো, পঙ্কচুয়েশন সরাও।
- main.go এবং slugify_test.go টেবিল টেস্ট সহ প্রদান কর।
- শুধুমাত্র Go stdlib ব্যবহার কর।
- Makefile অন্তর্ভুক্ত করো টেস্ট এবং বিল্ড টার্গেট সহ।
টেমপ্লেট: ফ্রন্টএন্ড কম্পোনেন্ট
সিস্টেম: আপনি React 18 + TypeScript লক্ষ্য করে একটি বাস্তববাদী React ইঞ্জিনিয়ার।
ব্যবহারকারী:
- একটি <DebouncedInput> কম্পোনেন্ট বাস্তবায়ন কর।
- প্রপস: value: string, onChange(value): void, delay=300।
- useRef/useEffect ব্যবহার কর; তৃতীয় পক্ষের হুক নয়।
- ভিটেস্ট টেস্ট সহ ফেক টাইমার অন্তর্ভুক্ত করো।
- ন্যূনতম স্টোরিবুক গল্প প্রদান করো।
এগুলি দেখায় কীভাবে Claude Haiku 4.5 কে সঠিক কোড তৈরি করতে প্রম্পট দিতে হয় ভার্সন পিনিং, আচরণ সংজ্ঞা, এবং টেস্ট দাবি করে।
বুদ্ধিমত্তা দেখানোর অস্বীকার: কখন বলবেন “অপটিমাইজ করো না”
আপনি অগ্রিম ক্ষুদ্র-অপ্টিমাইজেশন চাইবেন না (এবং প্রায়ই না), তা হলে বলুন:
- “বুদ্ধিমত্তার চেয়ে পাঠযোগ্যতাকে প্রাধান্য দিন; টেস্ট না চাইলে বিট-টুইডলিং নেই।”
- “পুনরাবৃত্তি না, যদি ইতরেটিভ পরিষ্কার হয়।”
- “মেটাপ্রোগ্রামিং নয়; স্পষ্ট > আক্ষরিক।”
Claude ইমপ্রেস করতে ভালবাসে। তাকে বাধা দিন। টেস্ট পাস করাকেই ইমপ্রেসিভ মনে করুন।
Sider.AI কর্মপ্রবাহে, যেখানে এটি প্রকৃতপক্ষে সহায়ক আমি দেখেছি মানুষ প্রম্পটগুলো এলোমেলো চ্যাট ট্যাবগুলোতে গ্রেপ্তারে ঝুঁকছে যেন এটি কোনও উৎপাদনশীলতার রীতি। এমন একটি ওয়ার্কস্পেস ব্যবহার করুন যা কোড প্রসঙ্গ বুঝতে পারে। যেমন Sider.AI, যা আপনার স্পেসিফিকেশন, কোড, ডিফ, এবং টেস্ট লগগুলো দৃশ্যে রাখে, তাই “ত্রুটি পেস্ট করো, লাইন ঠিক করো” লুপটা আসলেই ঘন হয়। এটি জাদু নয়; এটা বিরক্তিকর স্ক্যাফোল্ডিং যা পটভূমি হারানো থেকে রক্ষা করে। যদি আপনার টুল চুক্তি, টেস্ট, এবং কোড একই কথোপকথনে রাখে—বিনা কনফেটির বিরক্তি ছাড়াই—তাহলে সেটি ব্যবহার করুন। Sider করে। Claude কে ওরাকল হিসেবে নয়, টিমমেট হিসেবে ডিবাগ করার পদ্ধতি
- ব্যর্থ টেস্ট আউটপুট ঠিক যেমন আছে পেস্ট করুন। সারাংশ করবেন না।
- ডিফ চাও: “শুধুমাত্র ফাইল X এর বিরুদ্ধে ইউনিফাইড ডিফ দিয়ে উত্তর দাও।”
- রানটাইম বাগের জন্য, সবচেয়ে ছোট পুনরুত্পাদনযোগ্য স্নিপেট যোগ করো এবং ব্যাখ্যা ও প্যাচ চাও।
- লাইব্রেরি ত্রুটির জন্য যে ডক অংশ প্রযোজ্য মনে হয় সেটি পেস্ট করো এবং জিজ্ঞাসা করো: “এটি ভার্সন X এর সঠিক API? না হলে কোড আপডেট করো এবং সঠিক অংশ উল্লেখ করো।”
লক্ষ্য হল Claude কে প্রমাণ নিয়ে বিতর্ক করতে বাধ্য করা। আপনি প্রমাণ আনুন।
পরিহারযোগ্য যোগাযোগ (এবং কিভাবে এড়াবেন)
- “সর্বশেষ” API ফাঁদ: বলবেন না “সর্বশেষ ব্যবহার করুন।” বলবেন “সংস্করণ X.Y ব্যবহার করুন” এবং এটিই অনুসরণ করুন।
- ফাঁকা টেস্ট ফাইল: যদি না টেস্ট দাবি করেন, পাবেন না।
- একক প্রচেষ্টা ভুল: দু-তিনটি সংক্ষিপ্ত পরিমার্জনের পরিকল্পনা করো। এক বড় প্রম্পটের চেয়ে দ্রুত।
- অস্পষ্ট ত্রুটি নীতি: স্ট্যাটাস কোড এবং পে’লোড নির্ধারণ করো। “ত্রুটি রিটার্ন করো” অর্থহীন।
- অধিকৃত ডিপেন্ডেন্সি: যদি কোড এমন সার্ভিসের ওপর নির্ভর করে যা আপনি নিয়ন্ত্রণ করতে পারেন না, স্টাব তৈরি করো। নকল চাও।
আপনার প্রম্পট চেকলিস্ট (মনিটরের কাছে টেপ দাও)
- ভাষা ও রানটাইম সংস্করণ পিন করা আছে
- লাইব্রেরি সংস্করণ পিন করা আছে
- ত্রুটি অর্থ সংজ্ঞায়িত (কোড, ফরম্যাট)
- নিরাপত্তা শর্তাবলী স্পষ্ট
- পারফরম্যান্স বাজেট নির্দিষ্ট
- আউটপুট ফরম্যাট নির্ধারিত (filename, কোড ব্লক, ডিফ)
- সংক্ষিপ্ত পুনরাবৃত্তি লুপ, লগ পেস্টসহ
যদি আপনি এগুলো দশটি পূরণ করেন, Claude Haiku 4.5 সাধারণত এমন সঠিক কোড জেনারেশন দেয় যা বাস্তবে টিকে থাকে।
একটি কার্যকর উদাহরণ: অস্পষ্ট থেকে যাচাইকৃত
অস্পষ্ট প্রম্পট: “এমন একটি ফাংশন লিখো যা সিএসভি সুরক্ষিতভাবে পার্স করে।”
ফলাফল: সম্ভবত ঠিক, সম্ভবত ভুল, নিশ্চিতভাবে অটেস্ট করা হয়নি।
নির্দিষ্ট প্রম্পট:
“আপনি Python 3.12 লিখছেন। শুধুমাত্র filename সহ কোড ব্লক আউটপুট করো। csvsafe/init.py এবং csvsafe/reader.py তৈরি করো একটি read_rows(path: Path) -> list[dict[str,str]] ফাংশন নিয়ে। শর্ত: csv.DictReader ব্যবহার করো newline='' এবং encoding='utf-8' সহ; null বাইট নিষিদ্ধ; 10MB এর বেশি ফাইল প্রত্যাখ্যান; কলাম সংখ্যা 100 সীমাবদ্ধ; BOM সরাও; ফাঁকা সেল ফাঁকা স্ট্রিং হিসেবে গণ্য; ValueError ত্রুটি উত্থাপন যার বার্তা কোড {FILE_TOO_LARGE, NULL_BYTE, TOO_MANY_COLUMNS}। tests/test_reader.py তে pytest টেস্ট অন্তর্ভুক্ত করো যা সুখদ পথ, null বাইট, 11MB ফাইল, 101 কলাম, এবং BOM হ্যান্ডলিং কভার করে। pyproject.toml প্রদান করো নির্ভরতা পিন সহ এবং black কনফিগ সহ।”
আপনি পাবেন কোড, টেস্ট, এবং প্রান্তের অবস্থা হ্যান্ডলিং। তারপর টেস্ট চালাও, ব্যর্থতা পেস্ট করো, এবং ছোট ডিফ সঙ্গে পুনরাবৃত্তি করো। এটাই বাস্তবে সঠিক কোড জেনারেশন।
“সৃজনশীলতা” এবং অন্যান্য মার্কেটিং শব্দ
আমার সৃজনশীল কোডের দরকার নেই, আমার সঠিক কোড দরকার। সৃজনশীলতা আপনার বিড়ালের নামকরণের জন্য সংরক্ষণ করুন। Claude কে প্রম্পট করার সময় সৃজনশীলতা সূচক হবে শক্তিশালী সীমাবদ্ধতা থেকে উৎপন্ন। সঠিক টেস্ট এবং স্পষ্ট স্পেসিফিকেশন থেকে আসে সুচিময় সমাধান। ভুল প্রম্পট থেকে আসে “ইমোজি দিয়ে নতুন বেস64।” লোভ দেখাবেন না।
অগোপন রহস্য
Claude Haiku 4.5 কে সঠিক কোড তৈরির জন্য প্রম্পট করার পদ্ধতি হল একঘেয়ে: আপনি যা চান তা লিখুন, সংস্করণ পিন করুন, স্কিমা সংজ্ঞায়িত করুন, টেস্ট দাবি করুন, এবং বাস্তব ব্যর্থতার মাধ্যমে পুনরাবৃত্তি করুন। এটাই সব। কোনো জনকীয়তা নেই। শুধু প্রকৌশল শৃঙ্খলা, একটি মডেল যা খুব দ্রুত টাইপ করতে পারে এবং একই রকম টেস্ট প্রায় পনেরোটি বার লিখতেও সমস্যা করে না।
এটাই মোড়, সঠিকতা অপ্রফুল্ল। কাজ করে এমন প্রম্পটগুলো TSA চেকলিস্টের মতো পড়ে। চালানো কোড এমন মনে হয় যেন একজন যত্নবান মানুষ লিখেছে। আপনি পেতে পারেন উভয়ই যদি মডেলকে এমন এক জুনিয়র ইঞ্জিনিয়ারের মতো বিবেচনা করেন যে স্পষ্ট দাবির দ্বারা উন্নতি পায় এবং অস্পষ্ট নির্দেশে দূর্বল হয়। তাকে চুক্তি দিন। টেস্ট পাস করান। তারপর হয়তো আপনি তাকে বিশ্বাস করতে পারবেন—যেমন একটি টুলকে বিশ্বাস করা হয়, একজন ভবিষ্যদ্বক্তাকে নয়।
সমাপ্তি: কম জাদু, বেশি ওয়ারেন্টি
যদি আপনি জাদু চান, তো একটি ম্যাজিক শোতে যান। যদি আপনি এমন সফটওয়্যার চান যা কম্পাইল হয় এবং আচরণ করে, তো প্রম্পট লেখুন যেগুলো ওয়ারেন্টির মতো কাজ করে। কীভাবে Claude Haiku 4.5 কে সঠিক কোড তৈরির জন্য প্রম্পট দিতে হয় তা ফুলেল বাক্য বা গোপন কীওয়ার্ড নিয়ে নয়। এটি সীমাবদ্ধতা, টেস্ট, সংস্করণ, এবং প্রতিক্রিয়া লুপ নিয়ে। এই চারটি কাজ করুন, আপনি এমন কোড পাবেন যা চলে। এড়িয়ে গেলে, আপনি পাবেন সুন্দরভাবে ফরম্যাট করা গল্প।
কোড আপনার অনুভূতি নিয়ে মাথা ঘামায় না। ভালো কথা, পরীক্ষাও (tests) তা করে না।
প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
প্রশ্ন ১: নির্ভুল কোড জেনারেশনের জন্য Claude Haiku 4.5 কে প্রম্পট করার সবচেয়ে সহজ উপায় কী?
বিষয়টিকে একটি চুক্তির মতো বিবেচনা করুন: সংস্করণ পিন করুন, স্কিমা সংজ্ঞায়িত করুন, ত্রুটি ফরম্যাট নির্দিষ্ট করুন এবং প্রথমে পরীক্ষার (tests) প্রয়োজনীয়তা দিন। সীমাবদ্ধতা যত স্পষ্ট হবে, কোড তত নির্ভুল হবে।
প্রশ্ন ২: Claude যখন কোড লেখে, তখন ভুলভাল (hallucinations) করার প্রবণতা আমি কীভাবে কমাব?
প্রামাণিক ডকুমেন্ট বা স্পেসিফিকেশন পেস্ট করুন এবং সেই API গুলোর যথাযথ আনুগত্যের দাবি করুন। ব্যক্তিগত এন্ডপয়েন্টের জন্য, আপনার নিজস্ব স্পেসিফিকেশন অন্তর্ভুক্ত করুন—এটি অনুমান করবে আশা করবেন না।
প্রশ্ন ৩: আমার কি Claude-কে পরীক্ষার (tests) জন্য জিজ্ঞাসা করা উচিত নাকি সেগুলি নিজে লেখা উচিত?
প্রথমে Claude-কে পরীক্ষা (tests) তৈরি করতে বলুন, তারপর সেগুলি পূরণ করার জন্য কোড বাস্তবায়ন করুন। পরীক্ষাগুলি (tests) বিশেষণগুলির চেয়ে ভালোভাবে নির্ভুলতা সংজ্ঞায়িত করে এবং মডেলটিকে সৎ রাখে।
প্রশ্ন ৪: প্রম্পটে সংস্করণ পিনিং কতটা নির্দিষ্ট হওয়া উচিত?
খুব নির্দিষ্ট: ভাষা রানটাইম, ফ্রেমওয়ার্ক মেজর/মাইনর এবং SDK সংস্করণ। "সর্বশেষ" পরস্পরবিরোধী প্যাটার্নকে আমন্ত্রণ জানায়; নির্ভুলতা স্থিতিশীল লক্ষ্যের উপর নির্ভর করে।
প্রশ্ন ৫: নির্ভুল কোডের জন্য প্রম্পটিংয়ের ক্ষেত্রে Sider.AI কোথায় ফিট করে?
স্পেক্স, কোড, ডিফস এবং পরীক্ষার লগ (test logs) একটি লুপে রাখার জন্য Sider.AI ব্যবহার করুন। এটি কোনো জাদু করে না—এটি কেবল প্রসঙ্গ সংরক্ষণ করে যাতে Claude-এর সমাধানগুলি আপনার প্রকৃত ব্যর্থতাগুলি ট্র্যাক করে।