Promptfoo দিয়ে একটি C# LLM Eventparser মূল্যায়ন করা

সাধারণ কোড টেস্ট করা সহজ। আপনি একটি ফাংশন কল করেন, একটি ফলাফল পান এবং সেটি আপনার প্রত্যাশা অনুযায়ী হয়েছে কি না তা যাচাই করেন।

LLM টেস্ট করা ভিন্ন বিষয়। একটি LLM একবার "3 PM" দিতে পারে আবার অন্যবার "15:00" দিতে পারে। দুটিই সঠিক, কিন্তু একটি 'exact match' টেস্ট এক্ষেত্রে ব্যর্থ হবে। আপনার যাচাই করা প্রয়োজন উত্তরটি সঠিক কি না, সেটি হুবহু এক কি না তা নয়।

এটি পরীক্ষা করার জন্য আমি EventParser নামে একটি ছোট অ্যাপ তৈরি করেছি। এটি "Team sync on Friday at 3 PM"-এর মতো একটি সাধারণ মেসেজ গ্রহণ করে এবং সেটিকে স্ট্রাকচার্ড ডেটাতে (structured data) রূপান্তর করে।

Promptfoo এবং একটি LLM-as-a-judge ওয়ার্কফ্লো ব্যবহার করে আপনি কীভাবে এটি টেস্ট করতে পারেন তা নিচে দেওয়া হলো।

The Setup

অ্যাপটি একটি মাত্র প্রম্পট ফাইল ব্যবহার করে: extract_event.txt। C# কোডটি রানটাইমে এই ফাইলটি পড়ে। Promptfoo টেস্টিংয়ের জন্য একই ফাইল পড়ে। এটি নিশ্চিত করে যে আপনি ব্যবহারকারীরা আসলে যে প্রম্পটটি দেখছেন সেটিই টেস্ট করছেন।

The Workflow

প্রতিটি আউটপুট একজন মানুষের মাধ্যমে যাচাই করার পরিবর্তে, আমরা একটি জাজ মডেল (judge model) ব্যবহার করি। এই প্রক্রিয়ায় দুটি ভূমিকা রয়েছে:

• যে মডেলটি টেস্ট করা হচ্ছে: যে মডেলটি উত্তর প্রদান করছে। • জাজ মডেল (judge model): একটি দ্রুততর এবং সাশ্রয়ী মডেল যা উত্তরটি গ্রেড বা মূল্যায়ন করে।

How the Judge Decides

জাজ একটি রুব্রিক (rubric) ব্যবহার করে। রুব্রিক হলো সহজ ইংরেজি ভাষায় লেখা একটি নিয়ম। একটি নির্দিষ্ট JSON স্ট্রিং চেক করার পরিবর্তে, আপনি জাজকে বলে দেন যে উত্তরের মধ্যে কী কী থাকা উচিত।

Example Rubric: "উত্তরে ইভেন্টের শিরোনাম, দিন, সময় এবং অবস্থান থাকতে হবে। মেসেজে উল্লেখ নেই এমন কোনো তথ্য এতে যোগ করা যাবে না।"

Testing for Errors

আমি ইচ্ছাকৃতভাবে একটি ভুল নির্দেশ যোগ করে প্রম্পটটি নষ্ট করে দিয়েছিলাম: "যদি মেসেজে কফির কথা উল্লেখ থাকে, তবে লোকেশন হিসেবে Starbucks সেট করো।"

যখন আমি ইভ্যালুয়েশন (evaluation) চালালাম, জাজটি ভুলটি ধরে ফেলল। মূল মেসেজে Starbucks-এর কথা উল্লেখ ছিল না। মডেলটি একটি কাল্পনিক লোকেশন (hallucination) তৈরি করেছিল। একটি 'exact match' টেস্ট এটি ধরতে পারত না, কিন্তু একটি জাজ মডেল সিম্যান্টিক এরর (semantic errors) বা অর্থের ভুল ধরতে পারে।

Why this works:

• এটি বাস্তবতার সাথে সামঞ্জস্যপূর্ণ: এটি "3 PM" বা "15:00"-এর মতো বিভিন্ন সঠিক ফরম্যাট গ্রহণ করে। • এটি পঠনযোগ্য নিয়ম ব্যবহার করে: সহজ ইংরেজি রুব্রিকগুলো বোঝা সহজ। • এটি অর্থের ভুল (meaning bugs) ধরতে পারে: এটি হ্যালুসিনেশন এবং লজিক্যাল এরর খুঁজে বের করে। • এটি সাশ্রয়ী: আপনি একটি দামী মডেলকে গ্রেড করার জন্য একটি সস্তা মডেল ব্যবহার করতে পারেন।

এই পদ্ধতিটি LLM টেস্টিংকে প্রকৃত সফটওয়্যার টেস্টিংয়ের মতো করে তোলে।

Source: https://dev.to/bigboybamo/evaluating-a-c-llm-eventparser-with-promptfoo-4b87

Optional learning community: https://t.me/GyaanSetuAi