게시: 2024년 11월 11일, 최종 업데이트: 2025년 7월 30일
사용자는 긴 기사, 복잡한 문서 또는 활발한 채팅 대화를 간결하고 통찰력 있는 요약으로 압축할 수 있습니다.
Summarizer API를 사용하면 문장, 단락, 글머리기호 목록 등 다양한 길이와 형식으로 여러 유형의 요약을 생성할 수 있습니다. 이 API는 다음과 같은 시나리오에서 유용하다고 생각합니다.
- 기사 또는 채팅 대화의 주요 사항을 요약합니다.
- 기사의 제목과 헤드라인을 제안합니다.
- 긴 텍스트의 간결하고 유익한 요약을 만듭니다.
- 서평을 기반으로 책의 티저를 생성합니다.
시작하기
Summarizer API는 Chrome 138 안정화 버전에서 사용할 수 있습니다.
기능 감지를 실행하여 브라우저가 Summarizer API를 지원하는지 확인합니다.
if ('Summarizer' in self) {
// The Summarizer API is supported.
}
하드웨어 요구사항 검토
Chrome에서 이러한 API를 사용하여 기능을 운영하는 개발자와 사용자에게는 다음과 같은 요구사항이 있습니다. 브라우저마다 운영 요구사항이 다를 수 있습니다.
언어 감지기 및 번역기 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 이상) Gemini Nano를 사용하는 API는 아직 Android용 Chrome, iOS, Chromebook Plus가 아닌 기기의 ChromeOS용 Chrome을 지원하지 않습니다.
- 저장용량: Chrome 프로필이 포함된 볼륨에 최소 22GB의 여유 공간
- GPU 또는 CPU: 기본 제공 모델은 GPU 또는 CPU로 실행할 수 있습니다.
- GPU: VRAM이 4GB보다 엄격하게 많음
- CPU: RAM 16GB 이상, CPU 코어 4개 이상
- 참고: 오디오 입력이 있는 Prompt API에는 GPU가 필요합니다.
- 네트워크: 무제한 데이터 또는 데이터 전송량 제한이 없는 연결 Wi-Fi 및 이더넷 연결은 기본적으로 데이터 전송량 제한이 없는 반면, 셀룰러 연결은 데이터 전송량 제한이 있는 경우가 많습니다.
Gemini Nano의 정확한 크기는 브라우저가 모델을 업데이트할 때 다를 수 있습니다. 현재 크기를 확인하려면 chrome://on-device-internals를 방문하세요.
모델 다운로드
Summarizer API는 고품질 요약을 생성하도록 학습된 모델을 사용합니다. API는 Chrome에 기본 제공되며, Gemini Nano는 웹사이트에서 이 API를 처음 사용할 때 다운로드되는 모델입니다.
모델을 사용할 준비가 되었는지 확인하려면 비동기
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" |
요약은 짧고 요점을 파악하여 바쁜 독자에게 적합한 입력에 대한 간략한 개요를 제공해야 합니다. |
|
||||||
"teaser" |
요약은 입력의 가장 흥미로운 부분에 중점을 두어 독자가 더 많이 읽도록 유도해야 합니다. |
|
||||||
"key-points" |
요약은 입력에서 가장 중요한 사항을 추출하여 글머리기호 목록으로 표시해야 합니다. |
|
||||||
"headline" |
요약은 기사 헤드라인 형식으로 단일 문장으로 입력의 주요 사항을 효과적으로 포함해야 합니다. |
|
||||||
예를 들어 요약기를 초기화하여 마크다운으로 중간 길이의 주요 사항을 출력할 수 있습니다.
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는 여러 언어를 지원합니다. 세션을 만들 때 예상되는 입력, 출력, 컨텍스트 언어를 설정합니다. 이렇게 하면 브라우저가 특정 언어 조합을 지원할 수 없는 경우 요청을 거부할 수 있습니다.
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="" 속성을 사용하여 API에 대한 액세스 권한을 교차 출처 iframe
에 위임할 수 있습니다.
<!--
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에서 웹사이트와 웹 애플리케이션을 공유해 주세요.