Summarizer API به توسعهدهندگان وب امکان میدهد تا بااستفاده از Gemini Nano در Chrome یا Phi در Edge، خلاصهسازی نوشتار محلی با بهرهگیری از هوش مصنوعی را مستقیماً در مرورگر ارائه دهند. این میانای برنامهسازی کاربردی از قالبهای مختلفی ازجمله نکات کلیدی، عناوین، و خلاصههای کوتاه پشتیبانی میکند و درعینحال برای تضمین حریم خصوصی کاربر کاملاً در دستگاه اجرا میشود.
شروع به کار
Summarizer API از Chrome و Edge نسخه ۱۳۸ دردسترس است. این ویژگی به بارگیری یکباره مدل Gemini Nano یا Phi (بهترتیب) نیاز دارد.
الزامات سختافزاری و نرمافزاری
- سیستمعامل: Windows 10/11، macOS 13+، Linux، یا ChromeOS (Chromebook Plus).
- فضای ذخیرهسازی: ۲۲ گیگابایت فضای خالی برای حجم نمایه.
- RAM/CPU: بیشاز ۱۶ گیگابایت RAM و بیشاز ۴ هسته CPU.
- VRAM: ۴ گیگابایت یا بیشتر (درصورت استفاده از GPU).
بارگیری و دردسترس بودن مدل
بررسی کنید که آیا مدل آماده است، نیاز به بارگیری دارد، یا دردسترس نیست.
ارسال گزینههای اجباری: باید شیء گزینههای پیکربندی یکسان را به هر دو Summarizer.availability(options) و Summarizer.create(options) ارسال کنید. از سطح میانای برنامهسازی کاربردی منسوخشده window.ai.summarizer استفاده نکنید.
پایش اجباری پیشرفت: باید با ارائه یک monitor(m) callback به Summarizer.create() و افزودن یک شنونده برای رویداد downloadprogress، پایشگری برای پیشرفت بارگیری مدل پیادهسازی کنید.
الزام اشاره کاربر: وقتی availability برابر با 'downloadable' یا 'downloading' باشد، راهاندازی بارگیری واقعی ازطریق Summarizer.create() به اشاره کاربر (مانند کلیک کاربر) نیاز دارد. برای جلوگیری از NotAllowedError، باید تماس ایجاد را داخل شنونده رویداد قرار دهید، نه اینکه آن را بدون قیدوشرط در بارگیری صفحه فراخوانی کنید.
const options = {
type: 'key-points',
format: 'plain-text',
length: 'medium'
};
const availability = await Summarizer.availability(options);
if (availability === 'available') {
const summarizer = await Summarizer.create(options);
// Ready to use immediately
} else if (availability === 'downloadable') {
// A user gesture is strictly required to start the download
document.getElementById('start-download-btn').addEventListener('click', async () => {
const summarizer = await Summarizer.create({
...options,
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${Math.round((e.loaded / e.total) * 100)}%`);
});
},
});
});
}
پیکربندی و عملکردهای میانای برنامهسازی کاربردی
هنگام ایجاد خلاصهساز ازطریق Summarizer.create(options)، میتوانید
خروجی را سفارشیسازی کنید:
| پارامتر | گزینهها | شرح |
|---|---|---|
type |
key-points، tldr، teaser، headline |
استراتژی خلاصه را تعریف میکند. |
format |
markdown، plain-text |
سبک نحو برونداد. |
length |
short، medium، long |
طول هدف (مثلاً ۱ درمقابل ۵ جمله). |
preference |
auto، speed، capability |
تأخیر و کیفیت را متعادل میکند. |
پیکربندی نمونه
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
if (navigator.userActivation.isActive) {
const summarizer = await Summarizer.create(options);
}
پشتیبانی زبان
میتوانید زبانهای موردانتظار را مشخص کنید تا مطمئن شوید مرورگر میتواند درخواست خلاصه خاص را مدیریت کند.
const summarizer = await Summarizer.create({
type: 'key-points',
expectedInputLanguages: ['en', 'ja'],
outputLanguage: 'es',
});
روشهای خلاصهسازی
۱. خلاصهسازی دستهای
کل نوشتار را بهطور همزمان پردازش میکند و نتیجه را برمیگرداند.
const longText = document.querySelector('article').innerText;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
console.log(summary);
۲. خلاصهسازی جاریسازی
نتایج را بهطور همزمان با تولید آنها توسط مدل برمیگرداند و واسط کاربری پاسخگوتر ارائه میدهد.
const stream = summarizer.summarizeStreaming(longText);
for await (const chunk of stream) {
console.log(chunk);
}
امنیت و اجازهها
- حریم خصوصی دادهها: هیچ دادهای به Google ارسال نمیشود؛ پردازش در دستگاه محلی انجام میشود.
میانمبدئی: دسترسی را میتوان بااستفاده از «خطمشی اجازه» به iframeها اعطا کرد.
<iframe src="https://example.com/" allow="summarizer"></iframe>Web Workers: درحالحاضر پشتیبانی نمیشود.
راهبرد جایگزین
قبلاز مقداردهی اولیه یا پرسوجو درباره دردسترس بودن، بررسی کنید که آیا مرورگر از Summarizer API پشتیبانی میکند یا نه:
if ('Summarizer' in self) {
// The Summarizer API is supported.
} else {
// Execute fallback strategy
}
اگر میانای برنامهسازی کاربردی Summarizer پشتیبانی نمیشود یا بررسیهای دردسترس بودن 'unavailable' را برمیگرداند، باید بهطور مناسب به حالت قبلی برگردید.
گزینههای توصیهشده:
- جایگزین میانای برنامهسازی کاربردی ازراهدور: درخواست خلاصه کردن را به نقطه پایانی سرور یا میانای برنامهسازی کاربردی ازراهدور (مثل Vertex AI Gemini API) هدایت کنید تا کاربران همچنان خلاصه دریافت کنند.
- تنزل متین: کنترلهای خلاصهسازی را در میانای کاربر بهصورت دیداری غیرفعال کنید یا دکمه را پنهان کنید و درعینحال پیام دوستانهای (مثلاً
"Local summarization is currently unsupported in this browser") نمایش دهید. اجازه ندهید تعامل باعث راهاندازی استثناهای زمان اجرای مدیریتنشده عمومی شود. - Polyfill Fallback: میتوانید از polyfillهای نگهداریشده توسط انجمن مانند
built-in-ai-task-apis-polyfillsیاprompt-api-polyfillبرای شبیهسازی سطح API بااستفاده از سرویسهای راه دور با مدلهای موجود در ابر یا استنتاج دروندستگاهی با مدلهای محلی استفاده کنید.
پیامدهای حریم خصوصی و هزینه: این شبیهسازهای مرورگر احتمالاً درخواستها را به سرورهای راه دور (مانند Gemini API در فضای ابری) پروکسی میکنند. این کار تضمینهای حریم خصوصی دروندستگاهی Built-in AI APIs بومی را کاملاً باطل میکند و هزینههای استفاده از میانای برنامهسازی کاربردی سمت سرور را بههمراه خواهد داشت.