내장된 AI로 요약

게시: 2024년 11월 11일, 최종 업데이트: 2025년 7월 30일

Browser Support

  • Chrome: 138.
  • Edge: 138.
  • Firefox: not supported.
  • Safari: not supported.

Source

사용자는 긴 기사, 복잡한 문서 또는 활발한 채팅 대화를 간결하고 통찰력 있는 요약으로 추출할 수 있습니다.

Summarizer API를 사용하면 문장, 단락, 글머리기호 목록 등 다양한 길이와 형식의 요약을 생성할 수 있습니다. 이 API는 다음과 같은 시나리오에서 유용하다고 생각합니다.

  • 기사 또는 채팅 대화의 주요 사항을 요약합니다.
  • 기사의 제목 및 헤드라인을 제안합니다.
  • 긴 텍스트의 간결하고 유익한 요약을 만듭니다.
  • 서평을 기반으로 책의 티저를 생성합니다.

시작하기

Summarizer API는 Chrome 138 안정화 버전에서 사용할 수 있습니다.

기능 감지를 실행하여 브라우저가 Summarizer API를 지원하는지 확인합니다.

if ('Summarizer' in self) {
  // The Summarizer API is supported.
}

하드웨어 요구사항 검토

Chrome에서 이러한 API를 사용하여 기능을 운영하는 개발자와 사용자에게는 다음과 같은 요구사항이 있습니다. 브라우저마다 운영 요구사항이 다를 수 있습니다.

Language DetectorTranslator API 는 데스크톱의 Chrome에서 작동합니다. 이러한 API는 휴대기기에서 작동하지 않습니다.

Prompt API, Summarizer API, Writer API, Rewriter API, Proofreader API는 다음 조건을 충족하는 경우 Chrome에서 작동합니다.

  • 운영체제: Windows 10 또는 11, macOS 13+ (Ventura 이상), Linux 또는 Chromebook Plus 기기의 ChromeOS (플랫폼 16389.0.0 이상) Chromebook Plus가 아닌 기기의 Android용 Chrome, iOS용 Chrome, ChromeOS용 Chrome은 아직 Gemini Nano를 사용하는 API에서 지원되지 않습니다.
  • 저장용량: Chrome 프로필이 포함된 볼륨에 여유 공간이 22GB 이상 있어야 합니다.
  • GPU 또는 CPU: 기본 제공 모델은 GPU 또는 CPU로 실행할 수 있습니다.
    • GPU: VRAM이 4GB보다 엄격하게 많아야 합니다.
    • CPU: RAM이 16GB 이상이고 CPU 코어가 4개 이상이어야 합니다.
    • 참고: 오디오 입력이 있는 Prompt API에는 GPU가 필요합니다.
  • 네트워크: 무제한 데이터 또는 데이터 전송량 제한이 없는 연결

Gemini Nano의 정확한 크기는 브라우저에서 모델을 업데이트할 때 다를 수 있습니다. 현재 크기를 확인하려면 chrome://on-device-internals를 방문하세요.

모델 다운로드

Summarizer API는 고품질 요약을 생성하도록 학습된 모델을 사용합니다. API는 Chrome에 기본 제공되며, 웹사이트에서 이 API를 처음 사용할 때 다운로드되는 모델은 Gemini Nano입니다.

모델을 사용할 준비가 되었는지 확인하려면 비동기 Summarizer.availability() 함수를 호출합니다. availability()에 대한 응답이 downloadable이면 다운로드 진행률을 수신 대기하여 사용자에게 진행률을 알립니다. 시간이 걸릴 수 있기 때문입니다.

const availability = await Summarizer.availability();

모델 다운로드를 트리거하고 요약기를 만들려면 사용자 활성화를 확인한 후 비동기 Summarizer.create() 함수를 호출합니다.

// Proceed to request batch or streaming summarization
const summarizer = await Summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

API 함수

create() 함수를 사용하면 필요에 맞게 새 요약기 객체를 구성할 수 있습니다. 다음 매개변수가 있는 선택적 options 객체를 사용합니다.

  • sharedContext: 요약기에 도움이 될 수 있는 추가 공유 컨텍스트입니다.
  • type: 요약 유형입니다. 허용되는 값은 key-points(기본값), tldr, teaser, headline입니다. 자세한 내용은 다음 표를 참조하세요.
  • format: 요약 형식입니다. 허용되는 값은 markdown(기본값) 및 plain-text입니다.
  • length: 요약 길이입니다. 허용되는 값은 short (기본값), medium, long입니다. 이러한 길이의 의미는 요청된 type에 따라 다릅니다. 예를 들어 Chrome의 구현에서 짧은 주요 사항 요약은 글머리기호 3개로 구성되고 짧은 요약은 문장 1개로 구성됩니다.
  • preference: 개발자가 빠른 실행 또는 포괄적인 기능을 우선시하는지 나타내는 메커니즘입니다.
    • auto: 브라우저는 실행 속도와 요약 기능을 균형 있게 조정하고 환경, 시스템 제약조건 또는 컨텍스트에 따라 내부 처리를 동적으로 조정할 수 있습니다.
    • speed: 브라우저는 지연 시간이 짧고 실행 속도가 빠른 것을 우선시해야 합니다. 이 접근 방식은 성능을 우선시하므로 요약 기능이 제한되어 미묘한 추출이 줄어들거나 소스 텍스트의 합성이 더 간단해질 수 있습니다.
    • capability: 브라우저는 요약의 포괄성과 일관성, 요약 유형 및 기타 구성 가능한 옵션 측면에서 더 많은 유연성을 제공하는 모델을 우선시해야 합니다. 이 접근 방식은 미묘한 컨텍스트를 정확하게 캡처하고 매우 세련된 요약을 생성하는 데 중점을 두므로 지연 시간이 길어지고 실행 속도가 느려질 수 있습니다.

