একটি প্রাথমিক বিচারক মডেল তৈরি করুন (পর্ব ১)

একটি সাধারণ বিচারক মডেলের সাহায্যে আপনার ব্যক্তিগত মূল্যায়ন শুরু করুন।

নিয়ম-ভিত্তিক মূল্যায়ন সুনির্দিষ্ট উত্তর যাচাই করতে পারে। ব্যক্তিনিষ্ঠ গুণাবলী মূল্যায়ন করতে, ‘এলএলএম-কে বিচারক হিসেবে’ কৌশলটি ব্যবহার করুন।

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

আপনার প্রথম বিচারক মডেল তৈরি করার ধাপসমূহ

  1. মডেল কাস্টমাইজেশনের একটি পদ্ধতি বেছে নিন । সূক্ষ্মভাবে পরিমার্জন করবেন নাকি প্রকৌশলীকে নির্দেশ দেবেন, সে বিষয়ে সিদ্ধান্ত নিন।
  2. একটি মডেল নির্বাচন করুন। এটি একটি ফাউন্ডেশন মডেল অথবা ডোমেইন বিশেষজ্ঞতা ছাড়া অন্য কোনো এলএলএম হতে পারে।
  3. একটি স্কোরিং পদ্ধতি বেছে নিন। থিমবিল্ডার-জেনারেটেড থিমগুলোর স্কোরিংয়ের জন্য বিচারক বাইনারি নাকি সংখ্যাসূচক স্কেল ব্যবহার করবেন, তা নির্ধারণ করুন।
  4. বিচারকটিকে কনফিগার করুন। বিচারমূলক কাজের জন্য এটিকে উপযুক্ত করে তুলতে মডেলটির সেটিংস (যেমন তাপমাত্রা এবং কাঠামোগত আউটপুট) পরিবর্তন করুন।
  5. প্রাথমিক প্রশ্নটি লিখুন। একটি স্কোরিং রুব্রিক এবং উদাহরণসহ বিচারক সিস্টেমের নির্দেশাবলী ও প্রশ্নের একটি প্রথম সংস্করণ ডিজাইন করুন।
  6. একটি অ্যালাইনমেন্ট ডেটাসেট তৈরি করুন । বিভিন্ন ধরনের ও উচ্চ-মানের ভালো এবং খারাপ থিমবিল্ডার আউটপুটের একটি সেট তৈরি করুন এবং সেগুলোকে সেই অনুযায়ী লেবেল করুন (যেমন একটি ভালো নীতিবাক্য, ক্ষতিকর নীতিবাক্য, এবং অফ-ব্র্যান্ড কালার প্যালেট)।
  7. বিচারককে অ্যালাইন ও পরীক্ষা করুন। অ্যালাইনমেন্ট ডেটাসেট ব্যবহার করে বিচারকের প্রম্পট (সিস্টেম নির্দেশাবলী এবং মূল প্রম্পট) ক্রমাগত পরিমার্জন করুন। এই প্রক্রিয়াটি ততক্ষণ পর্যন্ত পুনরাবৃত্তি করুন যতক্ষণ না বিচারকের রায় ধারাবাহিকভাবে মানুষের রায়ের সাথে মিলে যায়। সবশেষে, বিচারকটি নির্ভরযোগ্য কিনা এবং নতুন ইনপুটের ক্ষেত্রে তার পদ্ধতিকে সাধারণীকরণ করতে পারে কিনা তা নিশ্চিত করতে পরীক্ষা করুন।

একজন বিচারকের মডেলে এলএলএম, সেটিংস, একটি সিস্টেম প্রম্পট এবং একটি গ্রেডিং প্রম্পট থাকে।

কাস্টমাইজেশনের একটি পদ্ধতি বেছে নিন

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

বিচারক মডেল তৈরি করার জন্য আপনার প্রধান বিকল্পগুলো হলো:

  1. দ্রুত একটি এলএলএম-এর ব্যবস্থা করুন
  2. একটি মডেলকে সূক্ষ্মভাবে সমন্বয় করুন
  3. মূল্যায়নের জন্য বিশেষভাবে অপ্টিমাইজ করা একটি সূক্ষ্মভাবে টিউন করা এলএলএম (LLM) ব্যবহার করুন, যেমন JudgeLM । এই বিকল্পটির জন্য আপনাকে হয় নিজের কাস্টম মডেল ওয়েট হোস্ট করতে হবে অথবা এমন একটি ক্লাউড প্রোভাইডার ব্যবহার করতে হবে যা ওপেন সোর্স মডেল হোস্টিং সমর্থন করে।

