সারসংক্ষেপকারী

ওয়েব ফিচার: সারসংক্ষেপকারী

Summarizer API ওয়েব ডেভেলপারদের Chrome-এ Gemini Nano অথবা Edge-এ Phi ব্যবহার করে সরাসরি ব্রাউজারের মধ্যে লোকাল, AI-পরিচালিত টেক্সট ডিস্টিলেশন অফার করার সুবিধা দেয়। এই API বিভিন্ন ফর্ম্যাট সাপোর্ট করে, যার মধ্যে রয়েছে মূল পয়েন্ট, হেডলাইন ও TL;DRs। এটি সম্পূর্ণভাবে অন-ডিভাইস কাজ করে যাতে ব্যবহারকারীর গোপনীয়তা সুরক্ষিত থাকে।


শুরু করা

Summarizer API Chrome ও Edge 138 থেকে উপলভ্য। এর জন্য Gemini Nano বা Phi (যথাক্রমে) মডেল একবার ডাউনলোড করতে হবে।

হার্ডওয়্যার ও সফ্টওয়্যার সংক্রান্ত প্রয়োজনীয়তা

  • OS: Windows 10/11, macOS 13+, Linux বা ChromeOS (Chromebook Plus)।
  • স্টোরেজ: প্রোফাইল ভলিউমের জন্য ২২ জিবি খালি জায়গা।
  • RAM/CPU: ১৬ জিবি+ RAM এবং ৪+ CPU কোর।
  • VRAM: ৪ জিবি+ (GPU ব্যবহার করলে)।

মডেল ডাউনলোড ও উপলভ্যতা

মডেলটি রেডি আছে কিনা, ডাউনলোড করতে হবে কিনা বা উপলভ্য আছে কিনা তা চেক করুন।

বাধ্যতামূলক বিকল্প পাস করা: আপনাকে অবশ্যই Summarizer.availability(options) এবং Summarizer.create(options), দুটিতেই অভিন্ন কনফিগারেশন বিকল্প অবজেক্ট পাস করতে হবে। বন্ধ করে দেওয়া window.ai.summarizer API সারফেস ব্যবহার করবেন না।

প্রোগ্রেস মনিটর করা বাধ্যতামূলক: আপনাকে অবশ্যই Summarizer.create()-এ monitor(m) কলব্যাক প্রদান করে এবং 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)}%`);
        });
      },
    });
  });
}

API ফাংশন ও কনফিগারেশন

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);

২. স্ট্রিম সামারাইজেশন

মডেল জেনারেট করার সাথে সাথে রিয়েল-টাইমে ফলাফল দেখায়, যা আরও বেশি রেসপন্সিভ UI প্রদান করে।

const stream = summarizer.summarizeStreaming(longText);
for await (const chunk of stream) {
  console.log(chunk);
}

নিরাপত্তা ও অনুমতি

  • ডেটার গোপনীয়তা: Google-এ কোনও ডেটা পাঠানো হয় না; লোকাল ডিভাইসে প্রসেসিং করা হয়।
  • ক্রস-অরিজিন: অনুমতি সংক্রান্ত নীতি ব্যবহার করে iframe-এ অ্যাক্সেস মঞ্জুর করা যেতে পারে।

    <iframe src="https://example.com/" allow="summarizer"></iframe>
    
  • ওয়েব ওয়ার্কার: বর্তমানে কাজ করে না।

ফলব্যাক স্ট্র্যাটেজি

উপলভ্যতা শুরু বা কোয়েরি করার আগে, ব্রাউজার Summarizer API সাপোর্ট করে কিনা তা চেক করুন:

if ('Summarizer' in self) {
  // The Summarizer API is supported.
} else {
  // Execute fallback strategy
}

Summarizer API কাজ না করলে বা উপলভ্যতা চেক করার সময় 'unavailable' রিটার্ন করলে, আপনাকে অবশ্যই গ্রেসফুল ফলব্যাক করতে হবে।

সাজেস্ট করা বিকল্প:

  1. রিমোট API ফলব্যাক: ডিস্টিলেশন অনুরোধ কোনও সার্ভার এন্ডপয়েন্ট বা রিমোট API-তে (যেমন, Vertex AI Gemini API) পাঠান যাতে ব্যবহারকারীরা সারসংক্ষেপ পেতে পারেন।
  2. গ্রেসফুল ডিগ্রেডেশন: UI-তে সারসংক্ষেপের কন্ট্রোল ভিজ্যুয়ালি বন্ধ করুন অথবা বন্ধুত্বপূর্ণ মেসেজ (যেমন, "Local summarization is currently unsupported in this browser") দেখানোর সময় বোতামটি লুকান। ইন্টার‍্যাকশনকে জেনেরিক আনহ্যান্ডেলড রানটাইম এক্সেপশন ট্রিগার করতে দেবেন না।
  3. Polyfill Fallback: ক্লাউডে মডেল সহ রিমোট পরিষেবা বা লোকাল মডেল সহ অন-ডিভাইস ইনফারেন্স ব্যবহার করে API সারফেস এমুলেট করতে, আপনি built-in-ai-task-apis-polyfills বা prompt-api-polyfill-এর মতো কমিউনিটি-পরিচালিত পলিফিল ব্যবহার করতে পারেন।

গোপনীয়তা ও খরচ সংক্রান্ত প্রভাব: এইসব পলিফিল সম্ভবত রিমোট সার্ভারে (যেমন ক্লাউডে Gemini API) প্রক্সি অনুরোধ পাঠায়। এটি নেটিভ বিল্ট-ইন AI API-এর অন-ডিভাইস গোপনীয়তার গ্যারান্টিকে সম্পূর্ণভাবে বাতিল করে দেয় এবং এর ফলে সার্ভার-সাইড API ব্যবহারের খরচ হবে।