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

জেনারেটিভ এআই মডিউলে , আপনি শিখেছেন যে জেনারেটিভ এআই মডেলের ইনপুট স্পেস কার্যত সীমাহীন। আপনার ব্যবহারকারীর প্রত্যাশার সাথে সামঞ্জস্যপূর্ণ আউটপুট তৈরি করতে, আপনাকে প্রম্পট তৈরি করতে হবে। একটি প্রম্পট হল আপনার অ্যাপ্লিকেশন এবং মডেলের মধ্যে একটি কাঠামোগত চুক্তি।

একটি সুলিখিত প্রম্পট:

  • এলএলএম কীভাবে তার প্রতিক্রিয়া তৈরি করবে তা বর্ণনা করে।
  • এতে একাধিক উপাদান রয়েছে যা সময়ের সাথে সাথে সংস্করণ, পরীক্ষা এবং উন্নত করা যেতে পারে।
  • দল জুড়ে সহযোগিতার জন্য একটি ভাগ করা নিদর্শন হিসেবে কাজ করতে পারে।

এই মডিউলে, আপনি শিখবেন কিভাবে কার্যকর প্রম্পট লিখতে হয়। আমরা ব্যাখ্যা করব কিভাবে একটি প্রম্পট গঠন করা হয় এবং এর উপাদানগুলি সিস্টেম এবং শেষ ব্যবহারকারীর মধ্যে কীভাবে বিতরণ করা হয়। আপনি মৌলিক প্রম্পট কৌশল এবং সেগুলি কীভাবে প্রয়োগ করতে হবে তাও শিখবেন।

এই মডিউল জুড়ে, আমরা একটি ভাগ করা উদাহরণ ব্যবহার করব: BlogBuddy, একটি AI-চালিত লেখা সহকারী, যা সাইবার এজেন্টের প্রম্পট API ব্যবহার দ্বারা অনুপ্রাণিত।

ব্লগবাডি সিস্টেম ব্লুপ্রিন্টের জন্য জেনারেটিভ এআই মডিউলে ফিরে যান।

প্রম্পট উপাদান

মডেল আচরণ পরিচালনায় প্রতিটি প্রম্পট উপাদানের একটি নির্দিষ্ট ভূমিকা রয়েছে।

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

আপনার প্রম্পটে এই উপাদানগুলির কিছু বা সমস্ত অন্তর্ভুক্ত থাকতে পারে। নিম্নলিখিত উদাহরণটি BlogBuddy এর লেখা সহকারী বৈশিষ্ট্যের জন্য এই উপাদানগুলিকে চিত্রিত করে।

### Context

You are a writing assistant for blog authors.
Your job is to generate helpful, concise, and engaging content.

### Instruction

Generate 3 alternative titles for the user's blog post with a given style.

### Input variables

Here is the content of the blog post:
${blogPostContent}

Here is the desired style:
${titleStyle}

### Output format

Return valid JSON ONLY, in the following exact structure:
{
  "titles": ["Title option 1", "Title option 2", "Title option 3"]
}

### Examples

Example input:
{
  "blogPostContent": "I finally visited the small neighborhood café I've been eyeing for months...",
  "titleStyle": "friendly"
}

Example output:
{
  "titles": [
    "A First Visit to the Neighborhood Café",
    "Trying the Café I've Wanted to Visit for Months",
    "My Experience at a Long-Awaited Local Spot"
  ]
}
### Constraints

- Each title must be under 128 characters.
- Titles must be original, not copied verbatim from the draft.
- Keep the tone natural and human. Avoid emojis unless explicitly requested.
- Avoid sensationalism or clickbait.
- If the draft includes multiple topics, choose the most prominent topic.

আপনার প্রথম প্রম্পটের জন্য, প্রয়োজনীয় জিনিসগুলি দিয়ে শুরু করুন: নির্দেশনা এবং আউটপুট ফর্ম্যাট। তারপর, ফলাফল বিশ্লেষণ করার সময় এবং সাফল্যের জন্য কোন সূক্ষ্ম নিয়ন্ত্রণগুলি প্রয়োজন তা নির্ধারণ করার সময় পুনরাবৃত্তিমূলকভাবে আরও উপাদান যুক্ত করুন।

