Interfejs Summarizer API pomaga firmom redBus i Miravia tworzyć przydatne podsumowania opinii użytkowników

Cecilia Cong
Cecilia Cong
Hadyan Andika
Hadyan Andika

Data publikacji: 15 maja 2025 r.

Witryny z opiniami użytkowników, np. witryny e-commerce lub podróżnicze, często zawierają ogromną ilość informacji. Może to sprawić, że użytkownicy będą musieli poświęcić dużo czasu na zapoznanie się z wieloma opiniami, zanim zdecydują się na zakup. Podsumowania opinii mogą pomóc użytkownikom zrozumieć opinie i zaoszczędzić czas. Dowiedz się, jak redBus i Miravia używają interfejsu Summarizer API, aby ulepszyć proces podejmowania decyzji i zakupów.

Objaśnienie Sieć Rozszerzenia Stan Chrome Intencja
MDN  Chrome 138  Chrome 138 Wyświetl Intencja dostawy

Interfejs Summarizer API umożliwia generowanie różnych typów streszczeń o zróżnicowanej długości i formatach, np. zdań, akapitów, list wypunktowanych itp. Ten interfejs API, podobnie jak wiele naszych wbudowanych interfejsów API AI, korzysta z dużych modeli językowych do wykonywania wnioskowania. W Chrome używamy modelu Gemini Nano.

redBus pomaga klientom wybrać najlepszy autobus

redBus to największy przewoźnik autobusowy w Indiach, który obsługuje ponad 30 milionów klientów i oferuje usługi autobusowe w około 10 tys. miast i miasteczek w całym kraju. Na podstawie danych i opinii redBus doszedł do wniosku, że opinie użytkowników pomagają klientom w określaniu, która trasa i który autobus najlepiej odpowiada ich potrzebom. redBus otrzymuje dużą liczbę opinii, a każda z nich dotyczy konkretnego miejsca docelowego i odjazdu oraz czasu.

Aby pomóc klientom w ogólnym poznaniu informacji o określonych miastach lub trasach, firma używa interfejsu Summarizer API do prezentowania najważniejszych statystyk z odpowiednich opinii.

Klient szuka trasy z Bengaluru do Mangaluru. Podsumowanie analizuje dostępne opinie i tworzy przydatne podsumowanie, aby pomóc klientom znaleźć najlepszy autobus na ich podróż.

„Interfejs Summarizer API był w stanie tworzyć wysokiej jakości podsumowania na podstawie dużej liczby opinii i wariacji zapytań wyszukiwanych przez użytkowników. Ta funkcja po stronie klienta wyeliminowała złożoność techniczną i dodatkowe koszty biznesowe, które byłyby związane z alternatywą po stronie serwera. Jest to dla nas ważne, ponieważ ten przypadek użycia jest częścią ścieżki konwersji”.

– Amit Kumar, starszy menedżer ds. inżynierii, redBus

Szczegółowość opinii przechowywanych w systemie redBusa w połączeniu z ogromną liczbą możliwych permutacji w zapytaniach wyszukiwanych przez użytkowników (z uwzględnieniem takich zmiennych jak czasy odjazdu i przyjazdu, konkretny punkt wsiadania w mieście i różni operatorzy autobusów) sprawia, że trudno jest wyróżnić konkretne statystyki z opinii. Przy tak dużej ilości danych podsumowanie po stronie serwera dla każdego zapytania wyszukiwania byłoby bardzo kosztowne.

Aby wygenerować skuteczne podsumowania, redBus przekazuje interfejsowi Summarizer API następujący kontekst oprócz opinii klientów:

//Context to provide a useful summary
const promptContext =
  'Summarize the following reviews in 30 words or less.' +
  'Focus on key positives and negatives, such as comfort, maintenance,' +
  'pricing, and cleanliness. Reviews are separated by {end}.' +
  'Give the summary in just one paragraph.';

Podsumowania ułatwiają klientom podejmowanie decyzji bez dodatkowych kosztów i złożoności technicznej. Dodatkowo redBus może spersonalizować podsumowanie pod kątem preferencji podróży zalogowanych użytkowników, takich jak komfort siedzenia czy dostępność Wi-Fi. wnioskowanie po stronie klienta, co oznacza, że wyszukiwanie i podsumowanie pozostają prywatne dla użytkownika.

Oto krótki przykład kodu, który sprawdza dostępność Summarizera, podaje kontekst i pobiera opinie na podstawie zapytania użytkownika.

