کانکتور هوش مصنوعی Ultimate برای WebLLM
کانکتور هوش مصنوعی Ultimate برای WebLLM، قابلیت استنتاج (inference) هوش مصنوعی بومی مرورگر را به شبکه چندسایتی (multisite) وردپرس شما میآورد. این کانکتور مدلهای زبان بزرگ (LLM) را به طور کامل در مرورگر کاربر با استفاده از WebLLM و موتور MLC اجرا میکند — نیازی به کلید API، تماسهای خارجی یا خروج دادهها از دستگاه کاربر نیست.
ویژگیهای کلیدی
- استنتاج در مرورگر (Browser-side inference): LLM به صورت محلی در مرورگر بازدیدکننده با استفاده از WebLLM/MLC اجرا میشود — نیازی به GPU سرور نیست.
- ویجت چت شناور (Floating chat widget): کاربران وارد شده میتوانند مستقیماً از فرانتاند، با LLM سمت مرورگر تعامل کنند.
- نشانگر وضعیت نوار مدیریت (Admin-bar status indicator): وضعیت بلادرنگ موتور WebLLM در نوار مدیریت وردپرس قابل مشاهده است.
- SharedWorker runtime: چندین تب مرورگر به جای رقابت برای منابع GPU، از یک جلسه GPU مشترک استفاده میکنند.
- apiFetch middleware: درخواستهای وردپرس REST که الگوی AI Client SDK را دارند، به طور شفاف به بروکر محلی WebLLM هدایت میشوند — بدون نیاز به رفت و برگشت HTTP لوپبک.
- رابط کاربری تنظیمات ویجت: پنل کانکتور برای فعال/غیرفعال کردن ویجت چت و تنظیم رفتار پیشفرض پرامپت.
- کش IndexedDB: دانلود وزن مدل (Model weight) در برابر تغییر مسیرهای CDN که مسیر پیشفرض Cache API را خراب میکنند، مقاومت میکند.
- یکپارچهسازی فیلتر wpai: به فیلتر
wpai_preferred_text_modelsمتصل میشود تا ویژگی AI Experiments در صورت پیکربندی، به موتور مرورگر هدایت شود.
پیشنیازها
- وردپرس ۵.۳ یا بالاتر
- PHP ۷.۴ یا بالاتر
- افزونه Ultimate Multisite (فعال)
- مرورگری با پشتیبانی از WebGPU (Chrome ۱۱۳+، Edge ۱۱۳+، یا Firefox Nightly با فعال بودن WebGPU)
نصب
۱. فایلهای افزونه را در دایرکتوری /wp-content/plugins/ آپلود کنید.
۲. افزونه را از طریق منوی 'Plugins' در وردپرس فعال کنید.
۳. برای پیکربندی افزونه به Ultimate Multisite → AI Connector بروید.
ویجت چت شناور
ویجت چت شناور به هر کاربر وارد شده اجازه میدهد تا مستقیماً با LLM سمت مرورگر از فرانتاند شما تعامل کند، بدون اینکه از صفحهای که در آن قرار دارد دور شود.
کارکرد آن
هنگامی که فعال شود، یک آیکون چت در گوشه هر صفحه فرانتاند برای کاربران وارد شده ظاه ر میشود. کلیک روی این آیکون یک پنل چت باز میکند که کاربر میتواند پرامپتهای خود را تایپ کرده و پاسخها را از مدل WebLLM که به صورت محلی اجرا میشود، دریافت کند. از آنجایی که مدل به طور کامل در مرورگر اجرا میشود، پاسخها خصوصی هستند و هیچ پردازش سمت سروری شامل آنها نمیشود.
نشانگر وضعیت نوار مدیریت
نوار مدیریت وردپرس شامل یک نشانگر وضعیت است که وضعیت فعلی موتور WebLLM را نشان میدهد:
| وضعیت | معنی |
|---|---|
| Loading | موتور MLC در حال مقداردهی اولیه یا دانلود وزن مدل است. |
| Ready | مدل بارگذاری شده و برای استنتاج آماده است. |
| Idle | موتور بارگذاری شده است، اما تب SharedWorker فعال نیست. |
| Error | موتور در مقداردهی اولیه شکست خورده است — جزئیات را در کنسول مرورگر بررسی کنید. |
این نشانگر بدون نیاز به رفرش صفحه، به صورت بلادرنگ بهروز میشود.
نحوه فعال یا غیرفعال کردن ویجت
۱. به Ultimate Multisite → AI Connector در بخش مدیریت شبکه بروید. ۲. پنل Connector را پیدا کنید. ۳. گزینه Enable floating chat widget را روشن یا خاموش کنید. ۴. تنظیمات را ذخیره کنید.
در صورت اعطای این قابلیت توسط مدیر شبکه، ویجت میتواند از پنل مدیریت خود سایت نیز فعال یا غیرفعال شود.
تنظیمات ویجت
پنل Connector در Ultimate Multisite → AI Connector شامل تنظیمات زیر برای ویجت چت شناور است:
فعال کردن ویجت چت شناور
این گزینه ویجت چت را برای کل شبکه روشن یا خاموش میکند. در صورت غیرفعال بودن، ویجت در هیچ صفحه فرانتاند، صرف نظر از نقش کاربر، نمایش داده نخواهد شد.
پیشفرض: خاموش
رفتار پرامپت خودکار (Auto-Prompt Behaviour)
کنترل میکند که آیا ویجت چت به طور خودکار پرامپتی ارسال کند یا خیر، زمانی که کاربر آن را باز میکند.
| گزینه | رفتار |
|---|---|
| Disabled | ویجت با یک چت خالی باز میشود — کاربر پرامپت خود را تایپ میکند. |
| Page context | ویجت با پرامپتی که بر اساس عنوان و محتوای صفحه فعلی پر شده، باز میشود. |
| Custom prompt | ویجت با پرامپتی سفارشی که در فیلد زیر تعریف میکنید، باز میشود. |
هنگامی که روی Custom prompt تنظیم شود، یک فیلد متنی اضافی ظاهر میشود که میتوانید متن پرامپت پیشفرض را در آن وارد کنید. از متغیرهای قالببندی ساده پشتیبانی میکند:
{site_name}— نام سایت فعلی{page_title}— عنوان صفحه فعلی{user_display_name}— نام نمایشی کاربر وارد شده
پیشفرض: خاموش
SharedWorker Runtime
نسخه ۱.۱.۰ یک SharedWorker runtime برای موتور MLC معرفی میکند. پیش از این، هر تب مرورگری که از WebLLM استفاده میکرد، نمونه (instance) مدل خود را بارگذاری میکرد و برای منابع GPU رقابت میکرد و باعث مشکلات عملکردی در دستگاههای با VRAM محدود میشد.
با SharedWorker runtime، یک تب به عنوان میزبان موتور عمل میکند. تمام تبهای دیگر با این نمونه واحد از طریق کانال پیام (message channel) کارگر ارتباط برقرار میکنند. نتیجه این کار:
- یک جلسه GPU مشترک برای تمام تبهای باز.
- پاسخهای سریعتر پس از بارگذاری مدل (بدون مقداردهی اولیه مکرر).
- مصرف حافظه پیک پایینتر در دستگاه.
SharedWorker برای کاربران نامرئی است. نشانگر وضعیت نوار مدیریت همیشه وضعیت موتور مشترک را منعکس میکند، نه تب منفرد.
apiFetch Middleware
این افزونه یک middleware به نام apiFetch نصب میکند که درخواستهای وردپرس REST API مطابقتکننده الگوی AI Client SDK را رهگیری (intercept) میکند. به جای ارسال یک درخواست HTTP لوپبک به سرور، این درخواستها مستقیماً به بروکر محلی WebLLM که در SharedWorker اجرا میشود، هدایت میشوند.
این بدان معناست که افزونهها و تمهایی که از API است اندارد apiFetch وردپرس برای فراخوانی نقاط پایانی هوش مصنوعی استفاده میکنند، به طور خودکار از مدل سمت مرورگر بهرهمند خواهند شد، بدون نیاز به تغییر کد.
Hooks و Filters
فیلترها (Filters)
wpai_preferred_text_models— ثبت موتور مرورگر WebLLM به عنوان یک مدل متنی ترجیحی. این افزونه به طور خودکار هنگام پیکربندی و در دسترس بودن موتور به این فیلتر متصل میشود.ultimate_webllm_widget_enabled— بازنویسی وضعیت فعال بودن ویجت برای یک کاربر یا زمینه خاص. مقدارtrueیاfalseرا برگردانید.ultimate_webllm_auto_prompt— تغییر متن پرامپت خودکار قبل از ارسال به ویجت. رشته پرامپت و شیءWP_Postفعلی را دریافت میکند.
عیبیابی
ویجت چت نمایش داده نمیش ود
- تأیید کنید که کاربر وارد شده است — ویجت فقط برای کاربران احراز هویت شده نمایش داده میشود.
- بررسی کنید که Enable floating chat widget در پنل Connector روشن باشد.
- تأیید کنید که مرورگر کاربر از WebGPU پشتیبانی میکند (به بخش پیشنیازها مراجعه کنید).
نشانگر نوار مدیریت "Error" را نشان میدهد
کنسول توسعهدهنده مرورگر (F12) را باز کنید و به دنبال خطاهای مربوط به WebLLM بگردید. دلایل رایج:
- مرورگر از WebGPU پشتیبانی نمیکند.
- دانلود وزن مدل ناموفق بوده است — اتصال شبکه را بررسی کرده و سعی کنید کش IndexedDB را در ابزارهای توسعهدهنده مرورگر (Application → IndexedDB) پاک کنید.
- یک افزونه مرورگر SharedWorker را مسدود کرده است.
وزن مدل هر بار دانلود میشود
این افزونه از IndexedDB به عنوان بکاند کش استفاده میکند تا مطمئن شود که وزن مدل در برابر تغییر مسیرهای CDN باقی میمانند. اگر وزنها در هر بازدید دوباره دانلود میشوند، بررسی کنید که آیا IndexedDB توسط تنظیمات حریم خصوصی مرورگر یا افزونهای پاک نمیشود.
تاریخچه تغییرات (Changelog)
برای سابقه کامل نسخهها به Changelog مراجعه کنید.