ব্লগে ফিরে যান

শিক্ষানবিসদের জন্য AIগাইড

ফিউ-শট প্রম্পটিং: আপনার ফরম্যাট পেতে মডেলকে ৩–৫টি উদাহরণ দেখান

কীভাবে ৩–৫টি ট্যাগযুক্ত উদাহরণ একটি মডেলকে আপনার লেবেল বা JSON-এ উত্তর দিতে বাধ্য করে, একটি Python অনুরোধ এবং প্রতি অনুরোধে অতিরিক্ত ইনপুট খরচসহ।

CheapTokens Team দ্বারাপ্রকাশিত হয়েছে 11 মিনিট পড়ার সময়

কভার: একটি উদাহরণ টিকিট এবং তার লেবেলসহ একটি ফিউ-শট প্রম্পট
এই পৃষ্ঠায়
  1. “ফিউ-শট” মানে কী
  2. কাজ করে এমন উদাহরণের জন্য তিনটি নিয়ম
  3. API-এর মাধ্যমে পাঠান
  4. পাঁচটি উদাহরণ বিলে কী যোগ করে
  5. JSON, টোন, এবং আপনার উদাহরণ পরীক্ষা করা

আপনার টিকিট বটের উত্তর একটি শব্দে হওয়া উচিত: billing, bug বা other। বেশিরভাগ উত্তর ঠিক তাই হয়। তারপর একটি আসে “Label: billing — the customer seems upset about a refund” হিসেবে, এবং লেবেল পড়ার কোডটি আটকে যায়।

সাধারণ সমাধান দীর্ঘ নির্দেশনা নয়। এটি কয়েকটি উদাহরণ: ৩–৫টি সম্পন্ন টিকিট তাদের লেবেলসহ প্রম্পটে রাখুন, এবং মডেল প্যাটার্নটি কপি করবে। এটাই ফিউ-শট প্রম্পটিং। Anthropic-এর প্রম্পটিং গাইড (“Use examples effectively” বিভাগ, ৩ নভেম্বর ২০২৬-এ যাচাইকৃত) উদাহরণকে ফরম্যাট, টোন এবং গঠন নিয়ন্ত্রণের সবচেয়ে নির্ভরযোগ্য উপায়গুলোর একটি বলে এবং ৩–৫টি উদাহরণের সুপারিশ করে। সমস্যা: প্রতিটি উদাহরণ হলো ইনপুট যা প্রতিটি অনুরোধে আবার আপনাকে দিতে হয়। নিচের খরচ বিভাগে এটি একটি বটের জন্য গণনা করা হয়েছে যা দিনে ২,০০০ টিকিট পরিচালনা করে।

“ফিউ-শট” মানে কী#

সাপোর্ট ডেস্কে প্রথম দিনে একজন নতুন সহকর্মীর কথা ভাবুন। আপনি বললেন “প্রতিটি টিকিট billing, bug বা other হিসেবে ট্যাগ করুন” এবং চলে গেলেন। কিছু ট্যাগ আপনার ধারণার সাথে মিলবে, কিছু মিলবে না। এখন তিনটি টিকিট রেখে যান যেগুলো ইতিমধ্যে ট্যাগ করা আছে এবং বলুন “এগুলোর মতো”। একই সহকর্মী, অনেক কম বিস্ময়।

মডেলগুলো একইভাবে আচরণ করে। শুধু নির্দেশনাকে জিরো-শট বলা হয়। নির্দেশনা প্লাস কয়েকটি কাজ করা উদাহরণ হলো ফিউ-শট (Anthropic-এর পৃষ্ঠা এটিকে মাল্টিশটও বলে)। একটি “শট” শুধু একটি উদাহরণ।

তুলনা করুন

একই কাজ, দুটি প্রম্পট

শুধু নির্দেশনা

text
Label the support ticket as billing, bug or other.

নির্দেশনা প্লাস উদাহরণ

text
Label the support ticket with one word: billing, bug or other.

Ticket: I was charged twice for one top-up.
Label: billing

Ticket: The export button does nothing.
Label: bug

Ticket: Do you have a dark theme?
Label: other

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

কাজ করে এমন উদাহরণের জন্য তিনটি নিয়ম#

Anthropic-এর পৃষ্ঠা ভালো উদাহরণকে তিনটি শব্দে সংক্ষেপ করে:

  • প্রাসঙ্গিক: আপনি সত্যিই যে টিকিটগুলো পান তার কাছাকাছি, অন্য কোনো কাজের নয়।
  • বৈচিত্র্যময়: তারা এজ কেসগুলো কভার করে এবং একে অপরের থেকে আলাদা, যাতে মডেল কোনো আকস্মিক প্যাটার্নে আটকে না যায়।
  • স্ট্রাকচার্ড: ট্যাগে মোড়ানো (<example>, এবং <examples>-এর ভিতরে কয়েকটি) যাতে মডেল উদাহরণগুলোকে নির্দেশনা থেকে আলাদা করতে পারে। একই পৃষ্ঠা বলে ট্যাগের নাম সামঞ্জস্যপূর্ণ রাখতে।

