LayaPHP: دستهبندی متن با هوش مصنوعی روی سرور خودت
خلاصهٔ کاملتر
تو این مقالهٔ Laravel News اومده که Laya یه مدل متنباز و non-autoregressive هست (یعنی جوابش رو کلمهبهکلمه تولید نمیکنه و یهجا تصمیم میگیره). این مدل برای تصمیمهای سریع ساخته شده: از بین چند برچسب یکی رو انتخاب میکنه، روی یه مقیاسی که خودت تعریف کردی نمره میده، یا احتمال بله/نه برمیگردونه. سرویس Jev از TypeSafe هم همین سه نوع سؤال رو جواب میده، ولی روی سرورهای خودشون اجرا میشه.
فرق اصلی اینجاست: Laya روی زیرساخت خودت اجرا میشه و فقط هزینهٔ سختافزار رو میدی، نه پول جدا برای هر درخواست. پروسهٔ laya-serve درخواستهایی به همون شکل Jev رو روی مسیر /v1/systemone قبول میکنه. LayaPHP که Marc Reichel نوشته، متن رو به laya-serve میفرسته و جوابها رو بهصورت آبجکتهای تایپدار PHP همراه با میزان اطمینان برمیگردونه. خود نویسندهٔ پکیج میگه هنوز اونو با Jev واقعی تست نکرده.
مثال مقاله یه فروشگاهه که میخواد نظرهای اسپم و توهینآمیز رو جدا کنه و حس هر نظر رو هم ثبت کنه. متد predict() همهٔ سؤالها رو تو یه درخواست میپرسه:
$result = $laya->predict($body, [
'spam' => Question::yesNo('Is this review spam or an advertisement?'),
'abuse' => Question::yesNo('Does this review contain insults, hate speech, or threats?'),
]);
$spam = $result->yesNo('spam');
$abuse = $result->yesNo('abuse');متد yes() بهطور پیشفرض با آستانهٔ احتمال 0.5 کار میکنه. یه مقدار جدا به اسم answerConfidence هم هست که نشون میده مدل چقدر به جوابش مطمئنه. تو مثال، نظرهای مشکوک و هر جوابی با اطمینان زیر 0.7 برای بررسی دستی فرستاده میشه. نویسنده میگه این عدد رو فقط برای مثال انتخاب کرده و بهتره قبل از اینکه بذاری Laya خودش نظرها رو تأیید کنه، تصمیمهاش رو با کار ناظرهای واقعیت مقایسه کنی.
تو تست نویسنده با Laya نسخهٔ 0.3.23، نظر «محصول کار میکنه ولی ارسالش خیلی طول کشید» رفت برای بررسی دستی، چون مدل حسش رو منفی تشخیص داد ولی اطمینانش زیر 0.7 بود. یه تبلیغ و یه نظر توهینآمیز هم رفتن تو صف بررسی. البته مدلهای جدیدتر ممکنه نتیجهٔ دیگهای بدن. علاوه بر این، Question::score() برای مقیاسهایی مثل «فوری نیست / بهزودی / مسدودکننده» هست و متد decide() سؤالهایی که با attributeهای PHP تعریف شدن رو به پراپرتیهای enum، عدد صحیح و boolean تو constructor وصل میکنه.
برای راهاندازی، یه فایل Docker Compose تو ریپوی پکیج هست که laya-serve رو روی بالا میاره. اولین درخواست حدود 1 گیگابایت وزن مدل دانلود میکنه. تو لاراول 13 به بالا، فقط کافیه LAYA_URL رو تو .env بذاری و Laya رو inject کنی. دستور php artisan laya:health هم وصل بودن سرور رو چک میکنه. برای تست هم Laya::fake() هست که بدون اجرای مدل، منطق مسیردهی نظرها رو تست میکنه.
نکات کلیدی:
- LayaPHP به PHP 8.4 به بالا و یه کلاینت HTTP مطابق PSR-18 مثل Guzzle نیاز داره.
- Laya سه نوع سؤال داره: انتخاب برچسب، نمره روی مقیاس، و احتمال بله/نه.
- Laya روی سرور خودت اجرا میشه و هزینهٔ جدا برای هر درخواست نداره.
- اولین درخواست حدود 1 گیگابایت وزن مدل دانلود میکنه.
- Laya::fake() تست منطق برنامه رو بدون اجرای مدل ممکن میکنه.
- پکیج بیرون از لاراول هم با new Laya(' کار میکنه.




