게시일: 2024년 11월 11일, 최종 업데이트: 2025년 7월 30일
Browser Support
사용자에게 긴 기사, 복잡한 문서, 활발한 채팅 대화를 간결하고 통찰력 있는 요약으로 추출할 수 있는 기능을 제공할 수 있습니다.
요약 도구 API를 사용하면 문장, 단락, 글머리 기호 목록 등 다양한 길이와 형식으로 여러 유형의 요약을 생성할 수 있습니다. 이 API는 다음과 같은 시나리오에서 유용합니다.
- 도움말 또는 채팅 대화의 핵심 사항을 요약합니다.
- 기사의 제목과 머리글을 제안합니다.
- 긴 텍스트의 간결하고 유익한 요약을 만듭니다.
- 서평을 기반으로 책의 티저를 생성합니다.
시작하기
요약 도구 API는 Chrome 138 안정화 버전부터 사용할 수 있습니다.
이 API를 사용하기 전에 Google의 생성형 AI에 관한 금지된 사용 정책을 확인하세요.
기능 감지를 실행하여 브라우저가 Summarizer API를 지원하는지 확인합니다.
if ('Summarizer' in self) {
// The Summarizer API is supported.
}
하드웨어 요구사항 검토
Chrome에서 이러한 API를 사용하여 기능을 작동하는 개발자와 사용자에게는 다음 요구사항이 적용됩니다. 다른 브라우저에는 다른 운영 요구사항이 있을 수 있습니다.
Language Detector API와 Translator API는 데스크톱의 Chrome에서 작동합니다. 이러한 API는 휴대기기에서 작동하지 않습니다. 다음 조건을 충족하는 경우 Chrome에서 Prompt API, Summarizer API, Writer API, Rewriter API가 작동합니다.
- 운영체제: Windows 10 또는 11, macOS 13 이상 (Ventura 이상), Linux 또는 [Chromebook Plus](https://www.google.com/chromebook/chromebookplus/) 기기의 ChromeOS(플랫폼 16389.0.0 이상) Chromebook Plus가 아닌 기기에서 실행되는 Android, iOS, ChromeOS용 Chrome은 아직 Gemini Nano를 사용하는 API를 지원하지 않습니다.
- 저장소: Chrome 프로필이 포함된 볼륨에 22GB 이상의 여유 공간이 있어야 합니다.
- GPU: VRAM이 4GB보다 커야 합니다.
- 네트워크: 무제한 데이터 또는 무제한 연결
브라우저에서 모델을 업데이트하면 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개로 구성되고 짧은 요약은 한 문장입니다.
설정하면 매개변수를 변경할 수 없습니다. 매개변수를 수정해야 하는 경우 새 요약기 객체를 만듭니다.
다음 표에는 다양한 유형의 요약과 해당 길이가 나와 있습니다. 길이는 최대 가능 값을 나타냅니다. 결과가 더 짧을 수도 있습니다.
유형 | 의미 | 길이 | ||||||
---|---|---|---|---|---|---|---|---|
"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);
}
요약기를 실행하는 방법에는 스트리밍과 일괄 (비스트리밍)의 두 가지가 있습니다.
일괄 요약
일괄 요약의 경우 모델이 입력을 전체적으로 처리한 다음 출력을 생성합니다.
일괄 요약을 가져오려면 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, LinkedIn에서 웹사이트와 웹 애플리케이션을 공유해 주세요.