এখানে সেইভাবে তৈরি একটি সম্পূর্ণ প্রম্পট। এটি prompt.txt হিসেবে সংরক্ষণ করুন:

text
<instructions>
Label the support ticket with exactly one word: billing, bug or other.
Reply with the label only.
</instructions>

<examples>
<example>
<ticket>I was charged twice for the same top-up.</ticket>
<label>billing</label>
</example>
<example>
<ticket>The export button does nothing when I click it.</ticket>
<label>bug</label>
</example>
<example>
<ticket>Do you have a dark theme?</ticket>
<label>other</label>
</example>
<example>
<ticket>Please refund me. Also, the page crashes on login.</ticket>
<label>billing</label>
</example>
<example>
<ticket>Is there an API for exporting reports?</ticket>
<label>other</label>
</example>
</examples>

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

জোড়া মেলান

কোন নিয়ম ভাঙা হয়েছে?

  • আপনার উদাহরণগুলো এক-লাইনের চ্যাট অভিবাদন, কিন্তু আসল টিকিটগুলো দীর্ঘ ইমেইলপ্রাসঙ্গিক নয়: উদাহরণগুলো আসল কাজের কাছাকাছি হতে হবে
  • আপনার সব উদাহরণ একই লেবেল বহন করেবৈচিত্র্যময় নয়: মডেল একটি আকস্মিক প্যাটার্ন ধরতে পারে
  • উদাহরণগুলো নির্দেশনার মধ্যে আলগা টেক্সট হিসেবে পেস্ট করাস্ট্রাকচার্ড নয়: সেগুলো ট্যাগে মোড়ান যাতে সেগুলোকে নির্দেশনা ভুল না করা হয়

API-এর মাধ্যমে পাঠান#

প্রম্পট প্রতিটি অনুরোধে একই টেক্সট, এবং শুধু নতুন টিকিট পরিবর্তিত হয়। প্রতিটি টিকিট একই ছোট যাত্রা দিয়ে যায়:

নির্দেশনা, উদাহরণ এবং নতুন টিকিট একটি অনুরোধে যায়; একটি লেবেল ফিরে আসে
প্রতি টিকিটে একটি অনুরোধ: নির্দেশনা এবং উদাহরণ থাকে, টিকিট পরিবর্তিত হয়

এখানে এটি openai প্যাকেজসহ Python-এ। ঠিকানাটি CheapTokens API, কীটি একটি এনভায়রনমেন্ট ভেরিয়েবলে থাকে (কীভাবে নিরাপদে একটি কী সংরক্ষণ করবেন দেখুন), এবং মডেল আইডি হলো ডক্স থেকে সম্পূর্ণটি:

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

PROMPT = open("prompt.txt", encoding="utf-8").read()


def label(ticket: str) -> str:
    response = client.chat.completions.create(
        model="deepseek-ai/DeepSeek-V4-Flash-0731",
        max_tokens=64,
        messages=[
            {"role": "system", "content": PROMPT},
            {"role": "user", "content": f"<ticket>{ticket}</ticket>"},
        ],
    )
    print(response.usage.prompt_tokens, response.usage.completion_tokens)
    return response.choices[0].message.content.strip()


print(label("The app shows a blank screen after the update."))

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

প্রথম সংখ্যাটি লক্ষ্য করার মতো। এটি সম্পূর্ণ প্রম্পট, নির্দেশনা প্লাস উদাহরণ প্লাস টিকিট, এবং আপনি যত উদাহরণ যোগ করবেন তত এটি বাড়বে। স্ক্রিপ্টটি একবার সম্পূর্ণ prompt.txt দিয়ে এবং একবার শুধু <instructions> অংশ দিয়ে চালান: দুটি প্রথম সংখ্যার মধ্যে ব্যবধানই হলো আপনার উদাহরণগুলোর প্রতি অনুরোধে খরচ।

DeepSeek-V4-Flash এই ধরনের গণ লেবেলিংয়ের জন্য উপযুক্ত: দিনের যেকোনো সময়ে একই মূল্য, ৩৮০K-টোকেন কনটেক্সট (তাই একটি দীর্ঘ উদাহরণ ব্লক সহজেই ফিট হয়) এবং প্রতি উত্তরে ৩২,৭৬৮ টোকেন পর্যন্ত। GLM-5.3-Flash, ৩৯০K কনটেক্সটসহ, ছোট লেবেলিং কাজের জন্যও কাজ করে। উভয়ই মডেল পৃষ্ঠা-এ, একটি ব্যালেন্সের পিছনে।

পাঁচটি উদাহরণ বিলে কী যোগ করে#

