Summarizer API를 사용하면 redBus와 Miravia에서 유용한 사용자 리뷰 요약을 만들 수 있습니다.

Cecilia Cong
Cecilia Cong
Hadyan Andika
Hadyan Andika

게시: 2025년 5월 15일

전자상거래 또는 여행 사이트와 같이 사용자 리뷰가 있는 웹사이트에는 대량의 정보가 있는 경우가 많습니다. 따라서 사용자가 많은 리뷰를 검토하여 구매 여부를 결정하는 데 시간이 많이 걸릴 수 있습니다. 리뷰 요약을 제공하면 사용자가 피드백을 이해하고 시간을 절약하는 데 도움이 됩니다. redBus와 Miravia가 Summarizer API를 사용하여 의사 결정 및 구매 경험을 개선하는 방법을 알아보세요.

설명 동영상 확장 프로그램 Chrome 상태 인텐트
MDN Chrome 138 Chrome 138 View 배송 의도

Summarizer API를 사용하면 문장, 단락, 글머리기호 목록 등 다양한 길이와 형식의 다양한 유형의 요약을 생성할 수 있습니다. 이 API는 많은 기본 제공 AI API와 마찬가지로 대규모 언어 모델을 사용하여 추론을 실행합니다. Chrome의 모델은 Gemini Nano입니다.

redBus가 고객이 최적의 버스 옵션을 결정하도록 지원

redBus는 3,000만 명이 넘는 고객을 보유한 인도 최대 버스 제공업체로 전국적으로 연결된 약 10,000개의 도시와 마을에 버스 서비스를 제공하고 있습니다. redBus는 데이터와 의견을 통해 사용자 제작 리뷰가 고객이 여행 니즈에 가장 적합한 경로와 버스를 결정하는 데 중요한 역할을 한다는 사실을 깨달았습니다. redBus는 많은 양의 리뷰를 수신하며 각 리뷰는 정확한 도착 지점과 출발 지점, 시간에 따라 다릅니다.

고객이 특정 도시 또는 경로를 대략적으로 파악할 수 있도록 Summarizer API를 사용하여 관련 리뷰의 주요 통계를 제공합니다.

고객이 방갈로르에서 망갈루루로 가는 경로를 찾습니다. 요약 도구는 사용 가능한 리뷰를 살펴보고 고객이 여정에 가장 적합한 버스를 찾는 데 도움이 되는 유용한 개요를 제공합니다.

"Summarizer API를 사용하면 수많은 리뷰와 사용자 검색어 조합에서 양질의 요약을 만들 수 있었습니다. 이 클라이언트 측 기능은 서버 측 대안에서 발생할 수 있는 기술적 복잡성과 추가 비즈니스 비용을 없앴습니다. 이 사용 사례는 전환 유입경로의 일부이므로 Google에 중요합니다."

— 아미트 쿠마르, redBus 선임 엔지니어링 관리자

redBus 백엔드에 저장된 리뷰의 세부사항과 출발 및 도착 시간, 도시의 특정 승차 지점, 다양한 버스 운행사와 같은 변수가 포함된 사용자 검색어의 엄청난 수의 가능한 조합을 함께 고려하면 리뷰에서 구체적인 통계를 강조 표시하기가 어렵습니다. 이 정도 양의 데이터를 처리하려면 각 검색어에 대한 서버 측 요약을 생성하는 데 과도한 비용이 들 것입니다.

효과적인 요약을 생성하기 위해 redBus는 고객 리뷰 외에도 Summarizer API에 다음 컨텍스트를 제공합니다.

//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.';

요약을 통해 추가 비즈니스 비용과 기술적 복잡성 없이 고객의 의사결정을 개선할 수 있습니다. 또한 redBus는 로그인한 사용자의 여행 환경설정(예: 좌석 편안함 또는 Wi-Fi 사용 가능 여부)에 따라 요약을 맞춤설정할 수 있습니다. 클라이언트 측에서 추론합니다. 즉, 이 검색 및 요약은 사용자에게 비공개로 유지됩니다.

Summarizer 사용 가능 여부를 확인하고, 컨텍스트를 제공하며, 사용자의 검색어를 기반으로 리뷰를 검색하는 짧은 코드 샘플을 살펴보세요.

// 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
  }
}

방갈로어에서 망갈루루로의 경로를 검색하는 예시를 들어 요약 도구의 출력은 다음과 같습니다.

<Bus Provider X>은 편안함, 청결, 직원 서비스에 관해 전반적으로 긍정적인 리뷰를 받았습니다. 지연, 운전자의 태도 (무례함), 편의시설 부족 (실시간 추적, 담요), 불편함 (좌석 크기, 충격 흡수 장치 불량)과 같은 사소한 문제가 일부 발생했습니다.

이 리뷰는 요청된 요구사항을 충족하며 긍정적인 점과 부정적인 점을 한 단락으로 간단하게 정리하여 308개의 개별 리뷰보다 훨씬 읽기 쉽습니다.

Miravia에서 전자상거래 리뷰 요약

