Skip to content

Latest commit

 

History

History
250 lines (161 loc) · 27.2 KB

File metadata and controls

250 lines (161 loc) · 27.2 KB

উন্নত প্রম্পট তৈরি করা

উন্নত প্রম্পট তৈরি করা

আগের অধ্যায় থেকে কিছু শেখা পুনরায় দেখে নেওয়া যাক:

প্রম্পট ইঞ্জিনিয়ারিং হল একটি প্রক্রিয়া যার মাধ্যমে আমরা মডেলকে আরও প্রাসঙ্গিক উত্তর দেওয়ার দিকে পরিচালিত করি আরও কার্যকর নির্দেশনা বা প্রসঙ্গ প্রদান করে।

প্রম্পট লেখার দুটি ধাপ রয়েছে: প্রাসঙ্গিক প্রসঙ্গ প্রদান করে প্রম্পট তৈরি করা এবং অপ্টিমাইজেশন, যা প্রম্পটকে ধীরে ধীরে উন্নত করার প্রক্রিয়া।

এই পর্যায়ে, আমাদের কাছে প্রম্পট লেখার মৌলিক ধারণা রয়েছে, তবে আমাদের আরও গভীরে যেতে হবে। এই অধ্যায়ে, আপনি বিভিন্ন প্রম্পট চেষ্টা করার থেকে শুরু করে কেন একটি প্রম্পট অন্যটির চেয়ে ভাল তা বুঝতে পারবেন। আপনি কিছু মৌলিক কৌশল অনুসরণ করে প্রম্পট তৈরি করতে শিখবেন যা যেকোনো LLM-এ প্রয়োগ করা যেতে পারে।

পরিচিতি

এই অধ্যায়ে আমরা নিম্নলিখিত বিষয়গুলি কভার করব:

  • বিভিন্ন কৌশল প্রয়োগ করে প্রম্পট ইঞ্জিনিয়ারিং সম্পর্কে আপনার জ্ঞান প্রসারিত করুন।
  • আপনার প্রম্পটগুলি কনফিগার করুন যাতে আউটপুট পরিবর্তিত হয়।

শেখার লক্ষ্য

এই পাঠটি সম্পন্ন করার পরে, আপনি সক্ষম হবেন:

  • প্রম্পট ইঞ্জিনিয়ারিং কৌশল প্রয়োগ করুন যা আপনার প্রম্পটের ফলাফল উন্নত করে।
  • প্রম্পটিং সম্পাদন করুন যা হয় পরিবর্তিত বা নির্ধারিত।

প্রম্পট ইঞ্জিনিয়ারিং

প্রম্পট ইঞ্জিনিয়ারিং হল এমন প্রম্পট তৈরি করার প্রক্রিয়া যা কাঙ্ক্ষিত ফলাফল তৈরি করবে। প্রম্পট ইঞ্জিনিয়ারিং শুধুমাত্র একটি টেক্সট প্রম্পট লেখার চেয়ে বেশি কিছু। এটি একটি প্রকৌশল শৃঙ্খলা নয়, বরং এটি এমন একটি কৌশল সেট যা আপনি কাঙ্ক্ষিত ফলাফল পেতে প্রয়োগ করতে পারেন।

একটি প্রম্পটের উদাহরণ

চলুন একটি সাধারণ প্রম্পট দেখি:

ভূগোল সম্পর্কে ১০টি প্রশ্ন তৈরি করুন।

এই প্রম্পটে, আপনি প্রকৃতপক্ষে বিভিন্ন প্রম্পট কৌশল প্রয়োগ করছেন।

চলুন এটি বিশ্লেষণ করি।

  • প্রসঙ্গ, আপনি নির্দিষ্ট করেছেন এটি "ভূগোল" সম্পর্কে হওয়া উচিত।
  • আউটপুট সীমাবদ্ধ করা, আপনি ১০টির বেশি প্রশ্ন চান না।

সাধারণ প্রম্পটিংয়ের সীমাবদ্ধতা

আপনি কাঙ্ক্ষিত ফলাফল পেতে পারেন বা নাও পেতে পারেন। আপনার প্রশ্নগুলি তৈরি হবে, তবে ভূগোল একটি বড় বিষয় এবং আপনি যা চান তা নাও পেতে পারেন নিম্নলিখিত কারণগুলির জন্য:

  • বড় বিষয়, আপনি জানেন না এটি দেশ, রাজধানী, নদী ইত্যাদি সম্পর্কে হবে কিনা।
  • ফরম্যাট, যদি আপনি চান যে প্রশ্নগুলি একটি নির্দিষ্টভাবে ফরম্যাট করা হোক তাহলে কী হবে?

