আমরা কৃত্রিম বুদ্ধিমত্তা এবং প্রাকৃতিক ভাষা প্রক্রিয়া – এবং বিশেষ করে OpenAI-এর GPT-এর লেটেস্ট ভার্সন – সম্পর্কে সপ্তাহים ধরে শুনছি।
GPT 3.5-এর সাম্প্রতিক রিলিজ, এবং বিশেষ করে बिलকুল নতুন ChatGPT টুল, অবশ্যই একটি বিশাল লাফ এগিয়ে।
আপনি হয়তো পড়েছেন মানুষ AI-কে রিয়েল এস্টেট কনট্রাক্ট এবং 윌 লিখতে বলে, এবং প্রোগ্রামিং কোড জেনারেট করতে বলে। এই আর্টিকেল টুলটিকে একটু আলাদা দৃষ্টিভঙ্গি থেকে নিয়ে আসে।
আপনি যদি চান তবে এই আর্টিকেলের ভিডিও ভার্সন এখানে দেখতে পারেন আপনার লার্নিং সাপ্লিমেন্ট করতে:
ChatGPT এবং Bash স্ক্রিপ্টিং নিয়ে এক্সপেরিমেন্ট
আমি দেখতে চেয়েছিলাম ChatGPT লিনাক্স Bash স্ক্রিপ্টিং কীভাবে হ্যান্ডেল করে। কিন্তু (স্পয়লার অ্যালার্ট!) আমি টুলটির সাজেশনগুলো – ভালো কোড এবং খারাপ কোড দুটোই – ডুরante কাজ করার সময় বুঝতে পারলাম যে আরো একটি শক্তিশালী সুবিধা আমার সামনে আছে: একটি অত্যন্ত সহায়ক পার্টনার সাথে পেয়ার-প্রোগ্রামিং করার সুযোগ।
AI চূড়ান্তভাবে আমার সমস্যাটি সমাধান করতে ব্যর্থ হয়েছে, কিন্তু এটি কীভাবে ব্যর্থ হয়েছে সেটি আশ্চর্য বলাই ছিল। এবং AI নতুন সমাধান খুঁজে পাওয়ার জন্য কীভাবে চেষ্টা করছে তা দেখা অবিশ্বাস্য ছিল।
প্রথম প্রচেষ্টা – ChatGPT সমস্যা সমাধান চেষ্টা করে
তাহলে দেখি কীভাবে সব হয়েছে। এখানে, কমোবেশ, আমার AI-কে দেওয়া প্রাথমিক প্রম্পট:
আমার জন্য একটি Bash স্ক্রিপ্ট লিখুন যা একটি YouTube ভিডিওর URL প্রম্প্ট করবে এবং তারপর yt-dlp প্রোগ্রাম ব্যবহার করে সেটি ডাউনলোড করবে। স্ক্রিপ্টটি তারপর ফাইল নামকে "myvideo.mp4" এ চেঞ্জ করবে।
কয়েক সেকেন্ড পর, ChatGPT আমাকে বললো একটি স্ক্রিপ্ট আসছে। সেটি কেমন ছিল:
#!/bin/bash # ইউজার থেকে YouTube ভিডিও URL প্রম্প্ট করুন read -p "Enter YouTube video URL: " url # yt-dlp ব্যবহার করে YouTube থেকে ভিডিও ডাউনলোড করুন yt-dlp $url # ডাউনলোড করা ভিডিও ফাইলের নাম পান yt-dlp $url # ডাউনলোড করা ভিডিও ফাইলনেমকে "myvideo.mkv" এ চেঞ্জ করুন mv video-filename.mp4 myvideo.mp4 AI স্পষ্টতো জানে Bash স্ক্রিপ্ট কী এবং কোড কীভাবে প্রেজেন্ট করতে হয়। এটি প্রতিটি লাইনে কমেন্ট করার চমৎকার কাজ করেছে। AI জানে কীভাবে ইউজারকে সঠিকভাবে প্রম্প্ট করতে হয় এবং ইনপুট স্ট্রিংকে url ভেরিয়েবলে ইম্পোর্ট করতে হয়।
এটি yt-dlp প্রোগ্রাম এবং কীভাবে সেটি কাজ করে সেটি ও জানে, উপযুক্তভাবে প্রদত্ত URL ফিড করে। তারপর এটি ডাউনলোড করা ভিডিও ফাইলকে myvideo.mp4-এ রিনেম করার চেষ্টা করে। কিন্তু সব কিছু তেড়ে যাওয়া শুরু হয়ে যায় যখন এটি অনুমান করে যে ডাউনলোড ফাইলনেম হবে video-filename.mp4। Whoops.
অবশ্য, AI হেল্পফুলি দেখিয়ে দিয়েছে কীভাবে এর কোড থেকে স্ক্রিপ্ট তৈরি করবেন এবং তারপর রান করবেন।
দ্বিতীয় প্রচেষ্টা – ChatGPT নিজেকে সংশোধন করে
আমার প্রথম ফলো-আপ প্রম্পট স্পষ্ট ভুলটি পয়েন্ট আউট করল, এবং কয়েক সেকেন্ড পর, ChatGPT স্বীকার করলো যে এটি ভুল এবং একটি উন্নতি প্রস্তাব করল।
আপনি সঠিক বলেছেন, আমি যে স্ক্রিপ্টটি দিয়েছিলাম সেটি প্রত্যাশা অনুযায়ী কাজ করত না কারণ এটি অনুমান করেছিল ডাউনলোড করা ভিডিও video-filename.mp4 নামে সেভ হবে। কিন্তু, এটি গ্যারান্টি করা যায় না। এটি ফিক্স করতে...
এখানে AI সম্পূর্ণরূপে প্রসেসে আর্মড देखकर মন চকিত হচ্ছে। এটি এর প্রথম কোড মনে রাখে, আমার আপত্তি শুনে ও বুঝে, এবং একটি সমাধান চিন্তা করে। সেটি হলো দ্বিতীয় প্রচেষ্টা:
#!/bin/bash # ইউজার থেকে YouTube ভিডিও URL প্রম্প্ট করুন read -p "Enter YouTube video URL: " url # yt-dlp ব্যবহার করে YouTube থেকে ভিডিও ডাউনলোড করুন yt-dlp $url # ডাউনলোড করা ভিডিও ফাইলের নাম পান filename=$(basename $url) # ডাউনলোড করা ভিডিও ফাইলনেমকে "myvideo.mkv" এ চেঞ্জ করুন mv $filename.mp4 myvideo.mp4 ওকে, আমি দেখতে পাচ্ছি কীভাবে সমাধানটি প্রায় সঠিক মনে হয়। basename একটি লিনাক্স টুল যা ফাইল সিস্টেম ডিরেক্টরি স্ট্রিপ আউট করে শুধু আসল ফাইলনেম রেখে দেয়।
সমস্যাটি হলো url ভেরিয়েবলে লোকাল ফাইলনেম নয়, বরং একটি ইন্টারনেট অ্যাড্রেস। এটি অবশ্যই কাজ করবে না।
তৃতীয় প্রচেষ্টা – ChatGPT আবার চেষ্টা করে
তাই আমি আবার চেষ্টা করলাম, ব্যাখ্যা করলাম যে সেটি কাজের জন্য সঠিক টুল নয়। এবং ChatGPT একবার nữa চেষ্টা করল।
#!/bin/bash # ইউজার থেকে YouTube ভিডিও URL প্রম্প্ট করুন read -p "Enter YouTube video URL: " url # URL থেকে ফাইলনেম এক্সট্র্যাক্ট করুন filename=$(basename $url) # yt-dlp টুল ব্যবহার করে ভিডিও ডাউনলোড করুন এবং ফাইলনেম স্পেসিফাই করুন yt-dlp -o $filename $url # ডাউনলোড করা ভিডিও ফাইলনেমকে "myvideo.mkv" এ চেঞ্জ করুন mv $filename.mp4 myvideo.mp4 এবার, এটি দেখিয়ে দিয়েছে যে এটি yt-dlp ডকুমেন্টেশন জানতে পেরেছে, সাজেস্ট করলো যে আমরা -o আর্গুমেন্ট ব্যবহার করব ডাউনলোড করা ভিডিওর একটি নাম দিতে, যেন basename এখন কাজ করে। প্রতিটি ইটারেশনে, AI আমাকে আপডেটেড কোড দিয়েছে কাটিং এবং পেস্ট করার সুবিধার্থে।
বিশ্বাস্য, সেটিও কাজ করবেনা। পরবর্তী প্রচেষ্টায়, আমি অনুভব করছি AI একটু desperate হয়ে গেছে।
প্রথমে সাফল্য না পেলেও...কমপক্ষে আপনি কিছু শিখবেন
আমি পরবর্তী এক দুটি প্রচেষ্টা স্কিপ করছি, কারণ আমরা একটি সাইড প্রোবলেমে পড়েছিলাম: YouTube থেকে আসা ভিডিও সবসময় MP4 নয়, কখনও কখনও MKV বা WEBMও হয়। এই অনিশ্চিততা আমরা যে ফাইলনেম নিয়ে কাজ করছি সেটাকে গুলিয়ে ফেলতে পারে, তাই আমি ChatGPT-কে সেটি কোডে ইনক্লুড করতে বললাম।
#!/bin/bash # ইউজার থেকে YouTube ভিডিও URL প্রম্প্ট করুন read -p "Enter YouTube video URL: " url # URL থেকে ফাইলনেম এক্সট্র্যাক্ট করুন filename=$(basename $url) # yt-dlp টুল ব্যবহার করে ভিডিও ডাউনলোড করুন এবং ফাইলনেম স্পেসিফাই করুন yt-dlp -F mp4 -O $filename $url # ডাউনলোড করা ভিডিও ফাইলনেমকে "myvideo.mkv" এ চেঞ্জ করুন mv $filename.mp4 myvideo.mp4 যখন আমি রিপোর্ট করলাম যে সেটিও কাজ করবেনা, AI একটু কনফিউজ্ড হয়ে গেল। প্রথমে এট বললো -F অপশনটি একটি ভ্যালিড ভিডিও ফরম্যাট এক্সপেক্ট করছে, কিন্তু "mp4" ভ্যালিড নয়। তারপর এট ভ্যালিড অপশনগুলো দিয়ে দিলো, যার মধ্যে "mp4"ও আছে।
যখন AI-এর কোনো সাজেশন কাজ করল না, এট হার মানল, আমাকে পরামর্শ দিলো yt-dlp আসলে ইনস্টলড আছে কিনা মেশিনে নিশ্চিত করতে এবং কীভাবে ইনস্টল করবেন সেটি দেখিয়ে দিলো।
আমি ভাবলাম সেটি দিয়ে উপসামhör করাই ভালো। এটি আশ্চর্য মাত্রায় ভালো প্রচেষ্টা ছিল এবং, যদিও এটি সমস্যাটি সমাধান করল না, এতে আমাকে কিছু উপযোগী সিনট্যাক্স দেখিয়েছে এবং আমাকে চিন্তা করতে বাধ্য করল।
আপনি যদি আগ্রহী হন, übrigens, এখানে কীভাবে একটি আসলে কাজ করার স্ক্রিপ্ট দেখাবে।
#!/bin/bash # ইউজার থেকে YouTube ভিডিও URL প্রম্প্ট করুন read -p "Enter YouTube video URL: " url # yt-dlp ব্যবহার করে YouTube থেকে ভিডিও ডাউনলোড করুন yt-dlp $url # ডাউনলোড করা ভিডিও ফাইলের নাম পান original_filename=$(ls | awk '/mp4/ || /webm/ || /mkv/') # ডাউনলোড করা ভিডিও ফাইলনেমকে "myvideo.mkv" এ চেঞ্জ করুন mv "$original_filename" /home/ubuntu/vids/myvideo.mp4 কোডের প্রথম দুটি লাইন ঠিক ChatGPT-এর সাজেশন অনুযায়ী। কিন্তু তারপর আমি ফাইলনেম আইসোলেট করলাম করেন্ট ডিরেক্টরির সব ফাইল লিস্ট করে এবং awk ব্যবহার করে শুধু mp4, webm, বা mkv কন্টেইন করা ফাইলনেম ফিল্টার করে। (এটি অনুমান করে যে ডিরেক্টরিতে একবারে একাধিক ভিডিও ফাইল থাকবে না।)
ফাইলনেমটি তখন original_filename ভেরিয়েবলে লেখা হবে। আমি তারপর সেই ভেরিয়েবলটি move কমান্ডের অংশ হিসেবে ব্যবহার করব ফাইলকে myvideo.mp4 রিনেম করার জন্য। যতটুকু আমি বুঝতে পারছি, আসল ফরম্যাট যেটোই হোক, সেটি কাজ করবে।
উপসংহার
কৃত্রিম বুদ্ধিমত্তা আজকে রিয়েল-ওয়ার্ল্ড প্রোগ্রামিং টাস্কের জন্য প্রস্তুত নাও হতে পারে, কিন্তু আমি এটিকে বুকে দিয়ে বলতে পারি না যে এটি কালকে...অথবা আগামী বছর কোথাও সেটি পেয়ে যাবে।
মেনটাইমে, আমি নিঃসন্দেহে সুপারিশ করব চ্যালেঞ্জিং প্রোগ্রামিং টাস্ক ফেস করলে ChatGPT-এর মতো টুলসের সাথে জড়িত होने için।
দুই মস্তিষ্ক (প্রায়) সবসময় এক থেকে ভালো।
আমার ইউটিউব চ্যানেল (যে আপনি সাবস্ক্রাইব করতে পারেন) ছাড়া, আমার ওয়েবসাইটে সব ধরনের টেকনোলজি গুডনেস আর্টিকেল, বুক, এবং কোর্স হিসেবে উপলব্ধ।
নিঃশুল্ক কোডিং শিখুন। freeCodeCamp-এর ওপেন সোর্স কারিকুলাম ৪০,০০০-এর বেশি লোককে ডেভেলপার হিসেবে চাকরি পেতে সাহায্য করেছে। শুরু করুন।