এই কোর্সের থিমবিল্ডার মূল্যায়নগুলোর জন্য আমরা প্রম্পট ইঞ্জিনিয়ারিং ব্যবহারের পরামর্শ দিই। বিকল্পগুলোর তুলনায় প্রম্পট ইঞ্জিনিয়ারিং কম পরিশ্রমে চমৎকার ফলাফল দিতে পারে।

একটি মডেল নির্বাচন করুন

আপনার বিচারকের জন্য মডেল বাছাই করার সময়, শক্তিশালী যুক্তি ক্ষমতা সম্পন্ন মডেল খুঁজুন। যেহেতু আপনি আপনার CI/CD পাইপলাইনে মূল্যায়ন চালাবেন, তাই গতি এবং খরচও অত্যন্ত গুরুত্বপূর্ণ।

সবচেয়ে উপযুক্তটি খুঁজে পেতে বিভিন্ন মডেল ও কৌশল নিয়ে পরীক্ষা-নিরীক্ষা করুন।

  • একটি উচ্চ মানদণ্ড স্থাপন করার জন্য বড় ও অধিক শক্তিশালী মডেল দিয়ে শুরু করুন, তারপর ধীরে ধীরে ছোট মডেলের দিকে যান । অথবা এর উল্টোটাও করতে পারেন।
  • সমন্বয় করুন : দৈনন্দিন পিআর (PR) চেকের জন্য একটি দ্রুত ও সাশ্রয়ী মডেল এবং আপনার চূড়ান্ত রিলিজ পরীক্ষার জন্য একটি আরও শক্তিশালী মডেল ব্যবহার করুন। অথবা, দ্রুততার জন্য টক্সিসিটি ডিটেকশনের মতো নির্দিষ্ট কাজের জন্য একটি সাধারণ এলএলএম (LLM)-এর সাথে একটি ছোট, বিশেষায়িত মডেল একত্রিত করুন।

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

একটি স্কোরিং পদ্ধতি বেছে নিন

আপনি বিষয়ভিত্তিক ফলাফলকে বাইনারি PASS এবং FAIL লেবেল দিয়ে, অথবা একটি সাংখ্যিক স্কোর দিয়ে মূল্যায়ন করতে পারেন, যেমন: "১ থেকে ৫ এর স্কেলে, এই নীতিবাক্যটি ব্র্যান্ডের সাথে কতটা সামঞ্জস্যপূর্ণ?"

আমরা বাইনারি লেবেল ব্যবহার করার পরামর্শ দিই।

মূল্যায়ন মানদণ্ড মূল্যায়ন পদ্ধতি মেট্রিক
মূলমন্ত্রটি ব্র্যান্ড, দর্শক এবং ভাবভঙ্গির সাথে সামঞ্জস্যপূর্ণ। এলএলএম বিচারক PASS বা FAIL লেবেল
রঙের বিন্যাসটি ব্র্যান্ড, দর্শক এবং ভাবের সাথে সামঞ্জস্যপূর্ণ। এলএলএম বিচারক PASS বা FAIL লেবেল
নীতিবাক্যটি বিষাক্ত নয় এলএলএম বিচারক PASS বা FAIL লেবেল

যদিও একটি সংখ্যাসূচক স্কোর (১-১০) স্বজ্ঞাত মনে হতে পারে, গবেষণা দেখায় যে এলএলএম (এবং মানুষ) তাদের স্কোরগুলিকে মাঝামাঝি অবস্থানে রাখতে বা সৌজন্য দেখানোর জন্য স্কোর বাড়িয়ে বলতে পছন্দ করে। PASS এবং FAIL মতো বিভাগ বা বাইনারি লেবেল প্রায়শই আরও ভাল ফলাফল দেয় কারণ সেগুলি মডেলকে একটি স্পষ্ট সিদ্ধান্ত নিতে বাধ্য করে। মানুষের ক্ষেত্রে, এটিকে রেটার এফেক্ট বলা হয়।