ধরুন বটটি দিনে ২,০০০ টিকিট পরিচালনা করে। ধরে নিন একটি টিকিট প্রায় ১২০ টোকেন এবং নির্দেশনা প্রায় ৮০, তাই উদাহরণ ছাড়া একটি অনুরোধ ৮০ + ১২০ = ২০০ ইনপুট টোকেন। পাঁচটি উদাহরণ প্রতিটি প্রায় ৬০ টোকেনে ৫ × ৬০ = ৩০০ যোগ করে, তাই সেগুলোসহ একটি অনুরোধ ২০০ + ৩০০ = ৫০০। উত্তরটি একটি শব্দ, উভয় ক্ষেত্রেই ৩ আউটপুট টোকেন ধরুন। এগুলো অনুমান: আপনার স্ক্রিপ্ট যে prompt_tokens প্রিন্ট করেছে তা বসান।

একদিনে, ২০০ × ২,০০০ = ৪০০,০০০ ইনপুট টোকেন ৫০০ × ২,০০০ = ১,০০০,০০০ হয়ে যায়, যখন আউটপুট ৩ × ২,০০০ = ৬,০০০ টোকেনে থাকে। DeepSeek-V4-Flash-এ এটি উদাহরণ ছাড়া দিনে $0.0066 এবং সেগুলোসহ $0.0156। উদাহরণগুলো আপনাকে সেই দুটি সংখ্যার মধ্যে ব্যবধান খরচ করায়, এবং Anthropic-এর মতে তারা আপনাকে আরও সামঞ্জস্যপূর্ণ আউটপুট দেয়।

প্রতিটি অনুরোধে একই: নির্দেশনা এবং পাঁচটি উদাহরণ। প্রতিবার নতুন: টিকিট
অনুরোধের মধ্যে শুধু টিকিট পরিবর্তিত হয়

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

এখানে একই লোড, প্রতি অনুরোধে ৫০০ ইনপুট এবং ৩ আউটপুট টোকেন, ২,০০০ অনুরোধ, মডেল জুড়ে। টেবিলটি বর্তমান মূল্য থেকে পুনঃগণনা করে:

মডেল প্রতি অনুরোধে ২,০০০টি অনুরোধ OpenRouter, ২,০০০টি অনুরোধ
GLM-5.3-Flash $0.00001 $0.0202 $0.034
DeepSeek-V4-Flash $0.0000078 $0.0156 $0.0708
MiniMax-M2.7 $0.000025 $0.0509 $0.611

প্রতি অনুরোধে ৫০০ ইনপুট এবং ৩ আউটপুট টোকেন। প্রতি 1M টোকেনের দাম বর্তমান এবং আমাদের ট্যারিফের সাথে পরিবর্তিত হয়; OpenRouter কলামটি একই ওয়ার্কলোডের জন্য রেফারেন্স মূল্য দেখায়।

ইনপুট এবং আউটপুট একসাথে গণনা করলে, এই লোডে DeepSeek-V4-Flash এবং GLM-5.3-Flash OpenRouter-এর চেয়ে সস্তা হয়। সম্পূর্ণ মূল্য তালিকা মূল্য পৃষ্ঠা-এ।

JSON, টোন, এবং আপনার উদাহরণ পরীক্ষা করা#

একই কৌশল আপনি যে অন্য দুটি ক্ষেত্রে সম্মুখীন হবেন তা কভার করে। প্রতিবার একই JSON ফিল্ড দরকার? উদাহরণ উত্তরটিকে JSON নিজেই বানান:

text
<example>
<ticket>I was charged twice for the same top-up.</ticket>
<output>{"label": "billing", "urgent": true}</output>
</example>

response_format এবং একটি উত্তর এখনও বৈধ না হলে কী করবেন, একটি LLM API থেকে বৈধ JSON পান দেখুন। একটি টোনে টেক্সট পুনর্লিখন চান? “বন্ধুত্বপূর্ণ কিন্তু সংক্ষিপ্ত”-এর মতো বিশেষণগুলো অস্পষ্ট; দুটি আগে-পরে জোড়া এটি আরও ভালো দেখায়।

আপনি কোনো উদাহরণ সেট বিশ্বাস করার আগে, ২০টি টিকিট নিন যা আপনি ইতিমধ্যে হাতে লেবেল করেছেন, সেগুলো চালান এবং তুলনা করুন। একটি পাস যেকোনো নিয়মের চেয়ে আপনাকে বেশি বলে। Anthropic-এর পৃষ্ঠা একটি শর্টকাট যোগ করে: মডেলকে আপনার উদাহরণগুলোর প্রাসঙ্গিকতা এবং বৈচিত্র্যের জন্য রেট দিতে বলুন, অথবা আপনার কাছে থাকাগুলো থেকে আরও লিখতে বলুন।

চেকলিস্ট

আপনার উদাহরণ বিশ্বাস করার আগে

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