تساعد واجهة برمجة التطبيقات Summarizer API في إنشاء ملخّصات مقالات جذابة من خلال Bright Sites وTerra

Mari Viana
Mari Viana

تاريخ النشر: 15 مايو 2025

يعتمد الجمهور على جهات النشر الإخبارية لإعلامه بالأحداث المحلية والوطنية والدولية، بالإضافة إلى مشاركة وجهات نظرها المدروسة. في بيئة اليوم السريعة، تُعدّ ملخّصات المقالات استراتيجية أساسية لتكثيف المعلومات المعقّدة في مقتطفات يسهل الوصول إليها، ما يشجّع القرّاء على استكشاف المزيد. تعرَّف على الطريقة التي تتّبعها Bright Sites وTerra في هذه الاستراتيجية باستخدام Summarizer API.

شرح مفصّلالويبالإضافات حالة Chromeالنيّة بالشراء
MDN Chrome 138 Chrome 138 العرض النيّة بالشحن

تتيح لك Summarizer API إنشاء أنواع مختلفة من الملخّصات بأطوال وتنسيقات متنوّعة، مثل الجمل والفقرات والقوائم النقطية والمزيد. تستخدم واجهة برمجة التطبيقات هذه، مثل العديد من واجهات برمجة تطبيقات الذكاء الاصطناعي المضمّنة، نماذج لغوية كبيرة لإجراء الاستنتاج.

تضيف Bright Sites ملخّصات مقالات مخصّصة إلى The Standard

تستخدِم منصة Flow الرائدة لنشر الأخبار من Bright Sites أكثر من 150 منشورًا. من خلال دمج Summarizer API في نظام إدارة المحتوى (CMS) المستنِد إلى الذكاء الاصطناعي، تتيح Bright Sites لـ The Standard، وهي علامة تجارية إخبارية بارزة في لندن، تقديم ملخّصات مخصّصة للمقالات لقرّائها. يشجّع ذلك المستخدمين على التفاعل مع المقالات وإعادة توجيههم إلى مقالات أخرى على The Standard.

"إنّ العمل مع أحدث نماذج Gemini في Chrome يجمع بين إرث The Standard الذي يمتدّ على 198 عامًا في إبقاء القرّاء على اطّلاع على آخر الأخبار والابتكارات التقنية الجديدة لجمهورنا المشغول الذي يقدّر الحصول على صحافتنا الموثوقة في متناول يده. إنّ السماح للقرّاء بالاطّلاع بسرعة على الأخبار باستخدام الملخّصات التي يتم إنشاؤها على أجهزتهم الخاصة هو مجرّد طريقة واحدة من الطرق التي نعيد بها تصوّر The Standard وننشئ منتجات جديدة تركّز على القرّاء استنادًا إلى عاداتهم الرقمية".

‫— جاك رايلي، رئيس القسم الرقمي في The Standard

إنّ تقديم ميزة تلخيص المحتوى باستخدام الذكاء الاصطناعي من جهة العميل مكّن The Standard من إنشاء ملخّصات مخصّصة بدون تكبّد تكاليف إضافية للنشاط التجاري. إنّ تنفيذ ذلك من جهة العميل، باستخدام نقاط بيانات مثل نمط الملخّص أو الموقع الجغرافي، سيسمح للمستخدمين بمواصلة القراءة حتى في حال فقدانهم الاتصال بالإنترنت. يحدث ذلك بشكل متكرّر للعديد من المستخدمين الذين يسافرون على مترو أنفاق لندن باستخدام أجهزة الكمبيوتر المحمولة.

أولاً، يتحقّقون من مدى توفّر النموذج وواجهة برمجة التطبيقات وما إذا كانا متوافقَين.

