Summarizer API עוזר ל-Bright Sites ול-Terra ליצור סיכומים מעניינים של מאמרים

Mari Viana
Mari Viana

תאריך פרסום: 15 במאי 2025

הציבור מסתמך על בעלי אתרי החדשות כדי לקבל מידע על אירועים מקומיים, לאומיים ובינלאומיים, וגם כדי לקבל את נקודות המבט המפורטות שלהם. בסביבה המהירה של היום, סיכומי מאמרים הם אסטרטגיה מרכזית לצמצום מידע מורכב לקטעים נגישים, שמעודדים את הקוראים להמשיך לקרוא. איך Bright Sites ו-Terra משתמשים ב-Summarizer API כדי ליישם את האסטרטגיה הזו

הסברפיתוח אתריםתוספים סטטוס Chromeכוונת רכישה
MDN מאחורי דגל גרסת הבטא של Chrome 138 מאחורי דגל גרסת הבטא של Chrome 138 תצוגה כוונת משלוח

באמצעות Summarizer API אפשר ליצור סוגים שונים של סיכומים באורכים ובפורמטים שונים, כמו משפטים, פסקאות, רשימות של נקודות ועוד. ממשק ה-API הזה, כמו רבים מממשקי ה-API המובנים של AI, משתמש במודלים גדולים של שפה (LLM) כדי לבצע הסקה. ב-Chrome, המודל שלנו הוא Gemini Nano.

Bright Sites מוסיפה סיכומי מאמרים מותאמים אישית לאתר The Standard

פלטפורמת Flow של Bright Sites היא פלטפורמת החדשות המובילת לפרסום, שמשמשת יותר מ-150 כלי חדשות. באמצעות השילוב של Summarizer API במערכת ניהול התוכן מבוססת-ה-AI שלה, Bright Sites מאפשרת ל-The Standard, מותג החדשות האיקוני של לונדון, להציע לקוראים שלה סיכומים מותאמים אישית של מאמרים. כך המשתמשים מוזמנים להיכנס למאמרים ולעבור למאמרים אחרים ב-The Standard.

"העבודה עם המודלים המתקדמים של Gemini ב-Chrome משלבת את 198 שנות ההיסטוריה של The Standard, שבמהלכן הקוראים שלנו תמיד מקבלים את המידע העדכני ביותר, עם חידושים טכנולוגיים חדשים לקהל העמוס שלנו, שחשוב לו שהעיתונות המהימנה שלנו תהיה בהישג יד. האפשרות לאפשר לקוראים לבדוק את החדשות במהירות באמצעות סיכומים שנוצרו במכשירים שלהם היא רק אחת מהדרכים שבהן אנחנו מחדשים את The Standard ויוצרים מוצרים חדשים שמתמקדים בקוראים ומתבססים על ההרגלים הדיגיטליים שלהם".

ג'ק ריילי (Jack Riley), מנהל דיגיטל ראשי, The Standard

האפשרות להציע סיכומים מבוססי-AI בצד הלקוח אפשרה ל-The Standard ליצור סיכומים מותאמים אישית בלי להגדיל את העלויות העסקיות. כך, בצד הלקוח, באמצעות נקודות נתונים כמו סגנון הסיכום או המיקום, המשתמשים יוכלו להמשיך לקרוא גם אם הם מאבדים את הגישה לאינטרנט. זה קורה לעיתים קרובות למשתמשים רבים שמשתמשים במחשב הנייד בזמן הנסיעה ברכבת התחתית של לונדון.

קודם כול, הם בודקים את התמיכה והזמינות של המודל ושל ה-API.

// 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. To view this summary, you must" +
      "download a language model, which is approximately 3GB in size." +
      "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('clientSideAI') && options?.clientSideAI) {
   // Generate the summarizer and abort signal
   const summarizer = await createclientSideAISummarizer(options.clientSideAI.options)
   return await summarizer.summarize(textToSummarize, {
     signal: options.clientSideAI.signal,
   })
 }
 throw new Error(
   'AI summarization tools are not supported on this device or browser.',
 )
}

בגרסה הרגילה, המערכת שומרת את העדפת הסיכום של הקוראים ב-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) שלה, כדי לעזור לעיתונאים לסכם מיד כתבות חדשותיות בפורטוגזית. לאחר מכן, העיתונאים יכולים לבצע כמה עריכות מטעמי סגנון או דיוק ולפרסם את הסיכום שנוצר בשיתוף פעולה, כך שהוא יהיה זמין לכל הקוראים.

מערכת ניהול התוכן של Terra כבר משתמשת ב-LLM בצד השרת, אבל הצוות בחן את האפשרות של AI בצד הלקוח כגישה נפרדת עם יתרונות חדשים פוטנציאליים. הם גילו שSummarizer API ו-Gemini Nano ב-Chrome מספקים איכות דומה להטמעה שלהם בצד השרת. הפתרון בצד הלקוח הניב תוצאות חיוביות כשנעשה בו שימוש בשילוב עם Translator API.