যেমনটি আপনি দেখতে পাচ্ছেন, প্রম্পট তৈরি করার সময় অনেক কিছু বিবেচনা করতে হয়।

এখন পর্যন্ত, আমরা একটি সাধারণ প্রম্পটের উদাহরণ দেখেছি, তবে জেনারেটিভ AI আরও অনেক কিছু করতে সক্ষম যা বিভিন্ন ভূমিকা এবং শিল্পে মানুষের সাহায্য করতে পারে। চলুন পরবর্তী অংশে কিছু মৌলিক কৌশল অন্বেষণ করি।

প্রম্পটিংয়ের কৌশল

প্রথমে, আমাদের বুঝতে হবে যে প্রম্পটিং একটি LLM-এর উদ্ভূত বৈশিষ্ট্য, যার অর্থ এটি মডেলে অন্তর্নির্মিত বৈশিষ্ট্য নয় বরং এটি আমরা মডেল ব্যবহার করার সময় আবিষ্কার করি।

কিছু মৌলিক কৌশল রয়েছে যা আমরা একটি LLM-কে প্রম্পট করতে ব্যবহার করতে পারি। চলুন সেগুলি অন্বেষণ করি।

  • জিরো-শট প্রম্পটিং, এটি প্রম্পটিংয়ের সবচেয়ে মৌলিক রূপ। এটি একটি একক প্রম্পট যা শুধুমাত্র LLM-এর প্রশিক্ষণ ডেটার উপর ভিত্তি করে একটি প্রতিক্রিয়া অনুরোধ করে।
  • ফিউ-শট প্রম্পটিং, এই ধরনের প্রম্পটিং LLM-কে গাইড করে ১ বা একাধিক উদাহরণ প্রদান করে যা এটি তার প্রতিক্রিয়া তৈরি করতে নির্ভর করতে পারে।
  • চেইন-অফ-থট, এই ধরনের প্রম্পটিং LLM-কে একটি সমস্যাকে ধাপে ধাপে ভেঙে কীভাবে সমাধান করতে হয় তা শেখায়।
  • জেনারেটেড নলেজ, প্রম্পটের প্রতিক্রিয়া উন্নত করতে, আপনি আপনার প্রম্পটের সাথে অতিরিক্তভাবে তৈরি করা তথ্য বা জ্ঞান প্রদান করতে পারেন।
  • লিস্ট টু মোস্ট, চেইন-অফ-থটের মতো, এই কৌশলটি একটি সমস্যাকে একাধিক ধাপে ভেঙে সেগুলি ক্রমানুসারে সম্পাদন করতে বলা।
  • সেলফ-রিফাইন, এই কৌশলটি LLM-এর আউটপুট সমালোচনা করা এবং তারপরে এটি উন্নত করতে বলা।
  • মাইয়ুটিক প্রম্পটিং, এখানে আপনি নিশ্চিত করতে চান যে LLM-এর উত্তর সঠিক এবং আপনি এটি উত্তরটির বিভিন্ন অংশ ব্যাখ্যা করতে বলেন। এটি সেলফ-রিফাইনের একটি রূপ।

জিরো-শট প্রম্পটিং

এই প্রম্পটিং স্টাইলটি খুবই সহজ, এটি একটি একক প্রম্পট নিয়ে গঠিত। এই কৌশলটি সম্ভবত আপনি LLM সম্পর্কে শিখতে শুরু করার সময় ব্যবহার করছেন। এখানে একটি উদাহরণ:

  • প্রম্পট: "অ্যালজেব্রা কী?"
  • উত্তর: "অ্যালজেব্রা হল গণিতের একটি শাখা যা গাণিতিক প্রতীক এবং এই প্রতীকগুলি পরিচালনার নিয়মগুলি অধ্যয়ন করে।"

ফিউ-শট প্রম্পটিং