// Check if the device supports built-in AI
// Trigger the model download if not yet available, on capable devices
export const deviceCheck = async () => {
  const availability = await Summarizer.availability();
  if (!availability || availability === 'unavailable') {
    return {
      summarizationAvailable: false,
      message:
        "AI summarization tools are not supported on this device" +
        "or the appropriate permissions are not set.",
    }
  }
  if (availability === 'downloadable') {
    const shouldDownload = window.confirm(
      `This page contains an AI summary, using an AI model provided by your
      browser. Downloading the model, which could be multiple gigabytes in size,
      is required to view the summary. Would you like to download the model?`);

    if (!shouldDownload) {
      return {
        summarizationAvailable: false,
        message: "User declined installation.",
      }
    }

    // Trigger an installation
    Summarizer.create();
    return {
      summarizationAvailable: false,
      message: "Installing in the background. This may take a few minutes...",
    }
  }

  if (availability === 'available') {
    return {
      summarizationAvailable: true,
      message: "Ready for use.",
    }
  }
}

تحدّد الدالة التالية أداة تلخيص عامة يمكنها في المستقبل استخدام نموذج آخر على الجهاز أو نموذج من جهة الخادم.

/**
* Define the summarizer.
**/
export const aiSummarize = async (textToSummarize, options) => {
  const availableSummarizationTools = getAvailableAiSummarizationTools()

  if (availableSummarizationTools.has('builtInAi') && options?.builtInAI) {
    // Generate the built-in AI summarizer and abort signal
    const summarizer = await createBuiltInAISummarizer(options.builtInAi.options)
    return await summarizer.summarize(textToSummarize, {
      signal: options.builtInAi.signal,
    })
  }
  throw new Error(
    'AI summarization tools are not supported on this device or browser.',
  )
}

يخزّن The Standard إعدادات الملخّص المفضّلة لدى القرّاء في IndexedDB لتقديم ملخّص مخصّص.

/**
* Log preferences in IndexDB for personalization
**/
abortController.current = new AbortController()
const preferencesDB = new PreferencesDB()
const summarization = await aiSummarize(articleContent, {
 clientSideAI: {
   options: await preferencesDB.getCreatesummarizerPreferences(),
   signal: abortController.current.signal,
 },
})

توفّر Terra للصحافيين ملخّصًا قابلاً للتعديل للمقالات باللغة البرتغالية

Terra هي إحدى أكبر البوابات الإلكترونية للمحتوى في البرازيل، وتقدّم محتوى ترفيهيًا وإخباريًا ورياضيًا لأكثر من 50 مليون زائر فريد شهريًا. أضافت Terra واجهتَي برمجة التطبيقات Summarizer API وTranslator API إلى نظام إدارة المحتوى (CMS) لمساعدة الصحافيين في تلخيص الأخبار على الفور باللغة البرتغالية. يمكن للصحافيين بعد ذلك إجراء بعض التعديلات لأغراض أسلوبية أو لضمان الدقة ونشر الملخّص الذي تم إنشاؤه بشكل تعاوني، ما يجعله متاحًا بسهولة لجميع القرّاء.

على الرغم من أنّ نظام إدارة المحتوى (CMS) من Terra يستخدم نموذجًا لغويًا كبيرًا من جهة الخادم، استكشف الفريق الذكاء الاصطناعي من جهة العميل كنهج مختلف مع مزايا جديدة محتملة. وجدوا أنّ Summarizer API في Chrome يقدّم جودة مماثلة لتنفيذهم من جهة الخادم. حقّق الحلّ من جهة العميل نتائج إيجابية عند استخدامه مع Translator API.

اعتمدت Terra تنفيذ Chrome لواجهات برمجة تطبيقات الذكاء الاصطناعي المضمّنة بسبب المزايا الرئيسية. قدّم الذكاء الاصطناعي من جهة العميل وفورات في التكاليف وحوكمة مبسطة للبيانات. على الرغم من أنّ الفريق واجه بعض التحديات، لا سيما في ما يتعلّق بإدارة قيود نافذة المحتوى باستخدام Summarizer API، تمكّنوا من التغلّب عليها من خلال ممارسات التنفيذ الدقيقة.

