مقدمه

Transformers.js کتابخانه‌ای است که به توسعه‌دهندگان امکان پیاده‌سازی مدل‌های زبانی و دیگر مدل‌های یادگیری ماشین را در مرورگر می‌دهد. در این راهنما می‌خواهیم برنامه‌ای ترکیبی از Background Service Worker، Side Panel Chat UI، و Content Script ایجاد کنیم تا مدل‌های هوش مصنوعی را به‌صورت محلی در افزونه کروم اجرا کنیم.

ساختار افزونه و محدودیت‌های Manifest V3

Manifest V3 اجازه دستکاری مستقیم در مرورگر را محدود کرده و به جای صفحات مشاغل از service workers استفاده می‌کند. در نتیجه، مدل باید در background.js بارگذاری و سپس از طریق chrome.runtime.sendMessage با سایر بخش‌ها ارتباط برقرار شود.

لودینگ مدل و مدیریت کچهٔ حافظه

برای بارگذاری مدل باید ابتدا منابع را از یک داده مدل دانلود و در IndexedDB ذخیره کنیم. سپس در زمان فعال‌سازی افزونه آن را در حافظه باز می‌کنیم.

  • برنامه‌ریزی لزوم پاک‌سازی کش در انقضای زمان معین.
  • استفاده از fetch به همراه cache-control مناسب.
  • مدیریت محدودیت 512 MB برای حافظه به‌عنوان پارامتر پیش‌فرض.

پیاده‌سازی UI و ارتباط داده

در side panel، یک iframe کوچک در جایی که کروم اجازه می‌دهد، ایجاد می‌کنیم. این iframe با مودال میزبانی می‌شود و در زمان کلیک، پیام‌های متنی را به background.js می‌فرستد. پس از پردازش، نتیجه برگردانده و در پنجره چت نمایش داده می‌شود.

نکات عملی و راه‌حل‌های رایج

یکی از مشکلات متداول در توسعه افزونه‌های هوش مصنوعی، بروز جلوگیری از محدودیت::quotaExceeded در Storage Local است. استفاده از Service Worker Cache API در جایگزین مناسب می‌تواند این مشکل را برطرف کند.

پرسش‌های پرتکرار

آیا این افزونه در مرورگرهای غیر کروم نیز کار می‌کند؟

در حال حاضر این افزونه با استفاده از ویژگی‌های خاص Manifest V3 ساخته شده است؛ بنابراین در مرورگرهای مبتنی بر Chromium مانند کروم، اوکتا و میشل می‌تواند اجرا شود. نسخه‌ای برای فایرفاکس بر پایه WebExtensions در آینده در نظر گرفته شده است.

مقدار حافظه‌ای که از مدل‌های هوش مصنوعی استفاده می‌کند چقدر است؟

به‌طور پیش‌فرض حداکثر 512 MB حافظه برای مدل‌ها در حافظه مقایسه‌ای (memory‑mapped files) در سرویس ورکر تعیین شده است؛ اما می‌توانید با تغییر پارامتر <code>maxMemorySize</code> در فایل <code>config.json</code> آن را به دلخواه تنظیم کنید.