// The Summarizer API is available
if ('Summarizer' in self) {
  try {
    const available = await Summarizer.availability();
    let summarizer;
    if (available === 'unavailable') {
      return null;
    }
    if (available === 'available') {
      //model is already available, use immediately
      summarizer = await Summarizer.create();
    } else {
      //trigger model download and wait
      summarizer = await Summarizer.create();
    }

    // Context to provide a useful summary
    const promptContext =
      'Summarize the following reviews in 30 words or less.' +
      'Focus on key positives and negatives, such as comfort, maintenance,' +
      'pricing, and cleanliness. Reviews are separated by {end}.' +
      'Give the summary in just one paragraph.';

    // Retrieve the reviews to be summarized based on user's search query
    let reviews = getIndividualBusReviews();
    if (reviews) {
      const reviewSummary = await summarizer.summarize(reviews, {
        context: promptContext
      });
    }
  } catch (e) {
    console.error("SUMMARIZER_API_ERROR: ", e);
    return null
  }
}

W przypadku wyszukiwania Bangalore–Mangalore dane wyjściowe funkcji podsumowującej wyglądają tak:

<Bus Provider X> otrzymał ogólnie pozytywne opinie dotyczące wygody, czystości i obsługi. Niektórzy klienci mieli drobne problemy, takie jak opóźnienia, zachowanie kierowcy (nieuprzejmność), brak udogodnień (śledzenie na żywo, koce) i niedogodności (rozmiar siedzenia, słabe amortyzatory).

Ta opinia spełnia wymagania, ponieważ zawiera pozytywne i negatywne aspekty w jednym krótkim akapicie, który jest znacznie łatwiejszy do przeczytania niż 308 dostępnych indywidualnych opinii.

Podsumowanie opinii e-commerce z Miravia

Miravia to wiodąca platforma e-commerce w Hiszpanii, która ma miliony aktywnych użytkowników miesięcznie. Za każdym razem, gdy użytkownicy filtrują opinie (np. według oceny produktu), generowane jest nowe podsumowanie. Zawiera on krótkie omówienie opinii klientów, ze szczególnym uwzględnieniem ich obaw i rekomendacji.

Użytkownicy mogą generować podsumowania opinii o produktach dla różnych ocen.

„Wcześniej, aby poznać najważniejsze zalety i wady w opiniach o produktach, użytkownicy musieli przeczytać liczne komentarze na stronie z informacjami. Aby pomóc użytkownikom szybko poznać ogólne nastawienie klientów, wprowadziliśmy interfejs Summarizer API. To podsumowanie jest aktualizowane dynamicznie, gdy użytkownik filtruje opinie (np. według oceny w gwiazdkach lub innych kryteriów), co zapewnia szybki i pełny przegląd odpowiednich opinii kupujących”.

– Ziyi Liang, Senior Software Engineer, Miravia

Początkowo funkcja podsumowywania opinii użytkowników w Miravia polegała na użyciu usługi AI po stronie serwera. Okazało się, że Gemini Nano z AI po stronie klienta może przynosić porównywalne wyniki przy niższych kosztach utrzymania. Ta zaleta jest szczególnie widoczna w przypadku popularnych produktów, które szybko się sprzedają i których opinie są stale aktualizowane.

Chociaż implementacja Miravia wymaga pobierania i podsumowywania opinii w czasie rzeczywistym, niezależnie od tego, czy wnioskowanie odbywa się na serwerze, czy w przeglądarce, AI po stronie klienta jest znacznie wydajniejsza wraz ze wzrostem częstotliwości. Są zadowoleni z ogólnej skuteczności kampanii.

Najpierw Miravia sprawdza zgodność funkcji i urządzenia.

// Compatibility check for device with built-in AI
export const deviceCheck = async () => {
  // Query the browser's AI capabilities
  const availability = await Summarizer.availability();

  // Case 1: Device doesn't support AI summarization
  if (availability === 'unavailable') {
    return {
      summarizationAvailable: false,
      message:
        'AI summarization tools are not supported on this device, or the appropriate permissions have not be set.',
    };
  }

  // Case 2: Device supports AI but requires model download
  if (availability === 'downloadable') {
    // Try to trigger an installation
    Summarizer.create();

    return {
      summarizationAvailable: false,
      message: 'Installing in the background. This may take a few minutes...',
    };
  }

  // Case 3: Device supports AI summarization
  return {
    summarizationAvailable: true,
    message: 'Ready for use.',
  };
};

Następnie Miravia podsumowuje dostępne opinie. Opinie są łączone z dodatkowym okresem, aby dane wejściowe były bardziej spójne.