في البداية، واجهت Terra تحديات في تحديد ما هي أنواع الملخّصات والسياق المشترَك الأفضل لتلبية احتياجاتها. من خلال التجربة، اكتشفوا أنّ الملخّصات الواضحة والمفيدة باللغة الإنجليزية كانت ضرورية لإنتاج نتائج بجودة مماثلة باللغة البرتغالية باستخدام Translator API. كانت ساحة لعب الذكاء الاصطناعي المضمّنة مفيدة في التغلّب على هذه التحديات، إذ كان بإمكان Terra اختبار أفكارها بسرعة بدون إعادة تصميم الرمز في كل مرة.

يوضّح المثال التالي كيف تستدعي Terra واجهة برمجة التطبيقات Summarizer API وتنبّه المستخدمين عندما تكون غير متاحة.

async function summarizerByBuiltInAI(text) {
  if (!(Summarizer)) {
    //Alert users in Portuguese that "Summarizer API is not available"
    cms_alert(ALERT_TYPE_ERROR, "Summarizer API não está disponível.")
    return null
  }

  try {
    const availability = await Summarizer.availability();
    if (availability !== 'available') {
      cms_alert(ALERT_TYPE_ERROR, "Summarizer API não está disponível.")
      return null 
    }

    const summaryContext = "Avoid jargon, use correct grammar, focus on clarity," +
    "and ensure the user can grasp the articles purpose," +
    "without needing to open the original content.";

    const options = {
      sharedContext: summaryContext,
      type: 'teaser',
      format: 'plain-text',
      length: 'long',
    }

    if (availability === 'available') {
      const summarizer = await Summarizer.create(options);
      return await summarizer.summarize(text, {
        context: summaryContext
      })
    }
    // return the download of the Summarizer Model
    if(availability === 'downloadable'){
      return await Summarizer.create();
    }
  } catch (error) {
    //EN: "Error using the Summarizer API"
    cms_alert(ALERT_TYPE_ERROR, "Erro ao usar o Summarizer API.");
    console.error("Erro ao usar o Summarizer API:", error);
    return null
  }
}

بالإضافة إلى ذلك، استخدمت Terra أداة التلخيص مع Translator API لترجمة عنوان المقالة الأصلية باللغة البرتغالية وعنوانها الفرعي ونصها الأساسي إلى اللغة الإنجليزية. تتم معالجة هذه النسخة المترجَمة من خلال Summarizer API لإنشاء الملخّص، ثم تتم ترجمتها مرة أخرى إلى اللغة البرتغالية. يضمن ذلك حصول المستخدم على المحتوى الملخّص بلغة التطبيق.

async function translateTextByBuiltInAI(text, sourceLanguage, targetLanguage) {
  if (!('translation' in self && 'createTranslator' in self.translation)) {
    return null
  }

  try {
    const translator = await Translator.create({
      sourceLanguage,
      targetLanguage,
    })
    return await translator.translate(text)
  } catch (error) {
    throw error
  }
}
const text = `Title: ${contentTitle};\n\n Sub-title: ${contentSubtitle};\n\n Article content: ${plainText}.`;

const canTranslate = await Translator.availability({
  sourceLanguage: 'pt',
  targetLanguage: 'en',
})

if (canTranslate !== 'available') {
  if (canTranslate === 'downloadable') {
    try {
      await Translator.create({
        sourceLanguage: 'pt',
        targetLanguage: 'en',
      })
      //EN: "Language download completed successfully."
      cms_alert(ALERT_TYPE_OK, "Download do idioma concluído com sucesso.");
    } catch (downloadError) {
      //EN: "Error downloading the language required for translation."
      cms_alert(ALERT_TYPE_ERROR, "Erro ao realizar download do idioma necessário para tradução.");
      return
    }
  } else {
    //EN: "Translation is not available or not ready."
    cms_alert(ALERT_TYPE_ERROR, "A tradução não está disponível ou não está pronta.");
    return
  }
}

const translatedText = await translateTextByBuiltInAI(text, 'pt', 'en') 
const summarizedText = await summarizerByBuiltInAI(translatedText) 
const translatedBackText = await translateTextByBuiltInAI(summarizedText, 'en', 'pt')