সিস্টেম বনাম ব্যবহারকারীর প্রম্পট

কিছু প্রম্পট উপাদান হার্ড-কোডেড, অন্যগুলি শেষ ব্যবহারকারী দ্বারা সরবরাহ করা যেতে পারে:

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

  • ব্যবহারকারীর প্রম্পটে তাৎক্ষণিক অনুরোধ থাকে যা একটি আউটপুটের দিকে নিয়ে যায়। ব্যবহারকারী একটি নির্দিষ্ট কাজের অনুরোধ করেন, যার মধ্যে নির্দিষ্ট ভেরিয়েবল থাকতে পারে। উদাহরণস্বরূপ, "এই পোস্টের জন্য তিনটি শিরোনাম দেখান," "এই অনুচ্ছেদটি চালিয়ে যান," অথবা "এই অনুলিপিটিকে আরও আনুষ্ঠানিক করে তুলুন।"

বেশিরভাগ জেনারেটিভ এআই এপিআই আপনাকে বার্তাগুলির একটি অ্যারে হিসাবে একটি প্রম্পট গঠন করতে দেয়, প্রতিটিতে একটি ভূমিকা (সিস্টেম বা ব্যবহারকারী) এবং বিষয়বস্তু থাকে। এটি স্থিতিশীল, বিশ্বব্যাপী নির্দেশাবলীকে গতিশীল, প্রতি-অনুরোধ ইনপুট থেকে আলাদা করা সহজ করে তোলে।

সিস্টেম প্রম্পটে কোন উপাদানগুলো অন্তর্ভুক্ত থাকবে এবং ব্যবহারকারীর উপর কী নির্দিষ্ট করার ভার ছেড়ে দেওয়া উচিত তা আপনি কীভাবে নির্ধারণ করবেন? উত্তরটি নির্ভর করে আপনার ব্যবহারকারীর অভিজ্ঞতা কতটা নমনীয় এবং আপনার মডেল কতটা সক্ষম তার উপর।

সীমিত ব্যবহারের ক্ষেত্রে

অত্যন্ত নির্দিষ্ট ব্যবহারের ক্ষেত্রে, বেশিরভাগ প্রম্পট সিস্টেম প্রম্পটে পূর্বনির্ধারিত করা যেতে পারে। উদাহরণস্বরূপ, BlogBuddy-তে, ব্যবহারকারীরা তাদের খসড়ার জন্য তৈরি শিরোনাম পরামর্শ তালিকাভুক্ত করতে "শিরোনাম দেখান" এ ক্লিক করতে পারেন।

কাজটি ঠিক করা হয়েছে, আউটপুট ফর্ম্যাট জানা আছে, এবং প্রত্যাশিত ফলাফল পেতে ব্যবহারকারীকে অতিরিক্ত প্রসঙ্গ প্রদান করতে হবে না। এই ক্ষেত্রে, আপনি সিস্টেম প্রম্পটে সমস্ত স্থিতিশীল নিয়ম, টোন নির্দেশিকা, আউটপুট স্কিমা এবং উদাহরণগুলি রাখুন।

Prompt API দিয়ে এটি তৈরি করতে, আমরা পুরো সেশনের জন্য সিস্টেম-স্তরের আচরণ নির্ধারণ করতে initialPrompts ব্যবহার করব:

// Defines stable behavior for the entire session
const session = await LanguageModel.create({
  initialPrompts: [
    {
      role: "system",
      content: `You are a blog-writing assistant.
      Your task is to generate high-quality titles for blog posts.
      Always respond in concise, friendly language.
      Return exactly 3 alternative titles.
      Produce valid JSON with a "titles" array of strings.`
    }
  ]
});