এই প্রম্পটিং স্টাইলটি মডেলকে কয়েকটি উদাহরণ এবং অনুরোধের সাথে সাহায্য করে। এটি একটি একক প্রম্পট নিয়ে গঠিত যা অতিরিক্ত টাস্ক-নির্দিষ্ট ডেটা সহ। এখানে একটি উদাহরণ:

  • প্রম্পট: "শেক্সপিয়ারের স্টাইলে একটি কবিতা লিখুন। এখানে শেক্সপিয়ারের কয়েকটি সনেটের উদাহরণ দেওয়া হলো: সনেট ১৮: 'আমি কি তোমাকে একটি গ্রীষ্মের দিনের সাথে তুলনা করব? তুমি আরও সুন্দর এবং আরও মৃদু...' সনেট ১১৬: 'সত্যিকারের মনগুলির বিবাহে বাধা দেবার অনুমতি দেব না। ভালোবাসা ভালোবাসা নয় যা পরিবর্তন খুঁজে পেলে পরিবর্তিত হয়...' সনেট ১৩২: 'তোমার চোখ আমি ভালোবাসি, এবং তারা, আমাকে করুণার সাথে, আমার হৃদয়কে যন্ত্রণা দেয় অবজ্ঞার সাথে,...' এখন, চাঁদের সৌন্দর্য সম্পর্কে একটি সনেট লিখুন।"
  • উত্তর: "আকাশে, চাঁদ নরমভাবে জ্বলজ্বল করে, রূপালী আলো যা তার কোমল অনুগ্রহ ছড়ায়,..."

উদাহরণগুলি LLM-কে কাঙ্ক্ষিত আউটপুটের প্রসঙ্গ, ফরম্যাট বা স্টাইল বুঝতে সাহায্য করে। এগুলি মডেলকে নির্দিষ্ট কাজটি বুঝতে এবং আরও সঠিক ও প্রাসঙ্গিক প্রতিক্রিয়া তৈরি করতে সাহায্য করে।

চেইন-অফ-থট

চেইন-অফ-থট একটি খুব আকর্ষণীয় কৌশল কারণ এটি LLM-কে একটি সিরিজ ধাপে নিয়ে যাওয়ার বিষয়ে। ধারণাটি হল LLM-কে এমনভাবে নির্দেশ দেওয়া যাতে এটি বুঝতে পারে কীভাবে কিছু করতে হয়। নিম্নলিখিত উদাহরণটি বিবেচনা করুন, চেইন-অফ-থট ছাড়া এবং সহ:

- প্রম্পট: "অ্যালিসের ৫টি আপেল আছে, সে ৩টি আপেল ফেলে দেয়, ২টি ববকে দেয় এবং বব একটি ফেরত দেয়, অ্যালিসের কাছে কতটি আপেল আছে?"
- উত্তর: ৫

LLM ৫ উত্তর দেয়, যা ভুল। সঠিক উত্তর হল ১ আপেল, গণনা অনুযায়ী (৫ -৩ -২ + ১ = ১)।

তাহলে আমরা কীভাবে LLM-কে এটি সঠিকভাবে করতে শিখাতে পারি?

চলুন চেইন-অফ-থট চেষ্টা করি। চেইন-অফ-থট প্রয়োগ করার অর্থ:

  1. LLM-কে একটি অনুরূপ উদাহরণ দিন।
  2. গণনা দেখান এবং কীভাবে এটি সঠিকভাবে গণনা করতে হয় তা দেখান।
  3. মূল প্রম্পট প্রদান করুন।

এখানে কিভাবে:

  • প্রম্পট: "লিসার ৭টি আপেল আছে, সে ১টি আপেল ফেলে দেয়, ৪টি আপেল বার্টকে দেয় এবং বার্ট একটি ফেরত দেয়: ৭ -১ = ৬ ৬ -৪ = ২ ২ +১ = ৩
    অ্যালিসের ৫টি আপেল আছে, সে ৩টি আপেল ফেলে দেয়, ২টি ববকে দেয় এবং বব একটি ফেরত দেয়, অ্যালিসের কাছে কতটি আপেল আছে?" উত্তর: ১

দেখুন কিভাবে আমরা উল্লেখযোগ্যভাবে দীর্ঘ প্রম্পট লিখেছি অন্য একটি উদাহরণ, একটি গণনা এবং তারপর মূল প্রম্পট দিয়ে এবং আমরা সঠিক উত্তর ১-এ পৌঁছেছি।

যেমনটি আপনি দেখতে পাচ্ছেন, চেইন-অফ-থট একটি খুব শক্তিশালী কৌশল।

জেনারেটেড নলেজ

অনেক সময় যখন আপনি একটি প্রম্পট তৈরি করতে চান, আপনি এটি আপনার নিজের কোম্পানির ডেটা ব্যবহার করে করতে চান। আপনি চান প্রম্পটের একটি অংশ কোম্পানির থেকে আসুক এবং অন্য অংশটি আপনার আগ্রহের প্রকৃত প্রম্পট হোক।

