বর্তমানে একটি আছে প্রোগ্রামারদের সফ্টওয়্যার লিখতে সাহায্য করার জন্য ডিজাইন করা AI সরঞ্জামগুলিতে অনেক আগ্রহ। GitHub-এর Copilot এবং Amazon’s CodeWhisperer গভীর শিক্ষার কৌশলগুলি প্রয়োগ করে যা মূলত প্রাকৃতিক ভাষার পাঠ্য তৈরি করার জন্য এটিকে পরিবর্তন করে সোর্স কোড তৈরি করার জন্য তৈরি করা হয়েছিল। ধারণাটি হল যে প্রোগ্রামাররা এই সরঞ্জামগুলিকে স্টেরয়েডগুলিতে এক ধরণের স্বয়ংসম্পূর্ণ হিসাবে ব্যবহার করতে পারে, বিকাশকারীদের তাদের সফ্টওয়্যারে একীভূত করার জন্য কোডের বিট তৈরি করতে প্রম্পট ব্যবহার করে।
এই সরঞ্জামগুলির দিকে তাকিয়ে আমাকে অবাক করে দিয়েছিল, আমরা কি পরবর্তী পদক্ষেপ নিতে পারি এবং মানব প্রোগ্রামারকে লুপ থেকে বের করতে পারি? শুধুমাত্র একটি বোতাম ধাক্কা দিয়ে একটি কাজের প্রোগ্রাম লেখা এবং প্রয়োগ করা যেতে পারে?
আমার দিনের চাকরিতে আমি মাইক্রোকন্ট্রোলারের জন্য এমবেডেড সফ্টওয়্যার লিখি, তাই আমি অবিলম্বে একটি ডেমো প্ল্যাটফর্ম হিসাবে একটি স্বতন্ত্র হ্যান্ডহেল্ড ডিভাইসের কথা ভেবেছিলাম। একটি স্ক্রিন এবং কয়েকটি নিয়ন্ত্রণের সাহায্যে, ব্যবহারকারী সাধারণ এআই-জেনারেটেড সফ্টওয়্যার অনুরোধ করতে এবং ব্যবহার করতে পারেন। এবং তাই অসীম ধারণার জন্ম হয়েছিল
পং.
আমি পছন্দ করেছি
পং কিছু সংখ্যক কারণের জন্য. গেমপ্লে সহজ, বিখ্যাতভাবে Atari এর 1972 এর আসল উপর স্থাপিত পং সংক্ষিপ্ততার জয়ে তোরণ মন্ত্রিসভা: “উচ্চ স্কোরের জন্য অনুপস্থিত বল এড়িয়ে চলুন।” একটি আপ বোতাম এবং একটি ডাউন বোতাম এটি খেলতে লাগে। 70 এবং 80 এর দশকে তৈরি অনেক ক্লাসিক আটারি গেমের মতো, পং কোডের তুলনামূলকভাবে কয়েকটি লাইনে লেখা যেতে পারে এবং প্রোগ্রামিং অনুশীলন হিসাবে বহুবার প্রয়োগ করা হয়েছে। এর মানে হল যে সোর্স কোড রিপোজিটরিগুলি AI সরঞ্জামগুলির জন্য প্রশিক্ষণ ডেটা হিসাবে অন্তর্ভুক্ত রয়েছে পং উদাহরণ, যা অর্জনযোগ্য ফলাফলের সম্ভাবনা বাড়ায়।
আমি আমার হ্যান্ডহেল্ড ডিভাইসের মূল হিসাবে একটি US$6 রাস্পবেরি Pi Pico W ব্যবহার করেছি – অন্তর্নির্মিত ওয়্যারলেস সংযোগটি ক্লাউড-ভিত্তিক AI সরঞ্জামগুলিতে সরাসরি সংযোগের অনুমতি দেয়৷ এর জন্য আমি একটি $9 পিকো এলসিডি 1.14 ডিসপ্লে মডিউল মাউন্ট করেছি। 240 x 135 কালার পিক্সেল এর জন্য যথেষ্ট পংএবং মডিউল দুটি বোতাম এবং একটি দুই-অক্ষ মাইক্রো-জয়স্টিককে একীভূত করে।
পিকোর জন্য আমার পছন্দের প্রোগ্রামিং ল্যাঙ্গুয়েজটি ছিল মাইক্রোপাইথন, কারণ এটি আমি সাধারণত ব্যবহার করি এবং কারণ এটি একটি ব্যাখ্যা করা ভাষা কোড যা পিসি-ভিত্তিক কম্পাইলারের প্রয়োজন ছাড়াই কার্যকর করা যেতে পারে। আমি যে এআই কোডিং টুলটি ব্যবহার করেছি সেটি ছিল ওপেনএআই কোডেক্স। OpenAI কোডেক্স একটি API-এর মাধ্যমে অ্যাক্সেস করা হয় যা ওয়েবের HTTP ফর্ম্যাট ব্যবহার করে প্রশ্নের উত্তর দেয়, যা মাইক্রোপাইথনের জন্য উপলব্ধ urequests এবং ujson লাইব্রেরি ব্যবহার করে তৈরি এবং জমা দেওয়া সহজ। ওপেনএআই কোডেক্স এপিআই ব্যবহার করা বর্তমান বিটা সময়ের মধ্যে বিনামূল্যে, তবে নিবন্ধন প্রয়োজন এবং প্রশ্নের সংখ্যা প্রতি মিনিটে 20-এর মধ্যে সীমাবদ্ধ – এমনকি সবচেয়ে আগ্রহী ব্যবহারকারীদেরও সন্তুষ্ট করার জন্য যথেষ্ট। পং জকি
শুধুমাত্র দুটি হার্ডওয়্যার মডিউল প্রয়োজন – একটি রাস্পবেরি পাই পিকো ডব্লিউ [bottom left] যা কম্পিউটিং শক্তি এবং স্ক্রীন এবং সহজ অপারেশন সহ একটি প্লাগ-ইন কার্ড প্রদান করে [top left]. বিদ্যুৎ সরবরাহের জন্য একটি USB কেবল ছাড়া অন্য কিছুর প্রয়োজন নেই।জেমস প্রভোস্ট
পরবর্তী পদক্ষেপটি ছিল একটি ধারক প্রোগ্রাম তৈরি করা। এই প্রোগ্রামটি সনাক্ত করার জন্য দায়ী যখন একটি নতুন সংস্করণ পং একটি বোতামের স্পর্শে অনুরোধ করা হয় এবং OpenAI কোডেক্সে একটি প্রম্পট পাঠায়, ফলাফলগুলি গ্রহণ করে এবং গেমটি চালু করে। কন্টেইনার প্রোগ্রামটি একটি হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ারও সেট আপ করে, যা পিকো এবং এলসিডি/কন্ট্রোল মডিউলের মধ্যে শারীরিক সংযোগ প্রদান করে।
পুরো প্রকল্পের সবচেয়ে গুরুত্বপূর্ণ উপাদানটি ছিল প্রম্পট তৈরি করা যা OpenAI কোডেক্সে পাঠানো হবে যখনই আমরা এটির একটি নতুন সংস্করণ আপডেট করতে চাই
পং. প্রম্পট হল সোর্স কোডের ক্ষুদ্রতম কঙ্কাল সহ প্লেইন টেক্সটের একটি টুকরো – কয়েকটি লাইন যা অনেক ভিডিও গেমের সাধারণ কাঠামোর রূপরেখা দেয়, যেমন আমরা ব্যবহার করতে চাই এমন লাইব্রেরির একটি তালিকা এবং ইভেন্টগুলি প্রক্রিয়া করার জন্য একটি কল (যেমন কীস্ট্রোক) , সেই ইভেন্টগুলির উপর ভিত্তি করে গেমের অবস্থা আপডেট করার জন্য একটি কল এবং স্ক্রিনে আপডেট হওয়া অবস্থা প্রদর্শন করার জন্য একটি কল৷
যে কোডটি ফিরে আসে তা একটি কার্যকরী উত্পাদন করে পং খেলা প্রায় 80 শতাংশ সময়.
কীভাবে সেই লাইব্রেরিগুলি ব্যবহার করবেন এবং কলগুলি পূরণ করবেন তা AI এর উপর নির্ভর করে৷ এই জেনেরিক কাঠামোকে একটিতে পরিণত করার চাবিকাঠি
পং গেমটি এমবেডেড মন্তব্য – ঐচ্ছিকভাবে মানুষের দ্বারা লিখিত সোর্স কোডে, প্রম্পটে খুব দরকারী। মন্তব্যগুলি সরল ইংরেজিতে গেমপ্লে বর্ণনা করে, উদাহরণস্বরূপ: “গেমটিতে নিম্নলিখিত শ্রেণী রয়েছে…বল: এই শ্রেণীটি বলকে প্রতিনিধিত্ব করে। এটির একটি অবস্থান, একটি গতি এবং একটি ডিবাগ বৈশিষ্ট্য রয়েছে৷ [sic]. পং: এই শ্রেণীটি খেলার প্রতিনিধিত্ব করে। এতে দুটি প্যাডেল এবং একটি বল রয়েছে। খেলা শেষ হলে কিভাবে চেক করতে হয় তা জানে। (আমার ধারক এবং প্রম্পট কোড Hackaday.io এ উপলব্ধ) (অসীম সংখ্যক পেতে Hackaday.io এ যান পন্টরাস্পবেরি পাই পিকো ডব্লিউ এর সাথে g গেমস; আমার ধারক এবং প্রম্পট কোড সাইটে আছে।)
AI থেকে যা ফিরে আসে তা হল প্রায় 300 লাইনের কোড। আমার প্রাথমিক প্রচেষ্টায়, কোডটি গেমটি রেন্ডার করতে ব্যর্থ হয়েছে কারণ মাইক্রোপাইথন ফ্রেমবাফার লাইব্রেরির সংস্করণ যা আমার মডিউলের সাথে কাজ করে সেটি ফ্রেমবাফার লাইব্রেরিগুলির থেকে আলাদা যেগুলির উপর OpenAI কোডেক্সকে প্রশিক্ষণ দেওয়া হয়েছে৷ সমাধানটি ছিল আমার লাইব্রেরি প্রম্পট মন্তব্য হিসাবে ব্যবহার করা পদ্ধতিগুলির বিবরণ যোগ করা, উদাহরণস্বরূপ: “def আয়তক্ষেত্র(self, x, y, w, h, c)।” আরেকটি সমস্যা ছিল যে অনেক প্রশিক্ষণ উদাহরণ গ্লোবাল ভেরিয়েবল ব্যবহার করেছে, যখন আমার প্রাথমিক প্রম্পট ভেরিয়েবলগুলিকে পৃথক ক্লাসের মধ্যে বসবাসের উদ্দেশ্যে বৈশিষ্ট্য হিসাবে সংজ্ঞায়িত করেছে, যা সাধারণত ভাল অনুশীলন। আমাকে অবশেষে ছেড়ে দিতে হয়েছিল, প্রবাহের সাথে যেতে হয়েছিল এবং আমার ভেরিয়েবলকে বিশ্বব্যাপী ঘোষণা করতে হয়েছিল।
ওপেনএআই কোডেক্স দ্বারা তৈরি পং-এর বৈচিত্রগুলি বল এবং প্যাডেলের আকার এবং রঙ এবং কীভাবে স্কোরগুলি প্রদর্শিত হয় তার মধ্যে ব্যাপকভাবে পরিবর্তিত হয়। কখনও কখনও কোডের ফলে এমন একটি খেলা দেখা যায় যা খেলা যায় না, যেমন নীচের ডানদিকে যেখানে প্লেয়ারের প্যাডেলগুলি স্ট্যাক করা থাকে৷জেমস প্রভোস্ট
আমার বর্তমান প্রম্পট থেকে প্রত্যাবর্তিত কোড একটি কার্যকরী উত্পাদন করে
পং খেলা প্রায় 80 শতাংশ সময়. কখনও কখনও গেমটি মোটেও কাজ করে না, এবং কখনও কখনও এটি এমন কিছু তৈরি করে যা চলে কিন্তু পুরোপুরি সেখানে নেই পং, উদাহরণস্বরূপ যখন প্যাডেলগুলি উপরে এবং নীচে ছাড়াও বাম এবং ডানে সরানো যেতে পারে। কখনও কখনও এটি দুটি মানব খেলোয়াড় এবং কখনও কখনও আপনি মেশিনের বিরুদ্ধে খেলেন। যেহেতু এটি প্রম্পটে নির্দিষ্ট করা নেই, কোডেক্স দুটি বিকল্পের একটি নেয়। মেশিনের বিরুদ্ধে খেলার সময় কোডেক্স কোড লজিকের সেই অংশটিকে কীভাবে প্রয়োগ করেছে তা দেখতে সবসময়ই আকর্ষণীয়।
তাহলে এই কোডের লেখক কে? অবশ্যই, এই কোডটি কীভাবে লাইসেন্স করা যায় তার মতো বিষয়গুলি থেকে আইনী বিরোধ রয়েছে, কারণ প্রশিক্ষণ সেটের বেশিরভাগটি ওপেন-সোর্স সফ্টওয়্যারের উপর ভিত্তি করে যা এটি থেকে প্রাপ্ত কোডের উপর নির্দিষ্ট লাইসেন্সিং শর্তাদি আরোপ করে। কিন্তু লাইসেন্সিং এবং মালিকানা লেখকত্ব থেকে পৃথক, এবং পরবর্তীটির বিষয়ে, আমি বিশ্বাস করি যে এটি প্রোগ্রামারের অন্তর্গত যিনি AI টুল ব্যবহার করেন এবং ফলাফলগুলি যাচাই করেন, যেমনটি হবে যদি আপনি একটি অঙ্কন প্রোগ্রামের মাধ্যমে আর্টওয়ার্ক তৈরি করেন কোম্পানি এবং তাদের ব্রাশ এবং ফিল্টার ব্যবহার করে।
আমার প্রকল্পের জন্য, পরবর্তী পদক্ষেপটি আরও জটিল গেমগুলি দেখছে। 1986 সালের আর্কেড হিট
Arkanoid চাহিদা অনুযায়ী, কেউ?