Miravia는 월간 활성 사용자가 수백만 명에 달하는 스페인의 대표적인 전자상거래 플랫폼입니다. 사용자가 리뷰를 필터링할 때마다 (예: 제품 평점별로) 새로운 요약이 생성됩니다. 여기에서 우려사항과 권장사항을 강조하여 고객 의견을 간략하게 살펴볼 수 있습니다.

사용자는 다양한 평점에 대한 제품 리뷰 요약을 생성할 수 있습니다.

"이전에는 제품 리뷰의 주요 장단점을 파악하려면 사용자가 세부정보 페이지에서 수많은 개별 댓글을 읽어야 했습니다. 사용자가 전반적인 고객 감정을 빠르게 파악할 수 있도록 Summarizer API를 도입했습니다. 이 요약은 사용자가 리뷰를 필터링할 때마다 (예: 별표 평점 또는 기타 기준) 동적으로 업데이트되어 관련성 높은 구매자 의견을 빠르고 포괄적으로 파악할 수 있도록 지원합니다."

— 지이 리앙, 미라비아 선임 소프트웨어 엔지니어

처음에는 Miravia의 사용자 리뷰 요약 기능이 서버 측 AI 서비스를 사용했습니다. 클라이언트 측 AI를 실행하는 Gemini Nano는 유지관리 비용을 줄이면서도 비슷한 결과를 제공할 수 있다는 것을 발견했습니다. 이 이점은 리뷰가 지속적으로 업데이트되는 인기 있고 빠르게 판매되는 상품에 특히 분명합니다.

Miravia 구현에는 서버에서 추론이 이루어지든 브라우저에서 이루어지든 실시간 검토 가져오기 및 요약이 필요하지만, 클라이언트 측 AI는 빈도가 증가할수록 훨씬 더 효율적입니다. 전반적인 실적에 만족합니다.

먼저 Miravia는 기능 및 기기 호환성을 확인합니다.

// 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.',
  };
};

그런 다음 Miravia는 사용 가능한 리뷰를 요약합니다. 입력 내용을 더 일관되게 만들기 위해 리뷰가 추가 마침표로 연결됩니다.

/**
 * 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.'
    );
  }
};

권장사항

검토 입력이 토큰 한도를 초과하는 경우 다음 완화 조치를 따르세요.

  • API에 더 적은 수의 샘플 (예: 최근 4개 리뷰)을 사용합니다. 이렇게 하면 결과를 더 빠르게 생성할 수 있습니다. 클라이언트 측 요약 확장에 관한 가이드를 참고하세요.
  • QuotaExceededError는 입력에서 요청된 토큰에 관한 추가 정보를 제공합니다. summarizer 객체에는 API의 토큰 한도를 나타내는 inputQuota 속성이 있습니다. 이를 통해 입력이 한도를 초과하면 실시간 피드백을 제공하고 기능을 사용 중지할 수 있습니다.

모든 사용자에게 원활한 환경을 제공하기 위해 하이브리드 접근 방식을 고려해 볼 수 있습니다. 내장 AI API가 처음 호출되면 브라우저가 모델을 다운로드해야 합니다.

  • Miravia는 모델이 다운로드되는 동안 서버 측 모델을 사용하여 초기 요약을 제공했습니다. 내장 모델이 준비되면 사이트가 클라이언트 측에서 추론을 실행하도록 전환되었습니다.

항상 친근하고 소통이 가능한 인터페이스를 만들기 위해 노력해야 합니다.

  • 모델 다운로드에 진행률 표시줄을 구현하고 응답 지연을 완화합니다.
  • 모델 다운로드에 관한 투명성을 고려하세요. Bright Sites는 리소스 사용의 투명성과 동의를 위해 사용자에게 모델 다운로드에 관해 알렸습니다. 이렇게 하면 사용자가 계속하기 전에 수락하거나 거부할 수 있습니다.

결론 및 권장사항

redBus 및 Miravia의 실제 예시에서는 Summarizer API가 사용자 리뷰의 간결하고 관련성 높은 요약을 제공하여 사용자가 정보에 입각한 결정을 신속하게 내릴 수 있도록 지원한 방법을 보여줍니다. 추가 비용 없이 기술적 복잡성이 낮은 클라이언트 측에서 작동하는 API의 기능은 정보가 요약되어야 하는 유사한 사용 사례에 적합한 옵션입니다. 모든 내장 AI API를 사용하면 실용적인 클라이언트 측 AI 사용 사례를 지원할 수 있습니다.

Summarizer API가 다른 사용 사례에 어떻게 도움이 될 수 있는지 궁금하신가요? Summarizer API가 기사 참여도를 높이는 데 도움이 되는 방법도 공유했습니다.

이러한 API로 새로운 것을 구축하고 있나요? X의@ChromiumDev 또는 LinkedIn의 개발자용 Chromium에서 공유해 주세요.

리소스

감사의 말씀

이 문서 작성 및 검토에 도움을 주신 Miravia (Alibaba Group)의 Makakhov Andrey 및 Ziyi Liang, redBus의 Amit Kumar, Swetha Gopalakrishnan, Alexandra Klepper, Thomas Steiner, Kenji Baheux님께 감사드립니다.