যখন ব্যবহারকারী Show Titles এ ক্লিক করেন, তখন বর্তমান কন্টেন্টের জন্য প্রম্পটটি চালু হয়:

// The only variable input is the blog content
const result = await session.prompt(blogContent);

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

তবে, অনেক বেশি স্ট্রাকচার্ড অ্যাকশন ব্যবহারকারীর অভিজ্ঞতাকে বিশৃঙ্খল করে তুলতে পারে। যখন এটি ঘটে, তখন আপনি আরও খোলামেলা ডিজাইনে যেতে চাইতে পারেন যা ব্যবহারকারীদের তাদের বেশিরভাগ প্রম্পট নিজেরাই নির্দিষ্ট করতে দেয়। আপনি UX প্যাটার্ন মডিউলে এই ডিজাইনটি অপ্টিমাইজ করার বিষয়ে আরও জানতে পারবেন।

নমনীয় কাজগুলি বিস্তারিত ব্যবহারকারীর প্রম্পটের উপর নির্ভর করে

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

নমনীয় কাজের ক্ষেত্রে, ব্যবহারকারীকে আরও তথ্য নির্দিষ্ট করতে হবে, কারণ সম্ভাব্য বিকল্পগুলির পরিসর অনেক বিস্তৃত। সিস্টেম প্রম্পট এখনও সামগ্রিক আচরণ নিয়ন্ত্রণ করে।

সেরা অনুশীলনগুলি হল:

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

আপনার পণ্যের প্রেক্ষাপটে নিয়ন্ত্রণ এবং ব্যবহারকারীর নমনীয়তার মধ্যে ধীরে ধীরে লেনদেন অপ্টিমাইজ করার জন্য আপনি এই নিয়মগুলি ব্যবহার করতে পারেন। ব্যবহারকারীর পছন্দ এবং আচরণগুলি নিবিড়ভাবে পর্যবেক্ষণ করুন। আরও নমনীয়তা সর্বদা প্রকৃত মূল্যে রূপান্তরিত হয় না। আরও বিস্তৃত প্রম্পট তৈরি করার জন্য আপনার ব্যবহারকারীদের সময়, দক্ষতা এবং জ্ঞানীয় ব্যান্ডউইথেরও প্রয়োজন।

সাধারণ প্রম্পট কৌশল

ডেভেলপাররা সাধারণত তাদের ব্যবহারের ক্ষেত্রে এবং মডেলের জন্য কোনটি সবচেয়ে ভালো কাজ করে তা খুঁজে বের করার জন্য বেশ কয়েকটি প্রম্পটিং কৌশল চেষ্টা করে।

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

আপনি মডেলটির জন্য কাজটি বর্ণনা করেন এবং সর্বোত্তমটির আশা করেন। উদাহরণস্বরূপ:

"What is the capital of France?"

অনেক AI কাজের জন্য জিরো-শট প্রম্পটিং একটি কার্যকর বেসলাইন। জটিল নয় এমন অনুরোধের জন্য, যেমন বিশ্বকোষীয় জ্ঞান অনুসন্ধানের জন্য, আপনার সম্ভবত এই কৌশলটি ব্যবহার করাই ভালো। তবে, বেশিরভাগ বাস্তব-বিশ্বের অ্যাপ্লিকেশনগুলিতে, আপনাকে অতিরিক্ত কন্ডিশনিং এবং যুক্তি ব্যবহার করে আপনার প্রম্পটটি প্রসারিত করতে হবে।

অল্প কিছুক্ষণের জন্য অনুরোধ

কয়েক-শট প্রম্পটিং এর মাধ্যমে, আপনি সঠিক আচরণ, স্টাইল, গঠন এবং অন্যান্য গুরুত্বপূর্ণ ভেরিয়েবলগুলি প্রদর্শনের জন্য উদাহরণ প্রদান করেন। এখানে অনুভূতির শ্রেণীবিভাগের জন্য একটি উদাহরণ প্রম্পট দেওয়া হল:

