خلاصه سازی در کروم با هوش مصنوعی داخلی

تاریخ انتشار: 11 نوامبر 2024

تصور کنید می‌توانید به کاربران خود این توانایی را بدهید که مقالات طولانی، اسناد پیچیده یا حتی گفتگوهای چت پر جنب و جوش را به خلاصه‌های مختصر و روشن‌تر تقسیم کنند.

Summarizer API را می توان برای تولید انواع مختلف خلاصه ها در طول ها و قالب های مختلف، مانند جملات، پاراگراف ها، لیست های نقطه گلوله و موارد دیگر استفاده کرد. ما معتقدیم که این API در سناریوهای زیر مفید است:

  • خلاصه کردن نکات کلیدی یک مقاله یا یک گفتگوی چت.
  • پیشنهاد عناوین و عناوین مقالات.
  • ایجاد خلاصه ای مختصر و آموزنده از یک متن طولانی.
  • تولید تیزر برای یک کتاب بر اساس نقد کتاب.

در دسترس بودن

برای آزمایش اولیه ثبت نام کنید

برای شروع استفاده از Summarizer API، مراحل زیر را دنبال کنید:

  1. خط‌مشی استفاده‌های ممنوعه هوش مصنوعی Google را بپذیرید.
  2. به نسخه آزمایشی اولیه Summarizer API بروید.
  3. روی ثبت نام کلیک کنید و فرم را پر کنید.
    • در فیلد مبدا وب ، شناسه مبدا یا افزونه خود، chrome-extension://YOUR_EXTENSION_ID ارائه دهید.
  4. برای ارسال، روی ثبت کلیک کنید.
  5. رمز ارائه شده را کپی کنید و آن را به هر صفحه وب در مبدا یا فایل افزونه خود اضافه کنید، که می خواهید آزمایشی روی آن فعال شود.
  6. استفاده از Summarizer API را شروع کنید.

درباره نحوه شروع آزمایشات مبدأ بیشتر بیاموزید.

محدودیت ها در طول آزمایش مبدا

در طول آزمایش اولیه، Summarizer API فقط از خلاصه کردن متون انگلیسی پشتیبانی می‌کند، زیرا کیفیت مدل فقط روی محتوای انگلیسی کاملاً آزمایش شده است. زمانی که زبان‌های دیگر را از نظر کیفیت و ایمنی آزمایش کردیم و API به طور گسترده در دسترس قرار گرفت، قصد داریم این محدودیت را برطرف کنیم.

پشتیبانی را به لوکال هاست اضافه کنید

برای دسترسی به Summarizer API در localhost در طول دوره آزمایشی اصلی، باید Chrome Canary را داشته باشید. سپس، این مراحل را دنبال کنید:

  1. Chrome Canary را در یکی از این پلتفرم‌ها باز کنید: Windows، Mac، یا Linux.
  2. به chrome://flags/#summarization-api-for-gemini-nano بروید.
  3. Enabled را انتخاب کنید.
  4. روی راه اندازی مجدد یا راه اندازی مجدد کروم کلیک کنید.

از Summarizer API استفاده کنید

ابتدا تشخیص ویژگی را اجرا کنید تا ببینید آیا مرورگر از Summarizer API پشتیبانی می کند یا خیر.

if ('ai' in self && 'summarizer' in self.ai) {
  // The Summarizer API is supported.
}

دانلود مدل

Summarizer API از یک مدل هوش مصنوعی قدرتمند استفاده می کند که برای تولید خلاصه های با کیفیت بالا آموزش دیده است. در حالی که API در Chrome تعبیه شده است، اولین باری که یک وب سایت از API استفاده می کند، مدل به طور جداگانه دانلود می شود.

برای تعیین اینکه آیا مدل آماده استفاده است یا خیر، تابع asynchronous ai.summarizer.capabilities() را فراخوانی کنید. یک شی AISummarizerCapabilities با یک فیلد available برمی‌گرداند که می‌تواند سه مقدار ممکن را بگیرد:

  • no : مرورگر فعلی از Summarizer API پشتیبانی می کند، اما در حال حاضر نمی توان از آن استفاده کرد. این ممکن است به دلایلی باشد، مانند فضای کافی در دسترس برای دانلود مدل.
  • readily : مرورگر فعلی از Summarizer API پشتیبانی می کند و می توان بلافاصله از آن استفاده کرد.
  • after-download : مرورگر فعلی از Summarizer API پشتیبانی می کند، اما ابتدا باید مدل را دانلود کند.

برای شروع دانلود مدل و ایجاد خلاصه‌کننده، تابع asynchronous ai.summarizer.create() را فراخوانی کنید. اگر پاسخ به capabilities() after-download بود، بهترین تمرین گوش دادن به پیشرفت دانلود است. به این ترتیب در صورتی که دانلود زمان بر باشد می توانید به کاربر اطلاع دهید.

const summarizer = await ai.summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
    });
  }
});

توابع API