একটি উদাহরণ হিসাবে, যদি আপনি বীমা ব্যবসায় থাকেন তবে আপনার প্রম্পটটি এইরকম দেখতে পারে:

{{company}}: {{company_name}}
{{products}}:
{{products_list}}
Please suggest an insurance given the following budget and requirements:
Budget: {{budget}}
Requirements: {{requirements}}

উপরের প্রম্পটে, আপনি দেখতে পাচ্ছেন কিভাবে প্রম্পটটি একটি টেমপ্লেট ব্যবহার করে তৈরি করা হয়েছে। টেমপ্লেটে কিছু ভেরিয়েবল রয়েছে, {{variable}} দ্বারা চিহ্নিত, যা একটি কোম্পানি API থেকে প্রকৃত মান দ্বারা প্রতিস্থাপিত হবে।

যখন ভেরিয়েবলগুলি আপনার কোম্পানির বিষয়বস্তু দ্বারা প্রতিস্থাপিত হয় তখন প্রম্পটটি দেখতে কেমন হতে পারে তার একটি উদাহরণ এখানে:

Insurance company: ACME Insurance
Insurance products (cost per month):
- Car, cheap, 500 USD
- Car, expensive, 1100 USD
- Home, cheap, 600 USD
- Home, expensive, 1200 USD
- Life, cheap, 100 USD

Please suggest an insurance given the following budget and requirements:
Budget: $1000
Requirements: Car, Home, and Life insurance

এই প্রম্পটটি একটি LLM-এর মাধ্যমে চালানো হলে এই ধরনের প্রতিক্রিয়া তৈরি করবে:

Given the budget and requirements, we suggest the following insurance package from ACME Insurance:
- Car, cheap, 500 USD
- Home, cheap, 600 USD
- Life, cheap, 100 USD
Total cost: $1,200 USD

যেমনটি আপনি দেখতে পাচ্ছেন, এটি লাইফ ইন্সুরেন্সও প্রস্তাব করছে, যা এটি করা উচিত নয়। এই ফলাফলটি ইঙ্গিত দেয় যে আমরা প্রম্পটটি আরও স্পষ্ট করার জন্য পরিবর্তন করে অপ্টিমাইজ করতে হবে। কিছু ট্রায়াল এবং এরর করার পরে, আমরা নিম্নলিখিত প্রম্পটে পৌঁছাই:

Insurance company: ACME Insurance
Insurance products (cost per month):
- type: Car, cheap, cost: 500 USD
- type: Car, expensive, cost: 1100 USD
- type: Home, cheap, cost: 600 USD
- type: Home, expensive, cost: 1200 USD
- type: Life, cheap, cost: 100 USD

Please suggest an insurance given the following budget and requirements:
Budget: $1000 restrict choice to types: Car, Home

দেখুন কিভাবে টাইপ এবং কস্ট যোগ করা এবং রেস্ট্রিক্ট শব্দটি ব্যবহার করা LLM-কে আমাদের চাহিদা বুঝতে সাহায্য করেছে।

এখন আমরা নিম্নলিখ যেমনটি আপনি দেখতে পাচ্ছেন, ফলাফলগুলো একেবারে ভিন্ন হতে পারে।

মনে রাখবেন, আরও কিছু প্যারামিটার আছে যা আপনি পরিবর্তন করতে পারেন আউটপুটের বৈচিত্র্য আনতে, যেমন top-k, top-p, repetition penalty, length penalty এবং diversity penalty, তবে এই পাঠ্যক্রমের আওতার বাইরে।

ভালো অভ্যাস

আপনার যা প্রয়োজন তা পাওয়ার জন্য অনেক অভ্যাস প্রয়োগ করতে পারেন। আপনি যত বেশি প্রম্পটিং ব্যবহার করবেন, তত বেশি নিজের স্টাইল খুঁজে পাবেন।

আমরা যে কৌশলগুলো আলোচনা করেছি তার পাশাপাশি, LLM-এ প্রম্পটিং করার সময় কিছু ভালো অভ্যাস বিবেচনা করা উচিত।