/**
 * Summarizes a list of reviews using Chrome's Built-in AI
 * @param {Array<string>} reviewContentList - Array of review texts to summarize
 * @returns {Promise<string>} The generated summary text
 * @throws {Error} If summarization is not available or fails
 */
export const reviewSummarize = async (reviewContentList) => {
  // Validate input
  if (!Array.isArray(reviewContentList) || !reviewContentList.length) {
    throw new Error('Please provide a non-empty array of reviews to summarize');
  }

  // Check device compatibility
  const { summarizationAvailable, message } = await deviceCheck();

  if (summarizationAvailable) {
    try {
      // Configure and create the summarizer with appropriate parameters
      const summarizer = await Summarizer.create({
        type: 'tl;dr',
        length: 'short',
        sharedContext:
          'Summarize the given user reviews. Maintain a polite and formal tone.',
      });

      // Generate the summary from the joined review texts
      const summary = await summarizer.summarize(reviewContentList.join('. '));

      // Return the generated summary
      return summary;
    } catch (error) {
      // Handle any errors during summarization
      throw new Error(`Summarization failed: ${error.message}`);
    }
  } else {
    // If summarization is not available, throw an error with the message from deviceCheck
    throw new Error(
      message ||
        'AI summarization tools are not supported on this device or browser.'
    );
  }
};

Sprawdzone metody

Jeśli dane wejściowe opinii przekraczają limit tokenów, wykonaj te czynności:

  • Użyj mniejszej próbki (np. 4 najnowszych opinii) w interfejsie API. Pomoże to uzyskać szybsze wyniki. Zapoznaj się ze wskazówkami dotyczącymi skalowania podsumowywania po stronie klienta.
  • QuotaExceededError zawiera więcej informacji o żądanych tokenach w danych wejściowych. Obiekt summarizer ma właściwość inputQuota, która wskazuje limit tokenów interfejsu API. Umożliwia to wyświetlanie informacji zwrotnych w czasie rzeczywistym i wyłączanie funkcji, jeśli dane wejściowe przekraczają limit.

Aby zapewnić wszystkim użytkownikom płynne korzystanie z usługi, możesz rozważyć podejście hybrydowe. Podczas pierwszego wywołania wbudowanego interfejsu API AI przeglądarka musi pobrać model.

  • Miravia używała modelu po stronie serwera, aby wyświetlić wstępne podsumowanie, podczas gdy model był pobierany. Gdy wbudowany model był już gotowy, strona zaczęła wykonywać wnioskowanie po stronie klienta.

Zawsze staraj się tworzyć przyjazne i łatwe w użyciu interfejsy:

  • Wdróż pasek postępu do pobierania modeli i zmniejszania opóźnień odpowiedzi.
  • Zadbaj o przejrzystość dotyczącą pobierania modelu. Bright Sites powiadomiło użytkowników o pobieraniu modelu w celu zapewnienia przejrzystości i uzyskania zgody na wykorzystanie zasobów. Dzięki temu użytkownicy mogliby zaakceptować lub odrzucić prośbę przed kontynuacją.

Wnioski i rekomendacje

Te przykłady z życia wziętych z redBus i Miravia pokazują, jak interfejs Summarizer API pomaga użytkownikom szybko podejmować świadome decyzje dzięki dostarczaniu zwięzłych i trafnych podsumowań opinii użytkowników. Interfejs API może działać po stronie klienta bez dodatkowych kosztów biznesowych i z niewielką złożonością techniczną, co czyni go odpowiednim rozwiązaniem w przypadku podobnych zastosowań, w których informacje muszą być podsumowywane. Wszystkie wbudowane interfejsy AI API umożliwiają praktyczne przypadki użycia AI po stronie klienta.

Zastanawiasz się, jak interfejs Summarizer API może Ci pomóc w innych zastosowaniach? Omówiliśmy też, jak interfejs Summarizer API pomaga zwiększać zaangażowanie użytkowników w artykuły.

Czy tworzysz coś nowego za pomocą tych interfejsów API? Podziel się z nami swoimi spostrzeżeniami na @ChromiumDev na X lub na profilu Chromium for Developers na LinkedIn.

Zasoby

Podziękowania

Dziękujemy Makakhovi Andreyowi i Ziyi Liang z Miravia (Alibaba Group), Amitowi Kumarowi z redBus, Swetha Gopalakrishnanowi, Alexandrze Klepper, Thomasowi SteinerowiKenji Baheux za pomoc w sporządzeniu i przeglądnięciu tego dokumentu.