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

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

প্রম্পটে প্রতিটি নথি লেবেল করুন যাতে মডেল সেগুলো গুলিয়ে না ফেলে

কীভাবে প্রতিটি পেস্ট করা টেক্সটকে একটি নাম ও একটি ভূমিকা দেবেন, আগে/পরে প্রম্পট এবং Python ও curl-এ একটি কার্যকর চ্যাট কমপ্লিশন অনুরোধসহ।

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

কভার: দুটি নথিসহ একটি প্রম্পট, প্রতিটি নিজস্ব ট্যাগে একটি উৎস নাম দিয়ে মোড়ানো
এই পৃষ্ঠায়
  1. শুধু পেস্ট করলে কী ভুল হয়
  2. প্রতিটি টেক্সটকে একটি নাম ও একটি কাজ দিন
  3. এটি একটি প্রকৃত অনুরোধ হিসেবে পাঠান
  4. লেবেলের খরচ
  5. বড় টেক্সটের স্তূপের জন্য অভ্যাস

আপনি একটি মেসেজে দুটি টেক্সট পেস্ট করেছেন এবং মডেলকে সেগুলো তুলনা করতে বলেছেন। কোনটি কোনটি না বললে তাকে অনুমান করতে হয়। সমাধান সহজ: প্রতিটি টেক্সটকে একটি নাম ও একটি কাজ দিন, এবং প্রতিটিকে তার নিজস্ব ট্যাগে মুড়ে দিন। Anthropic-এর প্রম্পটিং গাইড (একটি জীবন্ত পৃষ্ঠা, ৩১ অক্টোবর ২০২৬-এ যাচাই করা) প্রতিটি ধরনের কন্টেন্ট ট্যাগ করার পরামর্শ দেয় যাতে মডেল ভুল না বোঝে কোনটি নির্দেশ, কোনটি পটভূমি এবং কোনটি ইনপুট। নিচে একটি আগে/পরে প্রম্পট এবং একটি কার্যকর চ্যাট কমপ্লিশন রিকোয়েস্ট দেওয়া হলো যা আপনি CheapTokens API-তে পাঠাতে পারেন।

শুধু পেস্ট করলে কী ভুল হয়#

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

একই ফাঁদ দৈনন্দিন কাজেও লুকিয়ে থাকে:

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

প্রতিটির ক্ষেত্রে মডেলের প্রতিটি টেক্সটের জন্য দুটি জিনিস দরকার: একটি নাম (এটি কী এবং কোথা থেকে এসেছে) এবং একটি ভূমিকা (আপনি এটি দিয়ে কী করতে চান)।

প্রতিটি টেক্সটকে একটি নাম ও একটি কাজ দিন#

তিনটি ছোট পদক্ষেপ:

  1. প্রতিটি টেক্সট তার নিজস্ব ট্যাগে রাখুন। Anthropic-এর গাইড একটি <documents> র‍্যাপার প্রস্তাব করে যেখানে প্রতিটি টেক্সটের জন্য একটি <document index="1">, এবং এর ভিতরে নামের জন্য <source> এবং টেক্সটের জন্য <document_content>।
  2. নির্দেশনায় প্রতিটি কী তা বলুন, ট্যাগের বাইরে: "Document 1 is the OLD text from our shop. Document 2 is the NEW text from the supplier."
  3. একই শব্দে প্রশ্ন করুন। "List every fact that changed, as old -> new" এখন নির্দেশ করার জন্য একটি পুরনো এবং একটি নতুন আছে।

এখানে বোতলের উদাহরণ আগে ও পরে:

তুলনা করুন

একই অনুরোধ, আগে ও পরে

আগে

text
What changed?

Steel water bottle, 500 ml. Keeps drinks cold for 12 hours. Dishwasher safe.

Steel water bottle, 750 ml. Keeps drinks cold for 24 hours. Hand wash only.

পরে

text
Document 1 is the OLD text from our shop. Document 2 is the NEW text from the supplier. List every fact that changed, one per line, as old -> new.