বিচারককে কনফিগার করুন

আপনার বিচারককে সামঞ্জস্যপূর্ণ ও সুসংগঠিত ফলাফল তৈরিতে সাহায্য করার জন্য মাপকাঠি ও নির্দেশাবলী ব্যবহার করুন।

  • সিস্টেমের জন্য নির্দেশাবলী সেট করুন : আপনার বিচারককে একজন কঠোর বিশেষজ্ঞের ভূমিকা দিন।
  • তাপমাত্রা বা চিন্তার স্তর নির্ধারণ করুন : আপনার বিচারককে অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে। আপনি যদি জেমিনি ফ্ল্যাশের মতো কোনো যুক্তি মডেল ব্যবহার করেন, যেখানে যৌক্তিক ধাপগুলোর মধ্যে যাওয়ার জন্য সামান্য এলোমেলো বিন্যাসের প্রয়োজন হয়, তাহলে তাপমাত্রা ডিফল্টে রাখুন কিন্তু thinking_level HIGH এ সেট করুন। আপনি যদি অন্য কোনো মডেল ব্যবহার করেন, তাহলে তাপমাত্রা 0 বা 0 এর কাছাকাছি সেট করুন। যেকোনো ক্ষেত্রে, চিন্তার শৃঙ্খল কৌশলটি ব্যবহার করুন, যাতে মডেলটি কোনো সিদ্ধান্তে পৌঁছানোর আগে চিন্তা করে।
  • বিচারকের আউটপুটের কাঠামো তৈরি করুন : একটি অনুমানযোগ্য JSON অবজেক্ট আপনার কোডবেসের বাকি অংশে পুনরায় ব্যবহার করা অনেক সহজ। এমন একটি EvalResult স্কিমা ব্যবহার করুন যাতে একটি label ( PASS বা FAIL ) এবং একটি rationale স্ট্রিং প্রয়োজন হয়।

আপনার থিমবিল্ডার উদাহরণে:

বিচারক কনফিগারেশন

// LLM judge config
const response = await client.models.generateContent({
  model: modelVersion,
  config: {
      systemInstruction: "You are a senior brand strategist, brand identity
      specialist, and expert color psychologist. You also act as a strict
      content moderator for a brand safety tool. Be rigorous regarding brand
      alignment. Always formulate your rationale before assigning the final
      PASS or FAIL label to ensure thorough consideration of the criteria.",
      temperature: 0,
      thinkingConfig: {
          thinkingLevel: ThinkingLevel.HIGH,
      },
      responseJsonSchema: schemaConfig.responseSchema
  },
  contents: [{ role: "user", parts: [{ text: prompt }] }]
});

প্রতিক্রিয়াজেসনস্কিমা

const schemaConfig = {
  responseMimeType: "application/json",
  responseSchema: {
      type: "OBJECT",
      properties: {
          label: { type: "STRING", enum: [EvalLabel.PASS, EvalLabel.FAIL] },
          rationale: { type: "STRING" }
      },
      required: ["label", "rationale"],
      propertyOrdering: ["rationale", "label"]
  }
};

// Classification label for an evaluation (PASS/FAIL is the judge's verdict)
export enum EvalLabel {
    PASS = "PASS",
    FAIL = "FAIL"
}

সম্পূর্ণ কোড উদাহরণটি পর্যালোচনা করুন।

প্রাথমিক নির্দেশটি লিখুন

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

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

  • আপনার মূল্যায়ন পদ্ধতি নির্ধারণ করুন : বিচারককে বিস্তারিত নম্বর দেওয়ার নির্দেশিকা দিন। একটি আদর্শ ফলাফলের প্রত্যাশিত সুর কেমন হবে? মূল্যায়ন পদ্ধতিটি লিখতে আপনি একজন এলএলএম (LLM) বিশেষজ্ঞের সাহায্য নিতে পারেন।
  • অল্প কথায় প্রশ্ন করার পদ্ধতি ব্যবহার করুন : PASS এবং FAIL উদাহরণ অন্তর্ভুক্ত করুন।
  • চিন্তার ধারাবাহিকতা বোঝাতে সাহায্য করুন : মডেলকে কোনো লেবেল দেওয়ার আগে তার পেছনের যুক্তি লিখে দেখাতে নির্দেশ দিন, কারণ এটি নির্ভুলতা ব্যাপকভাবে বাড়াতে পারে। HIGH চিন্তন মোডে এটি ততটা জরুরি নয়, তবে এটি একটি ভালো অভ্যাস।