يوضّح التكامل الناجح لواجهات برمجة تطبيقات الذكاء الاصطناعي المضمّنة من Terra الإمكانات الكبيرة للذكاء الاصطناعي من جهة العميل في تحسين مهام سير عمل إدارة المحتوى. باستخدام واجهتَي برمجة التطبيقات Summarizer API وTranslator API، مكّنت Terra صحافييها وحسّنت الكفاءة، وهي في وضع جيد لتقديم تجارب محسّنة للمستخدمين على جميع المنصات.

أفضل الممارسات

إذا كان إدخال المراجعة يتجاوز الحدّ الأقصى للرموز المميّزة، اتّبِع إجراءات التخفيف التالية:

  • استخدِم نموذجًا أصغر (مثل آخر 4 مراجعات) لواجهة برمجة التطبيقات. يساعد ذلك في إنشاء نتائج أسرع. راجِع إرشاداتنا بشأن توسيع نطاق التلخيص من جهة العميل.
  • تقدّم السمة QuotaExceededError مزيدًا من المعلومات عن الرموز المميّزة المطلوبة في الإدخال. يحتوي العنصر summarizer على السمة inputQuota التي تشير إلى الحدّ الأقصى للرموز المميّزة في واجهة برمجة التطبيقات. يسمح ذلك بتقديم ملاحظات في الوقت الفعلي وإيقاف الوظيفة إذا كان الإدخال يتجاوز الحدّ الأقصى.

ننصحك باتّباع نهج مختلط لضمان تجربة سلسة لجميع المستخدمين. في المرة الأولى التي يتم فيها استدعاء واجهة برمجة تطبيقات الذكاء الاصطناعي المضمّنة، يجب أن ينزّل المتصفّح النموذج.

  • استخدَمت Miravia نموذجًا من جهة الخادم لتقديم ملخّص أولي أثناء تنزيل النموذج. بعد أن أصبح النموذج المضمّن جاهزًا، انتقل الموقع الإلكتروني إلى إجراء الاستنتاج من جهة العميل.

يجب دائمًا السعي إلى إنشاء واجهة سهلة الاستخدام وتواصلية:

  • يمكنك إضافة شريط تقدّم لعمليات تنزيل النماذج وتقليل حالات التأخير في الاستجابة.
  • ننصحك بالشفافية بشأن تنزيل النموذج. أرسلت Bright Sites إشعارًا إلى المستخدمين بشأن تنزيل النموذج للسماح بالشفافية والموافقة على استخدام الموارد. بهذه الطريقة، يمكن للمستخدمين قبول الطلب أو رفضه قبل المتابعة.

الاستنتاجات والاقتراحات

توضّح أمثلة Bright Sites وTerra قيمة Summarizer API في تحسين إمكانية الوصول إلى المحتوى وتفاعل القرّاء. باستخدام واجهة برمجة التطبيقات هذه من جهة العميل، حسّنت هاتان المنصتان تجربة القراءة والتخصيص، بدون تكاليف إضافية للنشاط التجاري وبحَوكمة مبسطة للبيانات. تمامًا مثل Summarizer API، تتيح جميع واجهات برمجة تطبيقات الذكاء الاصطناعي المضمّنة استخدام الذكاء الاصطناعي العملي من جهة العميل.

هل تتساءل عن كيفية مساعدة Summarizer API في حالات استخدام أخرى؟ لقد شاركنا أيضًا كيف يساعد Summarizer API كلاً من redBus وMiravia في إنشاء ملخّصات مفيدة لمراجعات المستخدمين.

هل تعمل على إنشاء شيء جديد باستخدام واجهات برمجة التطبيقات هذه؟ يمكنك مشاركته معنا على @ChromiumDev على X أو Chromium for Developers على LinkedIn.

الموارد

الإقرارات

نشكر غيليرمي موزر و فرناندو فيشر من Terra و ألين سوزا من CWI و برايان ألفورد و كيفال باتيل و جاك رايلي وفريق الهندسة في Brightsites' و سويثا غوبالاكريشنان و ألكسندرا كليبر و توماس شتاينر و كينجي باهيو على المساعدة في كتابة هذا المستند و مراجعته.