ChatGPT 2020 সালের জুনে প্রকাশিত হয়েছিল এবং এটি OpenAI দ্বারা বিকাশ করা হয়েছে। এটি অনেক ক্ষেত্রে বৈপ্লবিক উন্নয়ন ঘটিয়েছে। এই ক্ষেত্রগুলির মধ্যে একটি হল ডাটাবেস কোয়েরি তৈরি করা। ডাটাবেস প্রশ্নগুলি ChatGPT এর মাধ্যমে প্লেইন টেক্সট থেকে তৈরি করা যেতে পারে। এটি আপনাকে এমন ডেটাবেসগুলির সাথে সাহায্য করে যেগুলি সম্পর্কে আপনার সামান্য জ্ঞান রয়েছে৷
কৃত্রিম বুদ্ধিমত্তা, যা আমাদের দৈনন্দিন জীবনে ক্রমান্বয়ে একত্রিত হয়েছে, ChatGPT-এর উত্থানের সাথে উল্লেখযোগ্য গতি পেয়েছে। প্রকল্পে যাওয়ার আগে, আসুন সংক্ষিপ্তভাবে ChatGPT অন্বেষণ করি।
ChatGPT-এর ক্ষমতা সম্পূর্ণরূপে বোঝার জন্য, এর অন্তর্নিহিত আর্কিটেকচারের দৃঢ় ধারণা থাকা অপরিহার্য। ChatGPT GPT আর্কিটেকচারের উপর ভিত্তি করে তৈরি করা হয়েছে। তো চলুন প্রথমে ট্রান্সফরমার দেখে নেওয়া যাক।
প্রকল্পে সরাসরি অ্যাক্সেসের জন্য, এখানে ক্লিক করুন।
ট্রান্সফরমারগুলি seq2seq ফ্রেমওয়ার্ক ব্যবহার করে, একটি সিকোয়েন্সকে অন্যটিতে রূপান্তর করতে সক্ষম করে। সিকোয়েন্স ক্রম সংজ্ঞায়িত করেছে. একটি উদাহরণ হিসাবে, বাক্যগুলিকে শব্দের উত্তরাধিকার হিসাবে দেখা যেতে পারে। ট্রান্সফরমারগুলি টেক্সট অনুবাদের মতো NLP সমাধান করতেও ব্যবহার করা যেতে পারে। এই আর্কিটেকচারের প্রশিক্ষণের জন্য আমাদের প্রচুর লেবেলযুক্ত ডেটা দরকার। ট্রান্সফরমারদের জন্য এটি শেখা কঠিন হবে। এই সমস্যা সমাধানের জন্য আমরা ট্রান্সফার লার্নিং ব্যবহার করতে পারি। ট্রান্সফরমার দুটি উপাদান নিয়ে গঠিত (চিত্র 1): একটি এনকোডার এবং একটি ডিকোডার, উভয়ই একটি দক্ষ ভাষা উপস্থাপনা অর্জনে পারদর্শী।
এই দক্ষতা আমাদের প্রতিটি উপাদান থেকে ভাষার মডেল তৈরি করতে দেয়। এনকোডারগুলিকে স্ট্যাক করার মাধ্যমে, আমরা T ransformers-এর একটি B ইডাইরেশনাল ই এনকোডার R উপস্থাপনা পাই, যা সাধারণত BERT নামে পরিচিত। একইভাবে, ডিকোডার ইউনিটগুলিকে স্ট্যাক করার মাধ্যমে, আমরা G Enerative P re- T raining অর্জন করতে পারি যা GPT। আমাদের ক্ষেত্রে আমরা GPT এর উপর ফোকাস করছি। আসুন GPT প্রসঙ্গে ট্রান্সফার লার্নিং সম্পর্কে চিন্তা করি। যখন আমরা স্ক্র্যাচ থেকে একটি মডেলকে প্রশিক্ষণ দিই, তখন এটি সাধারণত যথেষ্ট পরিমাণ ডেটা দাবি করে কারণ প্রাথমিকভাবে প্যারামিটারগুলি এলোমেলোভাবে সেট করা হয়। যাইহোক, একটি দৃশ্যকল্প কল্পনা করুন যেখানে প্যারামিটারগুলি আমাদের প্রয়োজনীয় মানগুলির সাথে সৌভাগ্যক্রমে সারিবদ্ধ হয়। এই ধরনের ক্ষেত্রে, আমাদের পছন্দসই ফলাফল অর্জনের জন্য আমাদের একটি বিস্তৃত ডেটাসেটের প্রয়োজন হয় না। যেমনটি বোঝা যাবে, BERT এবং GPT ট্রান্সফার লার্নিং কনসেপ্টে ব্যবহৃত হয়।
এইভাবে GPT প্রশিক্ষণ দুটি ভাগে বিভক্ত। আমাদের প্রাক-প্রশিক্ষণের অংশ রয়েছে যেখানে আমরা ভাষা কী তা বোঝার জন্য জিপিটি আর্কিটেকচারকে প্রশিক্ষণ দিই এবং তারপরে ফাইন টিউনিং অংশ যেখানে আমরা নির্দিষ্ট ভাষার কাজগুলি ভালভাবে সম্পাদন করার জন্য জিপিটি আর্কিটেকচারকে আরও প্রশিক্ষিত করতে ট্রান্সফার লার্নিং ব্যবহার করি।
GPT এর একটি কাঠামো রয়েছে যা র্যান্ডম শব্দ ক্রমগুলিকে ইনপুট হিসাবে নেয় এবং পরবর্তী সবচেয়ে উপযুক্ত শব্দের পূর্বাভাস দেয়। নমুনা ভবিষ্যদ্বাণী চিত্র 2 এ দেখা যেতে পারে।
ভাষার মডেলিংকে ভাষার মৌলিক দিকগুলি বোঝার জন্য একটি আদর্শ ভিত্তি হিসাবে নির্বাচিত করা হয়েছে এবং সহজেই সূক্ষ্ম সুর করা যেতে পারে। এটি সাধারণত একটি স্ব-তত্ত্বাবধান করা কাজ হিসাবে পরিচিত কারণ বাক্যগুলি নিজেই ইনপুট এবং আউটপুট উভয় লেবেল হিসাবে কাজ করে।
চ্যাটজিপিটি-তে যাওয়া যাক। এটি চিত্র 3-এ দেখা যায়।, সমগ্র ChatGPT প্রক্রিয়াটিকে তিনটি প্রধান ধাপে ভাগ করা যেতে পারে। প্রথম ধাপে, জিপিটি মডেল ব্যবহার করা হয় যা ভাষা বোঝার জন্য প্রাক-প্রশিক্ষিত। পরবর্তী ধাপে ব্যবহারকারীর প্রম্পটগুলিকে কার্যকরভাবে প্রক্রিয়া করতে এবং সেই প্রম্পটের উপর ভিত্তি করে উপযুক্ত প্রতিক্রিয়া তৈরি করতে মডেলটিকে সূক্ষ্ম-টিউনিং করা জড়িত। এই প্রক্রিয়াটিকে সহজতর করার জন্য, লেবেলযুক্ত ডেটা আকর্ষক লেবেলারদের দ্বারা প্রাপ্ত করা হয় যারা শুধুমাত্র প্রম্পট প্রদান করে না বরং প্রতিটি প্রম্পটের জন্য পছন্দসই প্রতিক্রিয়াও নির্দিষ্ট করে। এটি জিপিটি মডেলের তত্ত্বাবধানে সূক্ষ্ম-টিউনিংয়ে জড়িত হওয়ার অনুমতি দেয়, কারণ ইনপুট প্রম্পট এবং সংশ্লিষ্ট আউটপুট প্রতিক্রিয়া উভয়ই রয়েছে।
পরবর্তী ধাপে, তত্ত্বাবধানে সূক্ষ্ম-সুরিত মডেলটি ব্যবহার করা হয় যে এটি প্রথম ধাপ থেকে প্রাপ্ত হয়েছিল। একটি একক প্রম্পট মডেলের মাধ্যমে পাস করা হয় এবং একাধিক প্রতিক্রিয়া তৈরি হয়। লেবেলার তারপর এই প্রতিক্রিয়াগুলির গুণমানকে মূল্যায়ন করে এবং র্যাঙ্ক করে। প্রতিটি উত্পন্ন প্রতিক্রিয়া একটি সংশ্লিষ্ট পুরস্কার বরাদ্দ করা হয়, যা পুরস্কার মডেল হিসাবে পরিচিত অন্য GPT মডেল প্রশিক্ষণের জন্য ব্যবহার করা হয়। নিজেই একটি মডেল হওয়ার কারণে, পুরষ্কার মডেলটি একটি প্রাথমিক প্রম্পট গ্রহণ করে এবং প্রতিক্রিয়াগুলির মধ্যে একটিকে ইনপুট হিসাবে গ্রহণ করে এবং আউটপুট হিসাবে একটি পুরষ্কার তৈরি করে৷ এই পুরষ্কারটি প্রতিক্রিয়ার গুণমান বা ভালতাকে পরিমাপ করে।
তৃতীয় ধাপে, একটি অদেখা প্রম্পট নেওয়া হবে এবং তত্ত্বাবধানে সূক্ষ্ম সুর করা মডেলের একটি প্রতিরূপের মধ্য দিয়ে পাস করা হবে। এটি একটি প্রতিক্রিয়া তৈরি করবে, যা পরে এটির র্যাঙ্ক বা গুণমান নির্ধারণ করতে একটি পুরষ্কার মডেল ব্যবহার করে মূল্যায়ন করা হবে। প্রাপ্ত র্যাঙ্কটি আমাদের ইতিমধ্যেই সূক্ষ্ম-টিউন করা মডেলটিকে আরও পরিমার্জিত করতে ব্যবহার করা হবে। এটি PPO মডেলের লস ফাংশনে র্যাঙ্ককে অন্তর্ভুক্ত করার মাধ্যমে অর্জন করা হয়, ব্যাকপ্রোপগেশনের মাধ্যমে মডেলের প্যারামিটারে আপডেট করার অনুমতি দেয়। যা বিশেষভাবে চিত্তাকর্ষক তা হল যে এই প্রক্রিয়াটি শুধুমাত্র মডেলটিকে অ-বিষাক্ত আচরণ প্রদর্শন করতে সাহায্য করে না বরং এটি বাস্তব প্রতিক্রিয়া তৈরি করতে সক্ষম করে। এর কারণ হল পুরষ্কারটি নিজেই প্রতিক্রিয়ার মানের উপর ভিত্তি করে তৈরি করা হয়েছিল।
এখন পাইথন ব্যবহার করে ChatGPT দিয়ে একটি প্রজেক্ট করা যাক। এই প্রকল্পের জন্য LangChain ফ্রেমওয়ার্ক ব্যবহার করা হয়।
আমাদের উদ্দেশ্য হল প্লেইন টেক্সট ব্যবহার করে আমাদের ডাটাবেস থেকে তথ্য পুনরুদ্ধার করা। আমাদের কাজে, আমরা লক্ষ্য ডাটাবেস হিসাবে মাইএসকিউএল ব্যবহার করেছি। তবুও, এই পদ্ধতিটি অন্যান্য ডাটাবেসে প্রশ্ন তৈরি করতেও ব্যবহার করা যেতে পারে। নমুনা ডাটাবেস নীচে দেখানো হয়.
সমস্ত কোড এখানে পাওয়া যাবে ( https://github.com/ademakdogan/ChatSQL )
+-----+--------------------------------------------------------+------------------------+-------------------+--------+------------------+ | ID | Title | Author | Genre | Height | Publisher | +-----+--------------------------------------------------------+------------------------+-------------------+--------+------------------+ | 1 | Fundamentals of Wavelets | Goswami, Jaideva | signal_processing | 228 | Wiley | | 2 | Data Smart | Foreman, John | data_science | 235 | Wiley | | 3 | God Created the Integers | Hawking, Stephen | mathematics | 197 | Penguin | | 4 | Superfreakonomics | Dubner, Stephen | economics | 179 | HarperCollins | | 5 | Orientalism | Said, Edward | history | 197 | Penguin | | 6 | Nature of Statistical Learning Theory, The | Vapnik, Vladimir | data_science | 230 | Springer | | 7 | Integration of the Indian States | Menon, VP | history | 217 | Orient Blackswan | | 8 | Drunkard's Walk, The | Mlodinow, Leonard | science | 197 | Penguin | | 9 | Image Processing & Mathematical Morphology | Shih, Frank | signal_processing | 241 | CRC | | 10 | How to Think Like Sherlock Holmes | Konnikova, Maria | psychology | 240 | Penguin | | 11 | Data Scientists at Work | Sebastian Gutierrez | data_science | 230 | Apress | | 12 | Slaughterhouse Five | Vonnegut, Kurt | fiction | 198 | Random House | | 13 | Birth of a Theorem | Villani, Cedric | mathematics | 234 | Bodley Head | | 14 | Structure & Interpretation of Computer Programs | Sussman, Gerald | computer_science | 240 | MIT Press | | 15 | Age of Wrath, The | Eraly, Abraham | history | 238 | Penguin | | 16 | Trial, The | Kafka, Frank | fiction | 198 | Random House | | 17 | Statistical Decision Theory' | Pratt, John | data_science | 236 | MIT Press | | 18 | Data Mining Handbook | Nisbet, Robert | data_science | 242 | Apress | | 19 | New Machiavelli, The | Wells, HG | fiction | 180 | Penguin | | 20 | Physics & Philosophy | Heisenberg, Werner | science | 197 | Penguin | | 21 | Making Software | Oram, Andy | computer_science | 232 | O'Reilly | | . | ....... | ....... | .... | ... | .... | | . | ....... | ....... | .... | ... | .... |
চ্যাটএসকিউএল দুটি প্রধান অংশ নিয়ে গঠিত। প্রথমত, ChatGPT-এর মাধ্যমে প্রদত্ত প্লেইন টেক্সট থেকে mysql কোয়েরি তৈরি করা হয়। এই উত্পন্ন প্রশ্ন নির্বাহ করা হয়. দ্বিতীয় ধাপে, ডাটাবেসে ফিরে আসা ফলাফলগুলি মূল্যায়ন করা হয়। এই পর্যায়ে, ফলাফলগুলি হয় সরাসরি ব্যবহারকারীর কাছে উপস্থাপন করা যেতে পারে বা আরও বিশ্লেষণ এবং ব্যাখ্যার জন্য ChatGPT-এ ফেরত পাঠানো যেতে পারে। তাই আপনি ChatGPT এর সাথে আপনার ডাটাবেস সম্পর্কে চ্যাট করতে পারেন।
ধরুন ব্যবহারকারী চান “আমাকে বইয়ের টাইপ ফিকশন দেখান যার উচ্চতা 175-এর থেকে বড় এবং 178-এর চেয়ে ছোট। লেখক 'ডয়েল, আর্থার কোনান' হওয়া উচিত নয়।” তাই এই ক্ষেত্রে নিম্নলিখিত কমান্ডটি ব্যবহার করা যেতে পারে।
python3 chatsql.py -p 'Show me the book type fiction which they height bigger than 175 and smaller than 178. The author shouldn't be 'Doyle, Arthur Conan'. '
ফলস্বরূপ, নিম্নলিখিত তথ্য প্রাপ্ত হয়.
CHATGPT QUERY------------------: SELECT * FROM bt WHERE Genre = 'Fiction' AND Height > 175 AND Height < 178 AND Author != 'Doyle, Arthur Conan' RAW RESULT------------------: [(32, 'Pillars of the Earth, The', 'Follett, Ken', 'fiction', 176, 'Random House'), (37, 'Veteran, The', 'Forsyth, Frederick', 'fiction', 177, 'Transworld'), (38, 'False Impressions', 'Archer, Jeffery', 'fiction', 177, 'Pan'), (72, 'Prisoner of Birth, A', 'Archer, Jeffery', 'fiction', 176, 'Pan'), (87, 'City of Joy, The', 'Lapierre, Dominique', 'fiction', 177, 'vikas'), (128, 'Rosy is My Relative', 'Durrell, Gerald', 'fiction', 176, 'nan')] PROCESSED RESULT------------------ : The books 'Pillars of the Earth, The' by Ken Follett, 'Veteran, The' by Frederick Forsyth, 'False Impressions' by Jeffery Archer, 'Prisoner of Birth, A' by Jeffery Archer, 'City of Joy, The' by Dominique Lapierre, and 'Rosy is My Relative' by Gerald Durrell are all fiction books with 176 or 177 pages published by Random House, Transworld, Pan, Vikas, and Nan, respectively.
যদি আপনার ডাটাবেস কলামগুলি যথাযথভাবে নামকরণ করা হয়, chatgpt এই নামগুলি বুঝতে পারবে এবং সেই অনুযায়ী প্রশ্নের উত্তর দেবে৷ যাইহোক, এমন কিছু উদাহরণ থাকতে পারে যেখানে ডাটাবেসের কলামের নামগুলি অর্থপূর্ণ নয় বা ChatGPT তাদের প্রসঙ্গ সম্পূর্ণরূপে বের করতে পারে না। তাই, সিস্টেমের কার্যকারিতা সঠিকভাবে নিশ্চিত করার জন্য, ChatGPT-কে ডাটাবেস সম্পর্কে পূর্বে তথ্য প্রদান করা প্রয়োজন। Info.json ফাইলটি তথ্য যোগ করতে ব্যবহার করা যেতে পারে।
+-----+--------------------------------------------------------+------------------------+-------------------+------+------------------+ | ID | aa | bb | cc | dd | ee | +-----+--------------------------------------------------------+------------------------+-------------------+------+------------------+ | 1 | Fundamentals of Wavelets | Goswami, Jaideva | signal_processing | 228 | Wiley | | 2 | Data Smart | Foreman, John | data_science | 235 | Wiley | | 3 | God Created the Integers | Hawking, Stephen | mathematics | 197 | Penguin | | 4 | Superfreakonomics | Dubner, Stephen | economics | 179 | HarperCollins | | 5 | Orientalism | Said, Edward | history | 197 | Penguin | | . | ....... | ....... | .... | ... | .... | | . | ....... | ....... | .... | ... | .... |
একটি উদাহরণ হিসাবে, আসুন নীচের মত একটি খারাপ নামে ডাটাবেস আছে. এই ক্ষেত্রে, ডাটাবেস সম্পর্কে প্রয়োজনীয় তথ্য info.json ফাইলে ইনপুট করা হয়।
{“bt”: “টেবিলের নাম”, “aa”: “বইয়ের শিরোনাম”, “bb”: “বইয়ের লেখক”, “cc”: “বইয়ের ধরন”, “dd”: “উচ্চতা বই", "ই": "বই প্রকাশক"}
এবং তারপর একই কমান্ড ব্যবহার করুন:
python3 chatsql.py -p 'Show me the book type fiction which they height bigger than 175 and smaller than 178. The author shouldn't be 'Doyle, Arthur Conan'. '
এমনকি ডাটাবেসের কলামের নামগুলি খারাপভাবে নির্বাচিত হলেও, chatgpt সঠিক প্রশ্ন তৈরি করে কারণ আমরা সঠিক তথ্য প্রদান করি
{'query': "SELECT aa, bb, cc, dd FROM bt WHERE cc = 'fiction' AND dd > 175 AND dd < 178 AND bb != 'Doyle, Arthur Conan'", 'raw_result': "[('Pillars of the Earth, The', 'Follett, Ken', 'fiction', 176), ('Veteran, The', 'Forsyth, Frederick', 'fiction', 177), ('False Impressions', 'Archer, Jeffery', 'fiction', 177), ('Prisoner of Birth, A', 'Archer, Jeffery', 'fiction', 176), ('City of Joy, The', 'Lapierre, Dominique', 'fiction', 177), ('Rosy is My Relative', 'Durrell, Gerald', 'fiction', 176)]", 'processed_result': '\nThe books "Pillars of the Earth, The" by Ken Follett, "Veteran, The" by Frederick Forsyth, "False Impressions" by Jeffery Archer, "Prisoner of Birth, A" by Jeffery Archer, "City of Joy, The" by Dominique Lapierre and "Rosy is My Relative" by Gerald Durrell are all fiction and have page lengths of 176 or 177.'}
পরবর্তী প্রকল্প হতে পারে ফ্রি মডেল (লামা) সহ প্রম্পট থেকে প্রশ্ন (মঙ্গো, এসকিউএল) তৈরি করা।
প্রজেক্ট রেপো: https://github.com/ademakdogan/ChatSQL
গিথুব: https://github.com/ademakdogan
লিঙ্কডইন: https://www.linkedin.com/in/adem-akdoğan-948334177/
[১] ব্রাউন, টিবি, মান, বি., রাইডার, এন., সুব্বিয়া, এম., কাপলান, জে., ধারিওয়াল, পি. এবং আমোদেই, ডি. (2020)। ভাষার মডেল অল্প-শট লার্নার্স। arXiv প্রিপ্রিন্ট arXiv:2005.14165।
[২] Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., Sutskever, I. (2019)। ভাষার মডেলগুলি তত্ত্বাবধানহীন মাল্টিটাস্ক লার্নার্স। OpenAI ব্লগ।
[৩] ভাসওয়ানি, এ., শাজির, এন., পারমার, এন., উসকোরিট, জে., জোন্স, এল., গোমেজ, এএন এবং পোলোসুখিন, আই. (2017)। মনোযোগ আপনার প্রয়োজন সব. নিউরাল ইনফরমেশন প্রসেসিং সিস্টেমের অগ্রগতিতে (পিপি। 5998-6008)।
[৪] ডেভলিন, জে., চ্যাং, এমডব্লিউ, লি, কে., এবং টুটানোভা, কে. (2019)। BERT: ভাষা বোঝার জন্য গভীর দ্বিমুখী ট্রান্সফরমারের প্রাক-প্রশিক্ষণ। অ্যাসোসিয়েশন ফর কম্পিউটেশনাল লিঙ্গুইস্টিকস: হিউম্যান ল্যাঙ্গুয়েজ টেকনোলজিস-এর উত্তর আমেরিকান অধ্যায়ের 2019 সম্মেলনের কার্যপ্রণালীতে (ভলিউম 1, পৃ. 4171–4186)।
[৫] লুইস, এম., লিউ, ওয়াই., গোয়াল, এন., গাজভিনিনেজাদ, এম., মোহাম্মদ, এ., লেভি, ও., এবং জেটলমোয়ার, এল. (2019)। BART: প্রাকৃতিক ভাষা তৈরি, অনুবাদ এবং বোধগম্যতার জন্য সিকোয়েন্স-টু-সিকোয়েন্স প্রাক-প্রশিক্ষণ ডিনোইসিং। arXiv প্রিপ্রিন্ট arXiv:1910.13461।
[৬] Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., … & Liu, PJ (2019)। ইউনিফাইড টেক্সট-টু-টেক্সট ট্রান্সফরমারের মাধ্যমে ট্রান্সফার শেখার সীমা অন্বেষণ করা। arXiv প্রিপ্রিন্ট arXiv:1910.10683.
[৭] ভাসওয়ানি, এ., এবং অন্যান্য। (2017)। ট্রান্সফরমার-এক্সএল: একটি নির্দিষ্ট দৈর্ঘ্যের প্রেক্ষাপটের বাইরে মনোযোগী ভাষার মডেল। arXiv প্রিপ্রিন্ট arXiv:1901.02860।