ב-Terra החליטו להשתמש בהטמעה של AI מובנה ב-Chrome בגלל היתרונות העיקריים הבאים: AI מצד הלקוח מציע חיסכון בעלויות וניהול פשוט יותר של נתונים. הצוות נתקל בכמה אתגרים, במיוחד בנושא ניהול המגבלות של חלון התוכן באמצעות Summarizer API, אבל הצליח להתגבר עליהם באמצעות שיטות הטמעה זהירות.

בהתחלה, ב-Terra נתקלו בקשיים בזיהוי סוגי הסיכומים וההקשר המשותף שהכי מתאימים לצרכים שלהם. לאחר ניסויים, הם גילו שסיכומים ברורים ומועילים באנגלית חיוניים ליצירת פלט באיכות דומה בפורטוגזית באמצעות Translator API. המגרש המובנה ל-AI עזר להם להתמודד עם האתגרים האלה, כי הם יכלו לבדוק במהירות את הרעיונות שלהם בלי לבצע כל פעם רפאקציה של הקוד.

בדוגמה הבאה מוסבר איך 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 השתמשה ב-Summarizer בשילוב עם 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')

השילוב המוצלח של ממשקי API מובנים ל-AI ב-Terra ממחיש את הפוטנציאל המשמעותי של AI בצד הלקוח לשיפור תהליכי העבודה לניהול תוכן. בעזרת ממשקי ה-API של Summarizer ו-Translator, צוות הכתבים של Terra יכול לעבוד בצורה יעילה יותר, והחברה יכולה לספק חוויית משתמש משופרת בפלטפורמות שונות.

שיטות מומלצות

אם הקלט של הביקורת חורג ממגבלת האסימונים, יש לפעול לפי הפתרונות הבאים:

  • להשתמש במדגם קטן יותר (למשל, 4 הביקורות האחרונות) ב-API. כך תוכלו לקבל תוצאות מהר יותר. כדאי לעיין בהנחיות שלנו בנושא שינוי קנה המידה של סיכום בצד הלקוח.
  • השדה QuotaExceededError מספק מידע נוסף על האסימונים המבוקשים בקלט. לאובייקט summarizer יש מאפיין inputQuota שמציין את מגבלת האסימונים של ה-API. כך אפשר לקבל משוב בזמן אמת ולהשבית את הפונקציונליות אם הקלט חורג מהמגבלה.

מומלץ לשקול גישה משולבת כדי להבטיח חוויה חלקה לכל המשתמשים. בפעם הראשונה שמפעילים ממשק API מובנה של AI, הדפדפן צריך להוריד את המודל.

  • ב-Miravia השתמשו במודל בצד השרת כדי לספק סיכום ראשוני בזמן ההורדה של המודל. אחרי שהמודל המובנה היה מוכן, האתר עבר לביצוע היסק מצד הלקוח.

תמיד כדאי לשאוף ליצור ממשק ידידותי ומקצועי:

  • הטמעת סרגל התקדמות להורדות של מודלים כדי לצמצם את עיכובי התשובות.
  • כדאי להציג שקיפות לגבי הורדת המודל. Bright Sites הודיעה למשתמשים על הורדת המודל כדי לשמור על שקיפות ולקבל הסכמה לשימוש במשאבים. כך המשתמשים יוכלו לאשר או לדחות את הבקשה לפני שהם ממשיכים.

מסקנות והמלצות

הדוגמאות של Bright Sites ו-Terra מדגימות את הערך של Summarizer API בשיפור הנגישות של התוכן והמעורבות של הקוראים. בעזרת ה-API הזה מצד הלקוח, הפלטפורמות האלה שיפרו את חוויית הקריאה וההתאמה האישית, בלי עלות עסקית נוספת ובאמצעות ניהול נתונים פשוט יותר. בדומה ל-Summarizer API, כל ממשקי ה-AI API המובנים מאפשרים להשתמש ב-AI שימושי בצד הלקוח.

רוצים לדעת איך Summarizer API יכול לעזור בתרחישי שימוש אחרים? שיתפנו גם איך Summarizer API עוזר ל-redBus ול-Miravia ליצור סיכומים מועילים של ביקורות של משתמשים.

אתם מפתחים משהו חדש באמצעות ממשקי ה-API האלה? אתם יכולים לשתף אותם איתנו ב-‎@ChromiumDev on X או ב-Chromium for Developers on LinkedIn.

משאבים

תודות

תודה ל-Guilherme Moser ול-Fernando Fischer מ-Terra, ל-Aline Souza מ-CWI, ל-Brian Alford, ל-Keval Patel, ל-Jack Riley ולצוות המהנדסים של Brightsites, Swetha Gopalakrishnan,‏ Alexandra Klepper,‏ Thomas Steiner ו-Kenji Baheux, שעזרו לכתוב ולבדוק את המסמך הזה.