You classify user messages into one of the following categories:
- "positive"
- "negative"
- "neutral"
Here are examples to guide your classifications:
Input: "I love this product! It works perfectly."
Output: { "label": "positive" }

Input: "This is terrible. I want a refund."
Output: { "label": "negative" }

এই ধরণের ছদ্ম-ভবিষ্যদ্বাণীমূলক কাজের জন্য কিছু-শট প্রম্পটিং কার্যকর। এটি এমন কাজের ক্ষেত্রেও প্রয়োগ করা যেতে পারে যা একটি স্বীকৃত কাঠামো অনুসরণ করে, যেমন চিত্র 1-এ শিরোনাম তৈরি করা।

যখন আউটপুট স্পেস খুব প্রশস্ত হয়, যেমন ওপেন-এন্ডেড বা লংফর্ম কন্টেন্ট, তখন কয়েক-শট প্রম্পটিং সম্ভবত সেরা কৌশল নয়। অর্থপূর্ণভাবে স্থানটি কভার করে এমন উদাহরণ প্রদান করা কঠিন বা এমনকি অসম্ভব।

চিন্তার শৃঙ্খল প্ররোচনা

আপনি মডেলটিকে উত্তর দেওয়ার আগে ধাপে ধাপে যুক্তি করতে উৎসাহিত করেন। ধাপগুলি স্পষ্টভাবে বর্ণনা করা যেতে পারে, অথবা মডেলের উপরই সংজ্ঞায়িত করার দায়িত্ব ছেড়ে দেওয়া যেতে পারে। উদাহরণস্বরূপ:

"Think step-by-step to identify the main idea of this paragraph. Then produce a
short heading under 60 characters."

চিন্তার শৃঙ্খল এমন কাজের জন্য দুর্দান্ত কাজ করে যেখানে বহু-পদক্ষেপের যুক্তি এবং বাস্তবায়ন প্রয়োজন, যেমন একটি ব্লগ পোস্টের রূপরেখা তৈরি করা বা জটিল সিদ্ধান্তগুলিকে সমর্থন করা। এটি তথাকথিত যুক্তি মডেলের পিছনে প্রধান কৌশল।

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

আত্ম-প্রতিফলন প্ররোচনা

প্রাথমিক প্রজন্ম অনুসরণ করে, আপনি অনুরোধ করবেন যে মডেলটি তার নিজস্ব আউটপুট পর্যালোচনা এবং সংশোধন করে। উদাহরণস্বরূপ:

"Review your previous output.
Identify unclear phrasing and rewrite it more concisely."

সম্পাদনা বা পুনর্লিখনের সরঞ্জামের মতো পুনরাবৃত্তিমূলক পরিমার্জন থেকে উপকৃত কাজের জন্য আত্ম-প্রতিফলন বিশেষভাবে কার্যকর। এটি বাস্তবায়ন করা দ্রুত এবং উল্লেখযোগ্য মানের লাভ আনতে পারে। আপনার প্রম্পটটি ভালভাবে কাজ করার পরে একটি স্ব-প্রতিফলন লুপ উপকারী। প্রথমে, আরও স্পষ্টতা বা অতিরিক্ত ব্যবহারকারীর আনন্দের জন্য আউটপুটটি পরিমার্জন করুন।

আপনার টেকওয়ে

এই মডিউলে, আপনি শিখেছেন কিভাবে কাঠামোগত উপাদান থেকে প্রম্পট তৈরি করা হয়। বাস্তবে, প্রম্পট ইঞ্জিনিয়ারিং অত্যন্ত পরীক্ষামূলক। একাধিক রাউন্ড পরিমার্জনের পরেই স্পষ্টতা এবং নির্ভরযোগ্যতা আবির্ভূত হয়।

পরবর্তী মডিউলে, আমরা মূল্যায়ন-চালিত প্রম্পট ডেভেলপমেন্টের দিকে নজর দেব। এই অনুশীলনটি আপনাকে পদ্ধতিগতভাবে প্রম্পটগুলি উন্নত করতে এবং আপনার পণ্য এবং আপনার ব্যবহারকারীদের জন্য সবচেয়ে ভালো কাজ করে এমন বিষয়গুলিতে একত্রিত হতে সহায়তা করে।