<documents>
<document index="1">
<source>old description (current shop page)</source>
<document_content>
Steel water bottle, 500 ml. Keeps drinks cold for 12 hours. Dishwasher safe.
</document_content>
</document>
<document index="2">
<source>new description (from the supplier)</source>
<document_content>
Steel water bottle, 750 ml. Keeps drinks cold for 24 hours. Hand wash only.
</document_content>
</document>
</documents>
একটি প্রম্পট যেখানে নির্দেশনা প্রতিটি নথির নাম বলে এবং প্রতিটি টেক্সট তার নিজস্ব ট্যাগে থাকে
নির্দেশনা বলে প্রতিটি নথি কী; ট্যাগগুলো টেক্সটগুলোকে আলাদা রাখে

লেবেলগুলো কয়েকটি টোকেন খরচ করে এবং অনুমান দূর করে। Anthropic এই পরামর্শ তার Claude মডেলের জন্য লিখেছে, কিন্তু লেবেলগুলো সাধারণ টেক্সট, তাই অন্য চ্যাট মডেলে একই বিন্যাস পাঠাতে কোনো বাধা নেই।

এটি একটি প্রকৃত অনুরোধ হিসেবে পাঠান#

এখানে "পরে" প্রম্পটটি একটি API কল হিসেবে। ঠিকানা https://api.cheaptokens.dev/v1, APIটি OpenAI-সামঞ্জস্যপূর্ণ, এবং মডেল deepseek-ai/DeepSeek-V4-Flash-0731। CheapTokens ডকস থেকে মডেল আইডি নিন: প্রদানকারীদের মধ্যে নাম ভিন্ন হয়। DeepSeek-V4-Flash-এর 380K কনটেক্সট উইন্ডো এবং প্রতি উত্তরে সর্বোচ্চ 32,768 আউটপুট টোকেন রয়েছে, যা অনেক লম্বা টেক্সটের জন্য জায়গা রাখে। কীটি একটি এনভায়রনমেন্ট ভেরিয়েবল থেকে আসে, কখনও কোড থেকে নয়।

দুটি টুলে একই অনুরোধ

Python

python
import os
from openai import OpenAI

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

old = "Steel water bottle, 500 ml. Keeps drinks cold for 12 hours. Dishwasher safe."
new = "Steel water bottle, 750 ml. Keeps drinks cold for 24 hours. Hand wash only."

prompt = f"""Document 1 is the OLD text from our shop. Document 2 is the NEW text from the supplier. List every fact that changed, one per line, as old -> new.

<documents>
<document index="1">
<source>old description (current shop page)</source>
<document_content>
{old}
</document_content>
</document>
<document index="2">
<source>new description (from the supplier)</source>
<document_content>
{new}
</document_content>
</document>
</documents>"""

response = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash-0731",
    messages=[{"role": "user", "content": prompt}],
    max_tokens=300,
)
print(response.choices[0].message.content)
print(response.usage)

curl

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "max_tokens": 300,
    "messages": [{
      "role": "user",
      "content": "Document 1 is the OLD text from our shop. Document 2 is the NEW text from the supplier. List every fact that changed, one per line, as old -> new.\n\n<documents>\n<document index=\"1\">\n<source>old description (current shop page)</source>\n<document_content>\nSteel water bottle, 500 ml. Keeps drinks cold for 12 hours. Dishwasher safe.\n</document_content>\n</document>\n<document index=\"2\">\n<source>new description (from the supplier)</source>\n<document_content>\nSteel water bottle, 750 ml. Keeps drinks cold for 24 hours. Hand wash only.\n</document_content>\n</document>\n</documents>"
    }]
  }'

উত্তরটি choices[0].message.content-এ সাধারণ টেক্সট, এবং পাশে usage টোকেন গণনা করে। একটি ভালো উত্তর তিনটি পরিবর্তন তালিকাভুক্ত করে: 500 ml -> 750 ml, 12 hours -> 24 hours, dishwasher safe -> hand wash only। যদি তীরগুলো উল্টো দিকে যায়, মডেল লেবেলগুলো হারিয়ে ফেলেছে। যাচাই করুন যে নির্দেশনা নথিগুলোকে একই নামে ডাকে যা ট্যাগগুলো ডাকে।

