Intercept؛ نگهبان میدلور برای ایجنتهای هوش مصنوعی لاراول
خلاصهٔ کاملتر
به گفتهٔ نویسنده، پکیج Intercept همون الگوی میدلوری که از درخواستهای HTTP لاراول میشناسی رو میاره سرِ پرامپتهایی که ایجنتهات به یه ارائهدهندهٔ هوش مصنوعی میفرستن. این پکیج که Victor Ukam برای Laravel AI SDK ساخته، بین ایجنت و ارائهدهنده میشینه تا بتونی قبل از اینکه پرامپت از اپلیکیشنت بیرون بره، بازرسی، بازنویسی یا ردش کنی. نسخهٔ اول رو دو موضوع امنیتی تمرکز داره: تزریق پرامپت و افشای دادهٔ شخصی (PII).
نویسنده تأکید میکنه که Intercept یه لایهٔ دفاعیه که به ایجنت اضافه میکنی، نه جایگزین کنترل دسترسی، اعتبارسنجی ورودی و لاگبرداری که اپت از قبل بهشون نیاز داره. برای وصلکردن میدلور، رابط HasMiddleware رو رو ایجنت پیاده میکنی و از متد middleware() نمونهها رو برمیگردونی. اینطوری گاردریلها کنار همون ایجنتی میمونن که ازش محافظت میکنن و بهجای یه پایپلاین سراسری، برای هر ایجنت جدا تنظیم میشن:
class ConciergeAgent implements Agent, HasMiddleware
{
public function middleware(): array
{
return [
new PromptInjectionGuard,
];
}
}نگهبان تزریق یعنی PromptInjectionGuard پرامپت ورودی رو با مجموعهای از الگوها میسنجه تا تلاشهای رایج برای دستکاری ایجنت، مثل تلاش برای نادیدهگرفتن دستورهای اصلی، رو تشخیص بده. بسته به action که انتخاب میکنی، رفتارش فرق میکنه: block یه استثنا پرت میکنه و درخواست رو متوقف میکنه، log تشخیص رو ثبت میکنه و ادامه میده، warn هشدار میده و sanitize بخش مشکوک رو قبل عبور حذف میکنه. میتونی الگوهای خودت رو هم بدی، یا کنار الگوهای پیشفرض یا کاملاً جایگزینشون. برای منطق پیچیدهتر هم یه callback بهت پرامپت، هندلر بعدی و جزئیات تشخیص رو میده.
بخش دوم، PIIRedactor هست که پرامپتها رو برای دادهٔ شخصی ساختارمند اسکن میکنه و قبل رسیدن به مدل بیرونی بازنویسیشون میکنه. نسخهٔ فعلی شش نوع موجودیت رو تشخیص میده: ایمیل، شماره تلفن، کارت اعتباری (با بررسی Luhn)، آدرس IP، کلید API و توکن Bearer. شناسههای آزاد مثل اسم، آدرس فیزیکی و شمارهٔ پاسپورت چون تشخیص مبتنی بر الگوئه، خارج از پوششان. اکشنهاش هم redact (جایگزینی با placeholder)، mask، log و block هستن.
یه پیشفرض مهم اینه که حتی زیر redact یا mask، سه نوع داده یعنی کارت اعتباری، کلید API و توکن Bearer بهمحض دیدهشدن بلاک میشن و پرامپت با استثنا رد میشه، نه بازنویسی. این فهرست رو با گزینهٔ blockEntities کنترل میکنی. همچنین میتونی تشخیص رو به موجودیتهای خاص محدود کنی، قالب placeholder رو عوض کنی و دامنههایی رو که نباید فلگ بشن (مثل دامنهٔ پشتیبانی خودت) به allowlist اضافه کنی:
new PIIRedactor(
entities: ['email', 'phone'],
allowedDomains: ['acme.test'],
replacementFormat: '{{TYPE}}#{{INDEX}}',
);هر میدلور بدون فایل کانفیگ هم کار میکنه، ولی اگه بخوای پیشفرضها رو بین ایجنتها یکی کنی، با php artisan vendor:publish --tag=intercept-config فایل config/intercept.php رو منتشر میکنی. ترتیب حلشدن تنظیمات هم اول آرگومانهای سازنده، بعد فایل کانفیگ و آخر پیشفرضهای داخلیه، پس مقدار هر ایجنت همیشه از مقدار سراسری جلو میزنه. به گفتهٔ نویسنده، Intercept نرمافزار تازهایه (نسخهٔ ۰٫۱٫۴)، به PHP 8.4 و پکیج laravel/ai نیاز داره و نقشهٔ راهش میدلورهای بیشتری تو حوزهٔ امنیت، مشاهدهپذیری، کارایی و راهنمایی رو وعده میده.
نکات کلیدی:
- Intercept الگوی میدلور لاراول رو رو پرامپت ایجنتهای هوش مصنوعی پیاده میکنه (بازرسی/بازنویسی/رد قبل خروج).
- با پیادهکردن HasMiddleware و متد middleware() برای هر ایجنت جدا تنظیم میشه.
- PromptInjectionGuard تلاشهای دستکاری رو تشخیص میده با اکشنهای block، log، warn و sanitize.
- PIIRedactor شش نوع دادهٔ شخصی رو میگیره و کارت اعتباری، کلید API و توکن Bearer بهطور پیشفرض بلاک میشن.
- فقط یه لایهٔ دفاعیه، نه جایگزین کنترل دسترسی و اعتبارسنجی؛ به PHP 8.4 و laravel/ai نیاز داره.




