লাভ:
- একটি কোডিং সহকারী কীভাবে ভাষা মডেল হিসাবে কাজ করে এবং টোকেন, প্রসঙ্গ উইন্ডো, হ্যালুসিনেশনের ধারণাগুলি ব্যাখ্যা করার ক্ষমতা
- সফ্টওয়্যার কাজগুলিকে আলাদা করার ক্ষমতা যেখানে AI একটি মানসিক মানচিত্র সহ শক্তিশালী এবং দুর্বল
- তাদের নিজস্ব কাজের জন্য প্রস্তাব-উৎপাদন-যাচাইয়ের মৌলিক কাজ চক্র প্রয়োগ করার ক্ষমতা
একজন সফ্টওয়্যার ডেভেলপারের দিন খুব কমই কাটে "শুরু থেকে কোড লেখার জন্য।" বাস্তব সময়; অন্য কারো দ্বারা লেখা কোড পড়া, একটি বাগ পুনরুত্পাদন করার চেষ্টা করা, লগ স্ক্যান করা (চলানোর সময় অ্যাপ্লিকেশন দ্বারা উত্পাদিত লগ লাইন), পরীক্ষা লেখা, একটি PR লেখা (টান অনুরোধ - একটি মার্জ অনুরোধ যেখানে একটি কোড পরিবর্তন টিম পর্যালোচনার জন্য জমা দেওয়া হয়) ব্যাখ্যা এবং ডকুমেন্টেশন আপডেট করা। কৃত্রিম বুদ্ধিমত্তা (AI) হল একটি গতি গুণক যা এই অদেখা কাজগুলির প্রায় সবগুলিকে স্পর্শ করতে পারে৷ তবে নিরাপদে ব্যবহার করার প্রথম শর্ত হল এটি কী এবং কী নয় তা সঠিকভাবে বোঝা।
এই ইউনিটে, আমরা প্রথমে সাধারণ ভাষায় কোডিং সহকারীর অন্তর্নিহিত প্রযুক্তি ব্যাখ্যা করি; তারপরে আমরা মডেলের শক্তি এবং দুর্বলতাগুলির একটি মানসিক মানচিত্র তৈরি করি; অবশেষে, আমরা মৌলিক কাজের শৃঙ্খলা প্রতিষ্ঠা করি যা আমরা পুরো মডিউল জুড়ে ব্যবহার করব: প্রস্তাব, উত্পাদন, যাচাই করুন। এই তিনটি ধাপই পরবর্তী এগারো ইউনিটের মেরুদণ্ড।
দ্রষ্টব্য: এই মডিউলটি একটি সাধারণ প্রশিক্ষণ। নিরাপত্তা-সমালোচনামূলক সফ্টওয়্যার (পেমেন্ট প্রসেসিং, স্বাস্থ্যসেবা, প্রমাণীকরণ, সমালোচনামূলক অবকাঠামো) AI আউটপুট একজন যোগ্যতাসম্পন্ন প্রকৌশলীর দ্বারা পর্যালোচনা এবং অনুমোদনের বিকল্প নয়। AI একজন সহকারী; স্বাক্ষরকারী হলেন প্রকৌশলী।
একটি কোডিং সহকারী আসলে কি করে?
বেশিরভাগ কোডিং সহকারী একটি বৃহৎ ভাষার মডেলে তৈরি করা হয় (LLM—একটি AI বিপুল পরিমাণ পাঠ্য এবং কোডের উপর প্রশিক্ষিত যা পরবর্তী সম্ভাব্য "খণ্ড"-এর পূর্বাভাস দেয়)। মডেল একটি মানুষের মত কোড "বোঝে না"; এটি উদাহরণগুলির একটি বিশাল পুল থেকে যে নিদর্শনগুলি শিখে তার উপর ভিত্তি করে এটি আপনার দেওয়া প্রসঙ্গটির সর্বাধিক সম্ভাব্য ধারাবাহিকতা তৈরি করে। এই আপাতদৃষ্টিতে সহজ প্রক্রিয়াটি অনুশীলনে আশ্চর্যজনকভাবে দক্ষ ফলাফল দেয় — কারণ বেশিরভাগ সফ্টওয়্যার পুনরাবৃত্তি প্যাটার্ন নিয়ে গঠিত: একটি HTTP অনুরোধ, একটি লুপ, একটি নাল চেক, একটি পরীক্ষার প্যাটার্ন৷
তিনটি পদ এখানে গুরুত্বপূর্ণ। টোকেন হল ক্ষুদ্রতম একক যা মডেল পাঠ্যকে ভাগ করে প্রক্রিয়া করে; এটি মোটামুটি কয়েকটি অক্ষর বা একটি শব্দের অংশ। প্রসঙ্গ উইন্ডোটি হল মডেলটি একবারে "দেখতে" টোকেনের পরিমাণ; আপনার কোড, ত্রুটি বার্তা, এবং নির্দেশ এই উইন্ডোতে ফিট করা আবশ্যক. একটি প্রম্পট হল সমস্ত নির্দেশাবলী এবং প্রসঙ্গ যা আপনি মডেলকে দেন। আপনি যে আউটপুট পাবেন তার গুণমান সরাসরি এই দুটির উপর নির্ভর করে: আপনি মডেলটিকে যত ভাল প্রসঙ্গ এবং স্পষ্ট নির্দেশনা দেবেন, তত ভাল ফলাফল পাবেন। খারাপ ইনপুট খারাপ আউটপুট তৈরি করে, এমনকি যদি এটি একটি স্মার্ট মডেল হয় — সফ্টওয়্যারের ক্লাসিক "গারবেজ ইন, গার্বেজ আউট" নিয়মটি AI-তেও প্রযোজ্য।
শক্তি এবং দুর্বলতা মানচিত্র
AI কে সঠিক কাজের জন্য নির্দেশ করতে, এটি কোথায় জ্বলছে এবং কোথায় হোঁচট খাচ্ছে তা জানা প্রয়োজন। এই মানচিত্রটি মনে রাখা আপনাকে প্রতিটি পরবর্তী মিশনের সাথে অবাক করে দেবে, "আমি কি এই কাজটি AI-তে আউটসোর্স করব নাকি নিজে নিজে করব?" এটি আপনাকে সেকেন্ডের মধ্যে প্রশ্নের উত্তর দিতে দেয়।
এর শক্তিগুলি হল: বয়লারপ্লেট কোড তৈরি করা, একটি ভাষা থেকে অন্য ভাষায় অনুবাদ করা, একটি নিয়মিত অভিব্যক্তি (রেজেক্স) লেখা, একটি ফাংশন বর্ণনা করা, একটি পরীক্ষার কঙ্কাল তৈরি করা, একটি ত্রুটি বার্তা ব্যাখ্যা করা, ডকুমেন্টেশন খসড়া করা, পরিবর্তনশীল/ফাংশনের নাম প্রস্তাব করা, এবং ছোটখাট রিফ্যাক্টরিং (কোডের গঠন পরিবর্তন না করেই কোডের গঠন উন্নত করা)।
দুর্বলতা: আপনার কোম্পানি-নির্দিষ্ট ব্যবসায়িক নিয়মগুলি জানা, আপনার সম্পূর্ণ কোড বেস মনে রাখা, কোডটি আসলে চালানো এবং যাচাই করা, নিশ্চিতভাবে সর্বশেষ লাইব্রেরি সংস্করণগুলি জানা, শতভাগ গ্যারান্টি সহ নিরাপত্তা দুর্বলতা সনাক্ত করা। সবচেয়ে বিপজ্জনক বিষয় হল হ্যালুসিনেশন: মডেলটি খুব বিশ্বাসযোগ্য ভাষায় একটি অস্তিত্বহীন ফাংশন, লাইব্রেরি বা API (ইন্টারফেস যা অ্যাপ্লিকেশনগুলির মধ্যে ডেটা বিনিময় সক্ষম করে) উদ্ভাবন করে। এই ঝুঁকিটি আসলে আপনার সুবিধার দিকে যেতে পারে, যেহেতু কোডটি, প্লেইন টেক্সটের বিপরীতে, এটি "কাজ করে" কিনা তা পরীক্ষা করা যেতে পারে — শুধু যাচাইকরণের ধাপটি এড়িয়ে যাবেন না।
মিশন টাইপ
AI এর ভূমিকা
মানুষের ভূমিকা
বয়লারপ্লেট/কঙ্কাল তৈরি করুন
খসড়া তৈরি করে
মানিয়ে নেয়, পর্যালোচনা করে
কোড বর্ণনা
একটি দ্রুত সারসংক্ষেপ দেয়
কোডের গুরুত্বপূর্ণ অংশ যাচাই করে
লেখার পরীক্ষা
কেস প্রস্তাব
কভারেজ এবং নির্ভুলতা নিশ্চিত করে
নিরাপত্তা-সমালোচনামূলক যুক্তি
সহায়ক ধারণা
সিদ্ধান্ত এবং দায়িত্ব সম্পূর্ণভাবে মানুষের উপর নির্ভর করে।
API/লাইব্রেরি ব্যবহার
নমুনা তৈরি করে
অস্তিত্ব এবং সংস্করণ যাচাই করে
স্থাপত্য সিদ্ধান্ত
বিকল্প সাজানোর
প্রসঙ্গ জেনে নির্বাচন করে এবং রক্ষা করে
ধাপে ধাপে: বেসিক ওয়ার্কিং সাইকেল
- কাজটি পরিষ্কার করুন। আপনি যদি এক বাক্যে যা চান তা লিখতে না পারলে মডেলও পারবেন না। পূর্বের অনিশ্চয়তা ইনপুটে প্রবেশ করে, আউটপুটে এটি তত বেশি বৃদ্ধি পায়।
- প্রসঙ্গ দিন। প্রম্পটে প্রাসঙ্গিক কোড, সম্পূর্ণ ত্রুটি বার্তা, ভাষা/ফ্রেমওয়ার্ক সংস্করণ এবং সীমাবদ্ধতা যোগ করুন। "এটি ঠিক করুন" বলবেন না, বলুন "Python 3.11, FastAPI 0.110; এই ফাংশনটি একটি 500 ত্রুটি দেয়, যখন অনুরোধের বডি খালি থাকে তখন এটি বিস্ফোরিত হয়"।
- আরোপ ভূমিকা এবং বিন্যাস. একটি ফ্রেমওয়ার্ক যেমন "আপনি একজন সিনিয়র গো ডেভেলপার; শুধু কোড দিন এবং একটি দুই-বাক্য যুক্তি" আউটপুট ফোকাস করে।
- ছোট জন্য জিজ্ঞাসা করুন. একটি দৈত্যাকার অনুরোধের পরিবর্তে এটিকে ধাপে ভাগ করুন; প্রতিটি ধাপ আলাদাভাবে যাচাই করুন। বড় পরিবর্তনগুলি ঝুঁকিপূর্ণ কারণ সেগুলি যাচাই করা কঠিন এবং ত্রুটিগুলি লুকানোর প্রবণ৷
- যাচাই করুন। এটি চালান, এটি পরীক্ষা করুন, এটি দৃশ্যমানভাবে পড়ুন। যাচাইকৃত এআই কোড একটি "স্কেচ" নয়, "সমাধান"। এটি চক্রের সবচেয়ে অ-আলোচনাযোগ্য পদক্ষেপ।
তিনটি মিনি কেস
কেস 1 - সময় সঞ্চয় বাস্তব কিন্তু বিনয়ী। যখন একটি দল AI এর সাথে নতুন CRUD (তৈরি-পড়ুন-আপডেট-ডিলিট) এন্ডপয়েন্ট তৈরি করে, প্রথম খসড়ার সময় প্রায় 40 মিনিট থেকে 8 মিনিটে নেমে আসে। যাইহোক, পর্যালোচনা এবং পরীক্ষার সাথে, মোট সময় ছিল 25 মিনিট; তাই প্রকৃত লাভ হল 40 থেকে 25, প্রায় 38%। এই হার, "আমরা 10 বার ত্বরান্বিত করেছি" প্রত্যাশার পরিবর্তে পরিমাপ করা একটি টেকসই লাভ।
কেস 2 - হ্যালুসিনেশন ব্যয়বহুল। একজন ডেভেলপার বৈধতা ছাড়াই AI-সাজেস্টেড requests.get_json() কল ব্যবহার করেছেন; এই ধরনের কোন পদ্ধতি ছিল না (অবশ্যই প্রতিক্রিয়া. json())। কোড কম্পাইল না হলে 20 মিনিট হারিয়ে গেছে। একটি সহজ "এই পদ্ধতি কি সত্যিই বিদ্যমান?" যাচাইকরণ ক্ষতি পুনরায় সেট করবে।
কেস 3 - ভাল প্রসঙ্গ আউটপুট দ্বিগুণ করে। একই বাগটির জন্য, একজন বিকাশকারী কেবল লিখেছেন "আমি একটি ত্রুটি পেয়েছি" এবং অন্যটি সম্পূর্ণ স্ট্যাক ট্রেস, সংস্করণ এবং ইনপুট নমুনা যোগ করেছে। পরেরটি প্রথম চেষ্টাতেই সঠিক সমাধান পেয়েছে; প্রথমটি তিনটি পালা কাটিয়েছে। পার্থক্যটি মডেলে নয়, ইনপুটে ছিল।
চারটি অনুলিপিযোগ্য টেমপ্লেট
একটি সাধারণ-উদ্দেশ্য, শক্তিশালী স্টার্টআপ প্রম্পট:
ভূমিকা: আপনি একজন অভিজ্ঞ {{language}} ডেভেলপার৷ টাস্ক: {{what_want}}প্রসঙ্গ:- ফ্রেমওয়ার্ক/সংস্করণ: {{framework_and_version}}- সীমাবদ্ধতা: {{কর্মক্ষমতা, শৈলী, নির্ভরতার নিয়ম}}নিয়ম:- অস্তিত্বহীন লাইব্রেরি/ফাংশন ব্যবহার করবেন না; আপনি যদি নিশ্চিত না হন তবে এটিকে "যাচাই করুন" হিসাবে চিহ্নিত করুন। - প্রথমে একটি সংক্ষিপ্ত পরিকল্পনা, তারপর কোড, তারপর ন্যায্যতার 2 বাক্য দিন। - পরীক্ষাযোগ্য, কাজের কোড তৈরি করুন।
মডেলে অনিশ্চয়তা ফিল্টার করতে:
নীচের কাজটি সমাধান করার আগে, অন্তত 3টি পয়েন্ট তালিকাভুক্ত করুন যা আপনি প্রশ্ন হিসাবে অনুপস্থিত বা অস্পষ্ট খুঁজে পান। আমি উত্তর দেওয়ার আগে কোড লিখবেন না। টাস্ক: {{task}}
আউটপুট স্ব-চেক করার জন্য:
আপনি নিম্নলিখিত কোড তৈরি করেছেন। এখন আপনার ভূমিকা পরিবর্তন করুন এবং এই কোডের সমালোচনা করুন:- 3টি কেস (এজ কেস) তালিকাভুক্ত করুন যা কাজ নাও করতে পারে।- আপনি কি তৈরি করতে পারতেন এমন কোনো API/ফাংশন আছে? চিহ্নিত করুন।- সংশোধন করা সংস্করণ দিন।কোড:{{code}}
একটি সিদ্ধান্তকে বিকল্পগুলিতে ভাঙ্গতে:
{{problem}}-এর জন্য 2-3টি সমাধান পদ্ধতির পরামর্শ দিন। প্রতিটির জন্য: সংক্ষিপ্ত বিবরণ, প্লাস/মাইনাস, কখন বেছে নিতে হবে। ট্যাবুলার আকারে দিন। আমার জন্য নির্বাচন করবেন না; শুধু বিকল্পটি স্পষ্ট করুন।
দুর্বল প্রম্পট / শক্তিশালী প্রম্পট
দুর্বল: "এই কোডে বাগ ঠিক করুন।" (কোন ত্রুটি? কোন ভাষা? প্রত্যাশিত আচরণ কি?)
শক্তিশালী: "Python 3.11 / FastAPI 0.110। অনুরোধের বডি খালি হলে নিম্নলিখিত এন্ডপয়েন্ট KeyError সহ 500 রিটার্ন করে; আমি চাই এটি 400 এবং খালি বডিতে অর্থপূর্ণ বার্তা ফেরত দেয়। প্রথমে কারণটি ব্যাখ্যা করুন, তারপর সংশোধন করা ফাংশন দিন, তারপর এই দৃশ্যের জন্য একটি পরীক্ষা লিখুন। [কোড]"
শক্তিশালী সংস্করণ; এটি ভাষা, সংস্করণ, প্রকৃত ত্রুটি, প্রত্যাশিত আচরণ এবং আউটপুট বিন্যাস দেয়। মডেলকে আর ভবিষ্যদ্বাণী করতে হবে না।
সাধারণ ভুল
- যাচাই ছাড়াই বিশ্বাস করা। সবচেয়ে সাধারণ এবং সবচেয়ে ব্যয়বহুল ভুল। কোডটি সংকলিত এবং পরীক্ষা না হওয়া পর্যন্ত "সমাধান" বলবেন না।
- প্রসঙ্গ ছাড়াই প্রশ্ন করা। সংস্করণ, ত্রুটি পাঠ্য এবং বিধিনিষেধ ছাড়া উত্তর জেনেরিক এবং প্রায়ই ভুল।
- একটি বিশাল অনুরোধ। একবারে 300-লাইন উত্পাদনের অনুরোধ এবং পর্যালোচনা করতে না পারা ভুলগুলি অদৃশ্য করে তোলে৷
- প্রমাণ হিসেবে মডেলের আত্মবিশ্বাসকে ভুল করা। AI আত্মবিশ্বাসের সাথে কিছু ভুল বলতে পারে; টোন সঠিকতার সূচক নয়।
- এলোমেলোভাবে কোম্পানি গোপন আটকানো. ব্যক্তিগত কী, গ্রাহকের ডেটা বা ব্যক্তিগত সোর্স কোড অননুমোদিত সরঞ্জামগুলিতে প্রবেশ করা উচিত নয় (আমরা ইউনিট 10-এ এই বিষয়ে বিস্তারিত আলোচনা করব)।
পরামর্শ: প্রতিটি AI আউটপুটকে "এটি একটি খসড়া" হিসাবে বিবেচনা করুন। এই একক মানসিক অভ্যাসটি বেশিরভাগ ঝুঁকি নিভিয়ে দেয় যা আপনি পুরো মডিউল জুড়ে দেখতে পাবেন।
সংক্ষেপে
একটি কোডিং সহকারী একটি ভাষা মডেল যা পরবর্তী সবচেয়ে সম্ভাব্য খণ্ডের পূর্বাভাস দেয়; এটি কোড বুঝতে পারে না, এটি নিদর্শন তৈরি করে। সে কারণেই তিনি পুনরাবৃত্তিমূলক, সূত্রভিত্তিক চাকরিতে শক্তিশালী; আপনার প্রেক্ষাপটের সাথে সুনির্দিষ্ট যাচাইকরণের প্রয়োজন এমন কাজের জন্য এটি সতর্কতার সাথে ব্যবহার করা উচিত। সবচেয়ে বড় ঝুঁকি হল হ্যালুসিনেশন, এবং একমাত্র প্রতিষেধক হল যাচাইকরণ। পুরো মডিউল জুড়ে আমরা যে শৃঙ্খলা অনুসরণ করব তা পরিষ্কার: টাস্কটি স্পষ্ট করুন, প্রসঙ্গ দিন, ছোট জন্য জিজ্ঞাসা করুন, প্রতিটি বিতরণযোগ্য যাচাই করুন।
আবেদন টাস্ক
গত সপ্তাহে আপনি যে তিনটি সফ্টওয়্যার কাজ করেছেন তা লিখুন (যেমন একটি বাগ ফিক্স, একটি পরীক্ষা, একটি README আপডেট)। প্রতিটির জন্য "শক্তি এবং দুর্বলতার মানচিত্র" দেখুন এবং এক বাক্যে বর্ণনা করুন যে আপনার এবং AI এর ভূমিকা কী হবে যদি আপনি AI এটি করতেন। তারপরে উপরের "স্টার্ট প্রম্পট" টেমপ্লেট সহ AI কে এই কাজগুলির মধ্যে একটি দিন এবং আউটপুট চালান এবং যাচাই করুন; আপনি কত মিনিট সংরক্ষণ করেছেন এবং কতগুলি ভুল আপনাকে ঠিক করতে হয়েছে তা নোট করুন।
চেকলিস্ট
- [ ] আমি বুঝতে পেরেছি যে LLM প্যাটার্ন তৈরি করে, কোড "বোঝে না"।
- আমি একটি বাক্যে টোকেন, প্রসঙ্গ উইন্ডো এবং প্রম্পটের ধারণা ব্যাখ্যা করতে পারি।
- [ ] আমি বিভিন্ন ধরণের কাজের মধ্যে পার্থক্য করতে পারি যেখানে AI শক্তিশালী এবং দুর্বল।
- [ ] আমি জানি হ্যালুসিনেশন কী এবং একমাত্র প্রতিষেধক হল যাচাইকরণ।
- [ ] আমি আমার নিজের কাজের জন্য "প্রস্তাব, উত্পাদন, যাচাই" চক্রটিকে অভিযোজিত করেছি।
- [ ] আমি একটি দৃঢ় উদাহরণে একটি শক্তিশালী প্রম্পট এবং একটি দুর্বল প্রম্পটের মধ্যে পার্থক্য দেখাতে পারি।