লেবেলের খরচ#

ট্যাগ হলো টেক্সট, এবং টেক্সট বিল হয়। ধরুন একজন টিম লিড প্রায় 2,000 টোকেনের তিনটি মিটিং নোট দেন এবং জিজ্ঞাসা করেন কোন সিদ্ধান্তগুলো দ্বন্দ্বে। তিনটি নোট: 3 × 2,000 = 6,000 টোকেন। নির্দেশনা ও ট্যাগের জন্য প্রায় 150 টোকেন যোগ করুন (একটি অনুমান) এবং অনুরোধে 6,150 টোকেন ইন, সাথে 300-টোকেন উত্তর আউট। DeepSeek-V4-Flash-এ সেই একটি অনুরোধের খরচ $0.00012, এবং ট্যাগগুলো নোটের তুলনায় নগণ্য। এখানে একই অনুরোধ 1,000 বার পাঠানো হয়েছে, সাথে OpenRouter:

মডেল প্রতি অনুরোধে ১,০০০টি অনুরোধ OpenRouter, ১,০০০টি অনুরোধ
GLM-5.3-Flash $0.00014 $0.135 $0.231
DeepSeek-V4-Flash $0.00012 $0.122 $0.473
MiniMax-M2.7 $0.00035 $0.353 $4.23

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

সব 6,150 টোকেন 380K উইন্ডোতে যথেষ্ট জায়গাসহ ফিট করে (কনটেক্সট উইন্ডো কী)। মোট হিসাবে, ইনপুট ও আউটপুট একসাথে, অনুরোধটি OpenRouter-এর চেয়ে সস্তা। ইনপুট ও আউটপুট ভিন্ন হারে বিল হয়, এবং ইনপুট বনাম আউটপুট টোকেন কেন তা ব্যাখ্যা করে। প্রতিটি মডেলের সর্বশেষ সংখ্যা প্রাইসিং পেজে আছে।

বড় টেক্সটের স্তূপের জন্য অভ্যাস#

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

প্রবাহ: নির্দেশনা ও প্রশ্ন, নথি ১ (পুরনো), নথি ২ (নতুন)
নির্দেশনা ও প্রশ্ন, তারপর প্রতিটি লেবেলযুক্ত নথি: উদাহরণ প্রম্পটের বিন্যাস
  • শুধু সংখ্যা নয়, বিষয়বস্তু দিয়ে নাম দিন। <source>contract v2, sent by the client</source> document 2-এর চেয়ে ভালো যখন উত্তরটি তা আপনাকে উদ্ধৃত করে।
  • আপনার নির্দেশনা ট্যাগের বাইরে রাখুন, যাতে পেস্ট করা টেক্সটের ভিতরের একটি লাইন আদেশ হিসেবে না নেওয়া হয়।
  • একটি টেক্সট, একটি ট্যাগ। একটি লম্বা ফাইলও একটি ট্যাগ; দুটি ফাইল দুটি।
  • প্রশ্নে নামগুলো পুনরায় ব্যবহার করুন: "which decisions in monday-notes contradict wednesday-notes?"
  • উদাহরণগুলোতেও ভূমিকা দিন। "Document 1 is a style sample: copy its tone, not its facts. Document 2 is the draft to rewrite."
নিজে চেষ্টা করুনচেষ্টা করুন: আপনার একটি এরর লগ এবং যে কোডটি এটি তৈরি করেছে তা এক প্রম্পটে আছে। প্রতিটিতে কী যোগ করবেন?উত্তর দেখান

একটি নাম ও একটি কাজ। লগের জন্য: <source>error log from the last run</source> সাথে "এটি লক্ষণ, এটি সম্পাদনা করবেন না"। কোডের জন্য: <source>app.py</source> সাথে "এটি ঠিক করার বিষয়"। তারপর সেই নামগুলো দিয়ে সমাধান চান।

প্রম্পটের বাকি বিষয়গুলোর (লক্ষ্য, প্রসঙ্গ, বিন্যাস) মূল বিষয়ের জন্য কীভাবে একটি ভালো প্রম্পট লিখবেন দেখুন।