게시일: 2024년 11월 11일
사용자에게 긴 기사, 복잡한 문서 또는 활발한 채팅 대화를 간결하고 유용한 요약으로 요약할 수 있는 기능을 제공할 수 있다고 가정해 보세요.
Summarizer API를 사용하면 문장, 단락, 글머리기호 목록 등 다양한 길이와 형식의 다양한 유형의 요약을 생성할 수 있습니다. 이 API는 다음과 같은 경우에 유용합니다.
- 도움말 또는 채팅 대화의 핵심 사항을 요약합니다.
- 도움말의 제목과 제목을 제안합니다.
- 긴 텍스트의 간결하고 유익한 요약을 만듭니다.
- 서평을 기반으로 도서 티저를 생성합니다.
가용성
- Chrome 131~Chrome 136에서 실행되는 Summarizer API 오리진 트라이얼에 참여하여 프로덕션 환경에서 실제 사용자를 대상으로 API를 테스트하세요. 출처 무료 체험을 사용하면 Chrome에서 출처의 모든 사용자에게 이 기능을 사용 설정할 수 있습니다. 출처 무료 체험을 시작하는 방법을 알아보세요.
- 사용량 제한이 있을 수 있지만 실시간 테스트 및 사용자 의견 수집을 위해 이러한 기능을 통합할 수 있습니다. Google은 더 많은 사용자에게 이 API를 제공하기 위해 노력하고 있으며, 이 과정에서 향후 이 API의 버전에 관한 정보를 제공하는 것이 목표입니다.
- Chrome 상태에서 구현을 따르세요.
- Summarizer API 제안서는 작성 API 모음의 일부이며 논의에 열려 있습니다.
- 사전 미리보기 프로그램에 참여하여 새로운 기본 제공 AI API를 미리 살펴보고 메일링 리스트에 참여하여 토론에 참여하세요.
오리진 트라이얼 기간의 제한사항
Summarizer API는 모델 품질이 영어 콘텐츠에서만 철저히 테스트되었으므로 원본 체험판 기간에는 영어 텍스트의 요약만 지원합니다. 품질 및 안전을 위해 추가 언어를 테스트하고 API가 광범위하게 제공되면 이 제한을 해제할 예정입니다.
Summarizer API 사용
먼저 기능 검색을 실행하여 브라우저가 Summarizer API를 지원하는지 확인합니다.
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
모델 다운로드
Summarizer API는 고품질 요약을 생성하도록 학습된 강력한 AI 모델을 사용합니다. 이 API가 Chrome에 내장되어 있는 동안에는 웹사이트에서 API를 처음 사용할 때 모델이 별도로 다운로드됩니다.
모델을 사용할 준비가 되었는지 확인하려면 비동기 ai.summarizer.capabilities()
함수를 호출합니다. 이 메서드는 다음과 같은 세 가지 값을 사용할 수 있는 available
필드가 포함된 AISummarizerCapabilities
객체를 반환합니다.
no
: 현재 브라우저에서 Summarizer API를 지원하지만 현재는 사용할 수 없습니다. 모델을 다운로드할 디스크 공간이 부족한 등 여러 가지 이유로 발생할 수 있습니다.readily
: 현재 브라우저는 Summarizer API를 지원하며 즉시 사용할 수 있습니다.after-download
: 현재 브라우저는 Summarizer API를 지원하지만 먼저 모델을 다운로드해야 합니다.
모델 다운로드를 트리거하고 요약기를 만들려면 비동기 ai.summarizer.create()
함수를 호출합니다. capabilities()
에 대한 응답이 after-download
인 경우 다운로드 진행 상황을 리슨하는 것이 좋습니다. 이렇게 하면 다운로드에 시간이 걸릴 때 사용자에게 알릴 수 있습니다.
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
API 함수
create()
함수를 사용하면 필요에 따라 새 summarizer 객체를 구성할 수 있습니다. 다음 매개변수를 사용하여 선택적 options
객체를 사용합니다.
sharedContext
: 요약 도구에 도움이 될 수 있는 추가 공유 컨텍스트입니다.type
: 허용되는 값key-points
(기본값),tl;dr
,teaser
,headline
를 포함하는 요약 유형입니다.format
: 요약 형식입니다. 허용되는 값은markdown
(기본값) 및plain-text
입니다.length
: 요약 길이이며 허용되는 값short
,medium
(기본값),long
입니다. 이러한 길이의 의미는 요청된type
에 따라 다릅니다. 예를 들어 Chrome 구현에서 짧은 요약은 글머리 기호 3개로 구성되며 짧은 요약은 문장 1개입니다. 긴 요약은 글머리 기호 7개로 구성되며 긴 요약은 단락입니다.
다음 예는 요약 도구를 초기화하는 방법을 보여줍니다.
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
// The Summarizer API isn't usable.
return;
}
if (available === 'readily') {
// The Summarizer API can be used immediately .
summarizer = await self.ai.summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await self.ai.summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await summarizer.ready;
}
요약 도구 실행
요약 도구를 실행하는 방법에는 스트리밍과 비스트리밍의 두 가지가 있습니다.
비스트리밍 요약
비스트리밍 요약을 사용하면 모델이 입력을 전체적으로 처리한 후 출력을 생성합니다.
스트리밍이 아닌 요약을 가져오려면 요약 도구의 비동기 summarize()
함수를 호출합니다. 함수의 첫 번째 인수는 요약하려는 텍스트입니다. 두 번째 인수(선택사항)는 context
필드가 있는 객체입니다.
이 필드를 사용하면 요약을 개선하는 데 도움이 되는 배경 세부정보를 추가할 수 있습니다.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
스트리밍 요약
스트리밍 요약은 실시간으로 결과를 제공합니다. 출력이 추가 및 조정됨에 따라 지속적으로 업데이트됩니다.
스트리밍 요약을 가져오려면 요약 도구의 summarizeStreaming()
함수를 호출합니다. 그런 다음 스트림에서 사용 가능한 텍스트 세그먼트를 반복합니다.
let result = '';
let previousChunk = '';
for await (const chunk of stream) {
const newChunk = chunk.startsWith(previousChunk)
? chunk.slice(previousChunk.length) : chunk;
console.log(newChunk);
result += newChunk;
previousChunk = chunk;
}
console.log(result);
summarizeStreaming()
는 응답 세그먼트가 서로 연속적으로 빌드되는 ReadableStream
을 반환합니다. 즉, 각 응답에는 다음 세그먼트뿐만 아니라 그때까지 생성된 전체 요약이 포함되며 이는 의도한 동작이 아닙니다.
세그먼트가 단일 긴 스트림의 연속적인 부분인 플랫폼의 다른 스트리밍 API와 조화를 이루도록 할 계획입니다. 현재 의도한 동작을 실행하려면 다음을 구현하면 됩니다.
let result = '';
let previousLength = 0;
for await (const segment of stream) {
const newContent = segment.slice(previousLength);
console.log(newContent);
previousLength = segment.length;
result += newContent;
}
console.log(result);
데모
Summarizer API 플레이그라운드에서 Summarizer API를 사용해 볼 수 있습니다.
표준화 노력
Google에서는 브라우저 간 호환성을 보장하기 위해 Summarizer API를 표준화하기 위해 노력하고 있습니다.
Google의 API 제안서는 커뮤니티의 지원을 받아 추가 논의를 위해 W3C 웹 인큐베이터 커뮤니티 그룹으로 이동했습니다. Chrome팀은 W3C 기술 아키텍처 그룹에 의견을 요청하고 Mozilla 및 WebKit에 표준 관련 입장을 요청했습니다.
참여 및 의견 공유
지금 오리진 트라이얼에 참여하여 Summarizer API 테스트를 시작하고 의견을 공유해 주세요. 여러분의 의견은 이 API의 향후 버전 및 기본 제공되는 모든 AI API의 빌드 및 구현 방식에 직접적인 영향을 줄 수 있습니다.
- Chrome 구현에 관한 의견이 있으면 버그 신고 또는 기능 요청을 제출하세요.
- 기존 문제에 댓글을 달거나 새 문제를 열어 GitHub에서 Summarizer API 설계에 관해 논의하세요.
- 웹 인큐베이터 커뮤니티 그룹에 가입하여 표준 개발 노력에 참여합니다.