এখানে কিছু ভালো অভ্যাস উল্লেখ করা হলো:

  • প্রসঙ্গ নির্ধারণ করুন। প্রসঙ্গ গুরুত্বপূর্ণ, যত বেশি আপনি ডোমেইন, বিষয় ইত্যাদি নির্দিষ্ট করতে পারবেন ততই ভালো।
  • আউটপুট সীমিত করুন। যদি আপনি নির্দিষ্ট সংখ্যক আইটেম বা নির্দিষ্ট দৈর্ঘ্য চান, তা উল্লেখ করুন।
  • কি এবং কিভাবে উভয়ই নির্দিষ্ট করুন। মনে রাখুন, আপনি কি চান এবং কিভাবে চান তা উল্লেখ করুন, যেমন "একটি Python Web API তৈরি করুন যেখানে routes থাকবে products এবং customers, এটি ৩টি ফাইলে ভাগ করুন"।
  • টেমপ্লেট ব্যবহার করুন। অনেক সময়, আপনি আপনার কোম্পানির ডেটা দিয়ে প্রম্পটগুলো সমৃদ্ধ করতে চাইবেন। এটি করার জন্য টেমপ্লেট ব্যবহার করুন। টেমপ্লেটগুলোতে ভ্যারিয়েবল থাকতে পারে যা আপনি আসল ডেটা দিয়ে প্রতিস্থাপন করবেন।
  • সঠিকভাবে বানান লিখুন। LLMs আপনাকে সঠিক উত্তর দিতে পারে, তবে আপনি যদি সঠিকভাবে বানান লিখেন, তাহলে আরও ভালো উত্তর পাবেন।

অ্যাসাইনমেন্ট

এখানে Python কোড দেওয়া হলো যা Flask ব্যবহার করে একটি সাধারণ API তৈরি করার পদ্ধতি দেখায়:

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def hello():
    name = request.args.get('name', 'World')
    return f'Hello, {name}!'

if __name__ == '__main__':
    app.run()

GitHub Copilot বা ChatGPT-এর মতো একটি AI সহকারী ব্যবহার করুন এবং "self-refine" কৌশল প্রয়োগ করে কোডটি উন্নত করুন।

সমাধান

অনুগ্রহ করে কোডে উপযুক্ত প্রম্পট যোগ করে অ্যাসাইনমেন্টটি সমাধান করার চেষ্টা করুন।

Tip

একটি প্রম্পট তৈরি করুন যা উন্নতির জন্য অনুরোধ করে, উন্নতির সংখ্যা সীমিত করা একটি ভালো ধারণা। আপনি নির্দিষ্টভাবে উন্নতির জন্য অনুরোধ করতে পারেন, যেমন আর্কিটেকচার, পারফরম্যান্স, সিকিউরিটি ইত্যাদি।

Solution

জ্ঞান যাচাই

আমি কেন chain-of-thought প্রম্পটিং ব্যবহার করব? আমাকে ১টি সঠিক উত্তর এবং ২টি ভুল উত্তর দেখান।

  1. LLM-কে একটি সমস্যা সমাধান করতে শেখানোর জন্য।
  2. B, LLM-কে কোডে ত্রুটি খুঁজে বের করতে শেখানোর জন্য।
  3. C, LLM-কে বিভিন্ন সমাধান বের করতে নির্দেশ দেওয়ার জন্য।

A: 1, কারণ chain-of-thought হলো LLM-কে একটি সমস্যা সমাধানের পদ্ধতি দেখানো এবং অনুরূপ সমস্যাগুলো কীভাবে সমাধান করা হয়েছে তা প্রদর্শন করা।

🚀 চ্যালেঞ্জ

আপনি অ্যাসাইনমেন্টে self-refine কৌশল ব্যবহার করেছেন। আপনি যে কোনো প্রোগ্রাম তৈরি করেছেন তা নিন এবং এতে কী উন্নতি করতে চান তা বিবেচনা করুন। এখন self-refine কৌশল ব্যবহার করে প্রস্তাবিত পরিবর্তনগুলো প্রয়োগ করুন। আপনি ফলাফল কেমন মনে করেছেন, ভালো না খারাপ?

অসাধারণ কাজ! আপনার শেখা চালিয়ে যান

এই পাঠ শেষ করার পর, আমাদের Generative AI Learning collection দেখুন এবং আপনার Generative AI জ্ঞান আরও উন্নত করুন!

Lesson 6-এ যান যেখানে আমরা Prompt Engineering-এর জ্ঞান প্রয়োগ করে text generation apps তৈরি করব


অস্বীকৃতি:
এই নথিটি AI অনুবাদ পরিষেবা Co-op Translator ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা আসল সংস্করণকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।