یک تیم سهنفره در تهران برای یک فروشگاه آنلاین لوازم خانگی، توضیحات محصول را با مدل تولید میکند. پرامپت اولیه کار میکرد؛ بعد یکی از بچهها جملهای به آن اضافه کرد که «لحن صمیمیتر باشد». روز بعد همه حس کردند خروجی بهتر شده. هفتهٔ بعد تیم پشتیبانی خبر داد که در چند توضیح، مشخصات فنی جابهجا نوشته شده است. کسی نمیداند این خرابی از آن جملهٔ تازه آمده یا از قبل هم بوده و فقط کسی ندیده بودش. برگشتن به پرامپت قدیمی هم جواب نمیدهد، چون معلوم نیست قدیمی واقعاً بهتر بود یا آن روز حالِ خوبِ تیم بود که «بهتر» را دیده بود.
این وضعیت، نقطهای است که تقریباً هر پروژهٔ هوش مصنوعی از آن رد میشود: کیفیت را با حس میسنجند. ارزیابی یا همان eval، ابزاری است که حس را به عدد تبدیل میکند؛ یعنی اجازه میدهد قبل از اینکه مشتری خرابی را ببیند، شما ببینیدش. در این درس، روش رسمی آنتروپیک برای ساختن ارزیابی را از صفر میسازیم.
لیست مطالب
آنچه در این درس یاد میگیرید
- چهار قطعهای که هر ارزیابی، هر قدر ساده یا پیچیده، از آنها ساخته میشود
- سه روش نمرهدهی — کدی، انسانی و مدلی — و اینکه هر کدام کجا جواب میدهد
- پرامپت آمادهٔ داورِ مدلی که میتوانید همین امروز روی کار خودتان بگذارید
- چرا «تعداد سؤال» از «کیفیت سؤال» مهمتر است و چرا هزینهٔ نمرهدهی با هزینهٔ سؤالنویسی فرق دارد
- چطور یک کار آزاد و بیقاعده را بازطراحی کنید تا قابل نمرهدهی خودکار شود
چهار قطعهٔ هر ارزیابی
مستندات آنتروپیک ارزیابی را به چهار جزء میشکند و همین شکستن، کل کار را قابلمدیریت میکند:
ورودی: همان پرامپتی که به مدل میدهید. نکتهٔ مهم اینکه ورودی معمولاً یک متن ثابت نیست؛ یک قالب است با جای خالی که سر هر آزمون پر میشود. خروجی: پاسخی که مدل تولید میکند. پاسخ طلایی: مرجع مقایسه — که بسته به کار، یا یک جواب دقیق است یا توصیفی از اینکه پاسخ درست چه ویژگیهایی دارد. نمره: عددی که از مقایسهٔ خروجی با پاسخ طلایی در میآید.
تفکیک پاسخ طلایی از نمره، همان جایی است که بیشتر تیمها اشتباه میکنند. برای کار «چند پا؟» پاسخ طلایی عدد است؛ برای کار «یک ایمیل بنویس» پاسخ طلایی اصلاً یک ایمیل نیست، بلکه معیار پذیرش است. این تفاوت، روش نمرهدهی را تعیین میکند.
روش اول: نمرهدهی کدی
اگر میشود با کد نمره داد، با کد نمره بدهید. سریعترین، ارزانترین و تکرارپذیرترین روش است. مثال رسمی مستندات، شمردن پای حیوان است — تمرینی که عمداً ساده انتخاب شده تا منطقش دیده شود:
def build_input_prompt(animal_statement):
user_content = f"""You will be provided a statement about an animal
and your job is to determine how many legs that animal has.
Here is the animal statement.
<animal_statement>{animal_statement}</animal_statement>
How many legs does the animal have?
Return just the number of legs as an integer and nothing else."""
return [{"role": "user", "content": user_content}]
eval = [
{"animal_statement": "The animal is a human.", "golden_answer": "2"},
{"animal_statement": "The animal is a snake.", "golden_answer": "0"},
{"animal_statement": "The fox lost a leg, but then magically grew back "
"the leg he lost and a mysterious extra leg on top of that.",
"golden_answer": "5"},
]
def grade_completion(output, golden_answer):
return output == golden_answer
به دو تصمیم ریز اما حیاتی دقت کنید. اول، جملهٔ «فقط عدد را برگردان و چیز دیگری نگو» در پرامپت آمده است؛ بدون این قید، مدل مینویسد «این حیوان ۲ پا دارد» و مقایسهٔ دقیق خراب میشود. دوم، رکورد سوم عمداً پیچیده است: روباهی که پایش را از دست داده و دوباره درآورده و یک پای اضافه هم پیدا کرده. سؤال سخت را از عمد وارد مجموعه میکنند، چون ارزیابیای که همهٔ سؤالهایش آسان است، هیچوقت خبر بد نمیدهد.
روش دوم: نمرهدهی انسانی
کندترین و گرانترین روش، اما همهکاره. اگر کار شما قالب مشخصی ندارد، آدم میتواند دربارهٔ آن قضاوت کند. نکتهٔ کلیدی این است که پاسخ طلایی در این حالت، دستور نمرهدهی است نه نمونهٔ پاسخ. نمونهٔ خودِ مستندات:
تا اینجا مقدمه بود. ادامهٔ این درس — تمرینها، فایلهای همراه و بخش اصلی — مخصوص اعضای «حرفهای» است.
ساخت ارزیابی برای هوش مصنوعی؛ کیفیت را حدس نزن، اندازه بگیر
این بخش جزو محتوای «عضویت حرفهای» است: دورهها، تمرینهای تعاملی و بستههای اختصاصی.