매개변수는 설정된 후에는 변경할 수 없습니다. 매개변수를 수정해야 하는 경우 새 요약기 객체를 만듭니다.

다음 표에서는 다양한 유형의 요약과 해당 길이를 보여줍니다. 길이는 가능한 최대값을 나타냅니다. 결과가 더 짧을 수 있기 때문입니다.

유형 의미 길이
"tldr" 요약은 짧고 요점을 파악하여 바쁜 독자에게 적합한 입력에 대한 간략한 개요를 제공해야 합니다.
짧은 동영상 문장 1개
매체 문장 3개
긴 동영상 문장 5개
"teaser" 요약은 입력의 가장 흥미로운 부분에 중점을 두어 독자가 더 많이 읽도록 유도해야 합니다.
짧은 동영상 문장 1개
매체 문장 3개
긴 동영상 문장 5개
"key-points" 요약은 입력에서 가장 중요한 사항을 추출하여 글머리기호 목록으로 표시해야 합니다.
짧은 동영상 글머리기호 3개
매체 글머리기호 5개
긴 동영상 글머리기호 7개
"headline" 요약은 기사 헤드라인 형식으로 단일 문장으로 입력의 주요 사항을 효과적으로 포함해야 합니다.
짧은 동영상 단어 12개
매체 단어 17개
긴 동영상 단어 22개

예를 들어 요약기를 초기화하여 마크다운으로 중간 길이의 주요 사항을 출력할 수 있습니다.

const options = {
  sharedContext: 'This is a scientific article',
  type: 'key-points',
  format: 'markdown',
  length: 'medium',
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
};

const availability = await Summarizer.availability();
if (availability === 'unavailable') {
  // The Summarizer API isn't usable.
  return;
}

// Check for user activation before creating the summarizer
if (navigator.userActivation.isActive) {
  const summarizer = await Summarizer.create(options);
}

예상 언어 할당

Summarizer API는 "en", "ja", "es", "de", "fr"을 허용합니다. 추가 언어 지원이 개발 중입니다.`"세션을 만들 때 예상되는 입력, 출력, 컨텍스트 언어를 설정합니다. 이렇게 하면 브라우저에서 특정 언어 조합을 지원할 수 없는 경우 요청을 거부할 수 있습니다.

const summarizer = await Summarizer.create({
  type: 'key-points',
  expectedInputLanguages: ['en', 'ja', 'es'],
  outputLanguage: 'es',
  expectedContextLanguages: ['en'],
  sharedContext: 'These are requests to summarize articles from a multilanguage newspaper. The users expect a response in Spanish.',
});

요약기를 실행하는 방법에는 스트리밍과 일괄 처리 (요청 기반 출력)의 두 가지가 있습니다.

일괄 요약

일괄 요약을 사용하면 모델이 입력을 전체적으로 처리한 후 출력을 생성합니다.

일괄 요약을 가져오려면 summarize() 함수를 호출합니다. 첫 번째 인수는 요약할 텍스트입니다. 두 번째 선택적 인수는 context 필드가 있는 객체입니다. 이 필드를 사용하면 요약을 개선할 수 있는 배경 세부정보를 추가할 수 있습니다.

const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});

스트림 요약

스트리밍 요약은 실시간으로 결과를 제공합니다. 입력이 추가되고 조정됨에 따라 출력이 지속적으로 업데이트됩니다. 스트리밍 요약을 가져오려면 summarize() 대신 summarizeStreaming()을 호출합니다.

const longText = document.querySelector('article').innerHTML;
const stream = summarizer.summarizeStreaming(longText, {
  context: 'This article is intended for junior developers.',
});
for await (const chunk of stream) {
  console.log(chunk);
}

데모

Summarizer API Playground에서 Summarizer API를 사용해 볼 수 있습니다.

권한 정책, iframe, 웹 워커

기본적으로 Summarizer API는 최상위 창과 동일한 출처 iframe에서만 사용할 수 있습니다. 권한 정책 allow="" 속성을 사용하여 출처 간 iframe 에 API 액세스 권한을 위임할 수 있습니다.

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Summarizer API by
  setting the `allow="summarizer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="summarizer"></iframe>

현재 Summarizer API는 웹 워커에서 사용할 수 없습니다. 이는 권한 정책 상태를 확인하기 위해 각 워커에 대한 책임 있는 문서를 설정하는 것이 복잡하기 때문입니다.

의견 공유

Summarizer API로 빌드하는 내용을 확인하고 싶습니다. X, YouTube, and LinkedIn에서 웹사이트와 웹 애플리케이션을 공유해 주세요.

Chrome의 구현에 관한 의견이 있으면 버그 신고 또는 기능 요청을 제출하세요.