سه سؤال از یه پیشنویس، فقط با یه درخواست به Laravel AI SDK
خلاصهٔ کاملتر
تو قسمت دوم مجموعه ویدیویی Decide with Jev از Laravel News، نویسنده به یه مشکل ساده اشاره میکنه: یه جواب بله یا نه درباره یه پیشنویس چیز زیادی بهت نمیگه. شاید بگه متن با brief (یعنی خلاصه چیزی که ازش خواسته شده) جوره، ولی نمیگه متن از چه نوعیه یا مراحلش راحت دنبال میشه یا نه. برای همین اینجا سه سؤال درباره یه پیشنویس پرسیده میشه و باز هم فقط یه درخواست به مدل (اسمش Jev هست) فرستاده میشه.
هر سؤال نوع جواب خودش رو داره:
- یه Boolean: آیا پیشنویس همون چیزی رو که brief خواسته تحویل میده؟
- یه انتخاب: متن آموزشیه، اعلامیهست، نظر شخصیه یا یه چیز دیگه؟
- یه نمره: خواننده مراحل واضح و یه راه برای چک کردن نتیجه داره یا نه؟
چرا یه نمره کلی نه؟ نویسنده میگه «۷ از ۱۰» خیلی چیزها رو قایم میکنه. وقتی میرسه به ۵، نمیفهمی کدوم بخش بدتر شده. ولی سه جواب جدا مستقیم انگشت میذارن روی همون بخشی که عوض شده.
اول درخواست رو میبره تو یه service جدا، تا اپ و تستها دقیقاً همون سؤالها رو بپرسن. این مجموعه سؤالها یه اسم و یه نسخه میگیره و اگه بعداً قوانین عوض بشه، یه نسخه جدید ساخته میشه. یه گزینه «other» هم به لیست نوعهای متن اضافه میکنه، چون بدون اون مدل مجبوره هر پیشنویسی رو به زور تو یکی از سه دسته جا بده، حتی وقتی هیچکدوم بهش نمیخوره.
بعد سراغ خوندن جوابها میره. جواب انتخابی میگه مدل کدوم گزینه رو برداشته و احتمال هر گزینه چقدر بوده، بهعلاوه یه عدد confidence که نشون میده انتخاب چقدر قاطع بوده. جواب نمرهای ممکنه بین دو سطح بیفته، برای همین نویسنده از level() برای گرفتن محتملترین سطح و از normalized() برای تبدیل نمره به عددی بین ۰ تا ۱ استفاده میکنه.
یه نکته مهم هم هست: این سه سؤال جواب همدیگه رو نمیبینن. مدل همهشون رو همزمان جواب میده، پس نوع متنی که انتخاب شده روی نمره مراحل اثر نمیذاره. نویسنده میگه اگه لازمه یه جواب روی یه تصمیم دیگه اثر بذاره، باید بعد از برگشتن جواب، خودت تو PHP این منطق رو بنویسی.
نکات کلیدی:
- سه سؤال با سه نوع جواب (Boolean، انتخاب، نمره) فقط با یه درخواست به مدل پرسیده میشن
- مجموعه سؤالها تو یه service جدا با اسم و نسخه نگه داشته میشه تا اپ و تستها یکی باشن
- گزینه «other» جلوی این رو میگیره که مدل متن رو به زور تو یه دسته نامربوط بذاره
- level() محتملترین سطح نمره رو میده و normalized() نمره رو به عددی بین ۰ تا ۱ تبدیل میکنه
- سؤالها جواب همدیگه رو نمیبینن و وابستگی بین جوابها باید بعداً تو PHP پیاده بشه




