نسخهی ۲ پکیج Laravel URL AI Transformer از Spatie
خلاصهٔ کاملتر
Laravel URL AI Transformer پکیجی از Spatieه که یه لیست URL رو fetch میکنه، محتوای هر صفحه رو به یه مدل هوش مصنوعی میفرسته و جوابش رو تو دیتابیس ذخیره میکنه. به گفتهی Laravel News میشه ازش برای ساختن JSON-LD صفحههای خودت یا بیرون کشیدن مشخصات محصول از یه صفحه استفاده کرد. تو نسخهی ۲، هر ترنسفورمر یه agent از Laravel AI هست؛ نسخهی ۱ برای صدا زدن مدل از Prism استفاده میکرد.
URLها و ترنسفورمرها رو با کلاس Transform ثبت میکنی، معمولاً تو یه service provider. متد urls() یه closure هم قبول میکنه که فقط موقع اجرای تبدیل صدا زده میشه، یعنی خوندن URLها از دیتابیس به هر درخواست یه کوئری اضافه نمیکنه:
Transform::urls(
fn () => Article::published()->pluck('url')->toArray()
)->usingTransformers(new LdJsonTransformer);دستور Artisan به اسم transform-urls هر URL رو یه بار میگیره و برای هر ترنسفورمر یه job تو صف میذاره (با --now همهچی همزمان اجرا میشه). نتیجهها تو جدول transformation_results ذخیره میشن و با TransformationResult::forUrl() بر اساس URL و نوع ترنسفورمر خونده میشن. فیلترهای --url و --transformer هم wildcard قبول میکنن، پس میشه فقط یه بخش سایت رو دوباره اجرا کرد.
یه ترنسفورمر فقط یه متد instructions() لازم داره که system prompt اون agent میشه و محتوای صفحه بهعنوان پیام کاربر فرستاده میشه:
class SummaryTransformer extends Transformer
{
public function instructions(): Stringable|string
{
return 'Summarize this webpage content in 3 concise bullet points.';
}
}قبل از ارسال، اسکریپتها و استایلها و تگهای HTML حذف میشن و متن روی ۶۰۰۰ کاراکتر بریده میشه. اگه ترنسفورمر قرارداد HasStructuredOutput رو پیاده کنه، خروجی با یه schema اعتبارسنجی و بهصورت JSON ذخیره میشه. LdJsonTransformer آماده هم JSON رو با JSON_THROW_ON_ERROR decode میکنه تا خروجی خراب، تبدیل رو failed علامت بزنه و job دوباره تلاش کنه. امکاناتی مثل shouldRun() برای رد کردن URLهای تازهپردازششده، رویداد TransformerFailed و regenerate() هم هست.
provider و مدل پیشفرض تو کانفیگ تعیین میشن و پیشفرض ارزونترین مدل OpenAI هست. هر ترنسفورمر میتونه با attributeهای Laravel AI مثل #[Provider]، #[Model]، #[MaxTokens] و #[Temperature] اینو عوض کنه. برای تست هم صفحه رو با Http::fake() و جواب AI رو با متد fake() خود ترنسفورمر شبیهسازی میکنی.
نکات کلیدی:
- نیازمند PHP 8.4 و Laravel 12 یا 13
- هر ترنسفورمر تو نسخهی ۲ یه agent از Laravel AI هست و Prism کنار گذاشته شده
- محتوای صفحه قبل از ارسال روی ۶۰۰۰ کاراکتر بریده میشه
- مدل پیشفرض ارزونترین مدل OpenAI هست و با attribute برای هر ترنسفورمر قابل تغییره
- برای ارتقا از نسخهی ۱ یه راهنمای upgrade با فرمت جدید کانفیگ و یه migration ایندکس یکتا هست