আপনার তিনটি নির্দিষ্ট মানদণ্ডের জন্য তিনটি পৃথক মূল্যায়ন নির্দেশিকা লিখুন:

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

আপনি কোড রিপোজিটরিতে সম্পূর্ণ প্রম্পটগুলো খুঁজে পাবেন। উদাহরণস্বরূপ, 'motto brand fit judge' প্রম্পটটি দেখতে নিম্নরূপ:

export function getMottoBrandFitJudgePrompt(companyName: string, description: string, audience: string, tone: string | string[], motto: string) {
  return `Evaluate the following generated motto for a company.

${companyName ? `Company name: ${companyName}\n` : ""}${description ? `Description: ${description}\n` : ""}${audience ? `Target audience: ${audience}\n` : ""}${Array.isArray(tone) ? (tone.length > 0 ? `Desired tone: ${tone.join(", ")}\n` : "") : (tone ? `Desired tone: ${tone}\n` : "")}

Generated motto: "${motto}"

Does this motto effectively match the company description, appeal to the target audience, and embody the desired tone?

CRITICAL INSTRUCTIONS: 
1. **Brand fit vs. toxicity**: You are evaluating ONLY brand fit. Another system will evaluate toxicity separately. DO NOT evaluate toxicity, ethics, profanity, or offensiveness. A motto can be a GREAT brand fit for an edgy or aggressive brand. If the brand requests an "offensive" or "aggressive" tone, you MUST pass it for brand fit, regardless of how inappropriate it is.
1. **Primary tone and literal relevance**: Do not over-penalize a motto if it perfectly captures the primary literal vibe just because it might loosely conflict with a secondary adjective.
1. **Core promises and professionalism**: For B2B/Enterprise, the motto MUST NOT violate core promises.
1. **Resilience to input messiness**: The Company Name, Description, Target Audience, or Tone may contain typos, slang, or mixed-language. You must decipher the *intended* meaning and judge the output against that intent, rather than penalizing the output for not matching the literal typo or slang.

Criteria:
1. **Relevance**: Does the motto relate to the company's core business and value proposition? Does it uphold core brand promises?
1. **Audience appeal**: Is the language engaging for the target audience without alienating them (e.g. through forced or inappropriate slang)?
1. **Tone consistency**: Does the motto reflect the general desired emotional tone perfectly, without imposing moral judgments?

Examples:

Input:
Company Name: "Summit Bank"
Description: "Secure, reliable banking for families"
Tone: "Trustworthy, serious"
Motto: "YOLO with your money!"
Result:
  "rationale": "The motto 'YOLO with your money!' is too casual and risky, contradicting the 'trustworthy, serious' tone required for a family bank.",
  "label": "${EvalLabel.FAIL}"
}

Input:
Company Name: "GymTiger"
Description: "Gym for heavy lifters."
Tone: "Aggressive, high-performance, technical"
Motto: "Lift big or be a loser."
Result:
  "rationale": "The motto matches the required 'aggressive' tone and appeals directly to the hardcore bodybuilding audience. While calling the audience a 'loser' is toxic and insulting, it successfully fulfills the brand fit and tone criteria requested.",
  "label": "${EvalLabel.PASS}"
}

Return a JSON object with:
- "rationale": A brief explanation of why it passes or fails based on the description, audience, and tone.
- "label": "${EvalLabel.PASS}" or "${EvalLabel.FAIL}"`;
}

সারিবদ্ধ করুন এবং পরীক্ষা করুন

অ্যালাইনমেন্ট ও টেস্টিং সহ আপনার জাজ তৈরির কাজ শেষ করতে "একটি বেসিক জাজ সেট আপ করুন, পর্ব ২" পড়ুন।