রিসোর্স

এই প্রতিটি কৌশলের নিজস্ব রূপ এবং সর্বোত্তম অনুশীলন রয়েছে। বিস্তারিত বহিরাগত সম্পদের বিস্তৃত পরিসর রয়েছে, উদাহরণস্বরূপ:

আপনার নির্বাচিত মডেলের ডকুমেন্টেশন পরীক্ষা করে দেখুন, কারণ সর্বোত্তম সম্ভাব্য ফলাফল পেতে আপনার জন্য নির্দিষ্ট পরামর্শ থাকতে পারে।

তোমার বোধগম্যতা পরীক্ষা করো।

সিস্টেম প্রম্পটে আপনি কোন ধরণের নিয়ম নির্দিষ্ট করতে পারেন?

নির্দিষ্ট ইনপুট ভেরিয়েবল (যেমন ব্যবহারকারীর ইনপুট), প্রত্যাশিত আউটপুট কাঠামো, মডেল ভূমিকা এবং অক্ষর গণনার সীমা।
দারুন কাজ, ঠিকই বলেছেন!
এখানে শুধুমাত্র ব্যবহারকারীর ইনপুট যাবে।
ঠিক না, আবার চেষ্টা করুন।
মডেলের ভূমিকা এবং ক্ষেত্র প্রতিষ্ঠা করা, যাতে এটি বুঝতে পারে কিভাবে আচরণ করতে হবে।
ঠিক না, আবার চেষ্টা করুন।
আপনি কোন ধরণের মডেল এবং মডেলের আকার ব্যবহার করছেন।
না, আবার চেষ্টা করো।

উত্তর তৈরি করার আগে মডেলটি ধাপে ধাপে যুক্তি দেখাতে চাইলে আপনার কোন কৌশল ব্যবহার করা উচিত?

জিরো-শট প্রম্পটিং
এটা ভুল।
অল্প কিছুক্ষণের জন্য অনুরোধ
এটা ভুল।
চিন্তার শৃঙ্খল প্ররোচনা
দারুন কাজ, ঠিকই বলেছেন!
আত্ম-প্রতিফলন প্ররোচনা
এটা ভুল।

কখন কিছু-শট প্রম্পটিং সবচেয়ে কার্যকর?

যখন মডেলকে কোনও প্রসঙ্গ ছাড়াই কোনও কাজ সম্পাদন করতে বলা হয়।
এটা ভুল।
যখন কাজটি একটি স্বীকৃত কাঠামো অনুসরণ করে, যেমন এটি তৈরি করা) অথবা নির্দিষ্ট বিন্যাসের প্রয়োজন হয়।
দারুন কাজ, ঠিকই বলেছেন!
যখন আউটপুট স্পেস খুব বড় হয়, যেমন উন্মুক্ত সৃজনশীল লেখা।
এটা ভুল।
যখন আপনি চান মডেলটি তার নিজের কাজের সমালোচনা করুক।
এটা ভুল।

আত্ম-প্রতিফলন প্ররোচনা কৌশল কী?

স্বচ্ছতা বা গুণমান উন্নত করার জন্য মডেলটিকে তার নিজস্ব আউটপুট সমালোচনা এবং সংশোধন করতে বলা।
দারুন কাজ, ঠিকই বলেছেন!
প্রম্পটটি একাধিকবার চালানো এবং ফলাফলের গড় নির্ধারণ করা।
এটা ভুল।
ফলাফল খারাপ হলে ব্যবহারকারীকে প্রম্পটটি পুনরায় লিখতে বলা।
এটা ভুল।
মডেলটিকে সিস্টেম প্রম্পট গতিশীলভাবে পরিবর্তন করার অনুমতি দেওয়া।
এটা ভুল।