تابع create() به شما امکان می دهد یک شی خلاصه کننده جدید را برای نیازهای خود پیکربندی کنید. یک شی options اختیاری با پارامترهای زیر می گیرد:

  • sharedContext : زمینه مشترک اضافی که می تواند به خلاصه کننده کمک کند.
  • type : نوع خلاصه‌سازی، با مقادیر مجاز، key-points (پیش‌فرض)، tl;dr ، teaser و headline .
  • format : قالب خلاصه، با مقادیر مجاز markdown (پیش فرض)، و plain-text .
  • length : طول خلاصه، با مقادیر مجاز short , medium (پیش فرض) و long . معانی این طول ها بسته به type درخواستی متفاوت است. به عنوان مثال، در پیاده‌سازی کروم، خلاصه‌ای از نکات کلیدی کوتاه از سه نقطه تشکیل شده است و یک خلاصه کوتاه یک جمله است. خلاصه طولانی نکات کلیدی هفت نقطه است و خلاصه طولانی یک پاراگراف است.

مثال زیر نحوه اولیه سازی خلاصه کننده را نشان می دهد.

const options = {
  sharedContext: 'This is a scientific article',
  type: 'key-points',
  format: 'markdown',
  length: 'medium',
};

const available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
  // The Summarizer API isn't usable.
  return;
}
if (available === 'readily') {
  // The Summarizer API can be used immediately .
  summarizer = await self.ai.summarizer.create(options);
} else {
  // The Summarizer API can be used after the model is downloaded.
  summarizer = await self.ai.summarizer.create(options);
  summarizer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
  await summarizer.ready;
}

خلاصه کننده را اجرا کنید

دو راه برای اجرای خلاصه کننده وجود دارد: پخش جریانی و غیر جریانی.

خلاصه سازی بدون جریان

با خلاصه سازی بدون جریان، مدل ورودی را به عنوان یک کل پردازش می کند و سپس خروجی را تولید می کند.

برای به دست آوردن یک خلاصه غیر جریانی، تابع summarize() ناهمزمان summarizer را فراخوانی کنید. اولین آرگومان برای تابع متنی است که می خواهید خلاصه کنید. آرگومان دوم، اختیاری، یک شی با یک فیلد context است. این قسمت به شما امکان می دهد جزئیات پس زمینه را اضافه کنید که ممکن است خلاصه سازی را بهبود بخشد.

const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});

خلاصه سازی جریانی

خلاصه سازی جریانی نتایج را در زمان واقعی ارائه می دهد. با اضافه شدن و تنظیم ورودی، خروجی به طور مداوم به روز می شود.

برای دریافت خلاصه جریان، تابع summarizeStreaming() summarizer را فراخوانی کنید. سپس روی بخش‌های موجود از متن در جریان تکرار کنید.

let result = '';
let previousChunk = '';
for await (const chunk of stream) {
  const newChunk = chunk.startsWith(previousChunk)
      ? chunk.slice(previousChunk.length) : chunk;
  console.log(newChunk);
  result += newChunk;
  previousChunk = chunk;
}
console.log(result);

summarizeStreaming() ReadableStream برمی گرداند که در آن بخش های پاسخ به طور متوالی بر روی یکدیگر ساخته می شوند. این بدان معناست که هر پاسخ شامل کل خلاصه تولید شده تا آن نقطه است، نه فقط بخش بعدی، که رفتار مورد نظر نیست.

ما قصد داریم با دیگر APIهای جریانی روی پلتفرم هماهنگ شویم، جایی که بخش‌ها قطعات متوالی یک جریان طولانی هستند. در حال حاضر، برای دستیابی به رفتار مورد نظر، می توانید موارد زیر را اجرا کنید:

let result = '';
let previousLength = 0;
for await (const segment of stream) {
  const newContent = segment.slice(previousLength);
  console.log(newContent);
  previousLength = segment.length;  
  result += newContent;
}
console.log(result);

نسخه ی نمایشی

می‌توانید Summarizer API را در Summarizer API Playground امتحان کنید.

تلاش برای استانداردسازی

ما در حال کار برای استانداردسازی Summarizer API هستیم تا از سازگاری بین مرورگرها اطمینان حاصل کنیم.

پیشنهاد API ما پشتیبانی جامعه را دریافت کرد و برای بحث بیشتر به گروه انجمن انکوباتور وب W3C منتقل شد. تیم Chrome بازخوردی را از گروه معماری فنی W3C درخواست کرد و از موزیلا و WebKit برای موقعیت‌های استانداردشان درخواست کرد.

شرکت کنید و بازخورد خود را به اشتراک بگذارید

اکنون با پیوستن به نسخه آزمایشی اولیه، آزمایش Summarizer API را شروع کنید و بازخورد خود را به اشتراک بگذارید. ورودی شما می‌تواند مستقیماً بر نحوه ساخت و اجرای نسخه‌های آینده این API و همه APIهای AI داخلی تأثیر بگذارد.