چرا فقط تست کردن پرامپت کافی نیست؟
خلاصهٔ کاملتر
نویسنده که داره یه بازی نقشآفرینی متنی با هوش مصنوعی (به اسم Astra) میسازه، میگه بازی سرگرمکننده ولی ناپایدار بود: لحن دیالوگها گاهی عوض میشد، یه اکشن امن مثل ریسکی برخورد میکرد، و شهر تو مقدمهٔ بازی خالی از سکنه به نظر میرسید. اولین راهحلی که به ذهنش رسید همون روش قدیمی eval پرامپت بود: نمونهٔ خراب رو ذخیره کن، یه AI داور بهش امتیاز بده، پرامپت رو بازنویسی کن و دوباره امتحان کن.
اما وقتی Astra شروع کرد به رفع مشکلات، معلوم شد بیشتر مشکلات از پرامپت نمیاومدن. مثلاً تو یه طوفان، بازی درست جلوی حرکت شخصیت رو گرفت ولی تو روایت نوشت «تلاش، فاز رو مصرف کرد» که یعنی حسابداری داخلی بازی وارد متن داستان شده بود؛ برای رفعش Astra فرمت خروجی مدل رو عوض کرد تا هر پاراگراف داستان، رویداد بازیای که توصیف میکنه رو اسم ببره. یه مشکل دیگه این بود که نگهداشتن یه وسیله، بهجای برگردوندنش، به اشتباه به عنوان پیشرفت حساب میشد؛ رفعش به یه زیرسیستم کامل برای ردیابی قرضها نیاز داشت.
نویسنده نتیجه گرفت که یه eval پرامپت بهتنهایی نمیتونه بگه کل بازی درست کار میکنه یا نه، چون چیزی که بازیکن میبینه، ترکیبیه از پرامپت، فرمت پاسخ، تاس، دفتر یادداشت حافظه، و چک تصویرها. برای همین کل تستها و evalها رو مثل یه هرم چید: پایینترین لایه تستهای معمولی نرمافزار (قوانین بازی، تاس، ذخیرهٔ پیشرفت)، لایهٔ وسط سناریوهای replay که فقط پرامپت رو چک میکنن، و بالای هرم سناریوهایی به شکل کد که کل بازی رو از بیرون تست میکنن، شبیه Behaviour Driven Development.
برای قضاوت خروجیهای ذهنی مثل کیفیت داستان، خود یه ایجنت (Astra تو Codex یا Fable تو Claude Code) نقش داور رو بازی میکنه: داستان و نتایج ثبتشده رو با نتیجهٔ موردانتظار مقایسه میکنه و هر ناهماهنگی رو تا ریشهش تو بازی، فرمت پاسخ یا کد دنبال میکنه. حتی برای اینکه بفهمه AI داور، نقشههای بازی رو درست قضاوت میکنه یا نه، Astra یه فرم بازبینی ساخته که اول نظر خود نویسنده رو میگیره و بعد قضاوت مدل رو نشون میده.
لایهٔ نهایی، تست از راه خود مرورگره: ایجنت مرورگر رو کنترل میکنه، اسکرینشات میگیره، خطاهای صفحه و درخواستهای ناموفق رو یادداشت میکنه، و با خوندن همون اسکرینشاتها تجربهٔ کاربر رو میسنجه. نویسنده میگه این حلقه کامل شده و کل مسیر از یه شکایت ساده تا تغییر کد، سناریو، سشن و چک مرورگر رو پوشش میده. به گفتهٔ اون، پروژههای مشابهی مثل Self-Harness و Weco’s AIDE2 هم دارن همین ایده رو امتحان میکنن: یه ایجنت که ایجنت دیگه رو با تغییر دادن ابزارهاش بهتر میکنه.
نکات کلیدی:
- eval پرامپت بهتنهایی نمیتونه رفتار کل سیستم (پرامپت، فرمت پاسخ، کد و حافظه) رو بسنجه.
- تستها به شکل هرم چیده شدن: تستهای معمولی نرمافزار، سناریوهای replay پرامپت، و سناریوهای کد که کل بازی رو تست میکنن.
- برای قضاوت خروجیهای ذهنی مثل کیفیت داستان، یه ایجنت جداگانه نقش داور رو بازی میکنه.
- تست نهایی از طریق خود مرورگر و اسکرینشات انجام میشه؛ کل سیستم eval تو حدود دو روز ساخته شد.




