发布时间:2024 年 11 月 11 日;上次更新时间:2025 年 7 月 30 日
说明类视频 | Web | 扩展程序 | Chrome 状态 | 目的 |
---|---|---|---|---|
MDN | 视图 | Intent to Ship |
您可以让用户将长篇文章、复杂文档甚至是生动的聊天对话整理成简明精辟的摘要。
Summarizer API 可用于生成不同类型、各种长度和各种格式的摘要,例如句子、段落、项目符号列表等。我们认为此 API 在以下场景中非常有用:
- 总结文章或聊天对话的要点。
- 为文章建议标题。
- 为长篇文本创建简明扼要的信息性摘要。
- 根据书评生成图书预告片。
开始使用
Summarizer 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 不适用于移动设备。当满足以下条件时,Prompt API、Summarizer API、Writer API 和 Rewriter API 可在 Chrome 中正常运行:
- 操作系统:Windows 10 或 11;macOS 13 及更高版本(Ventura 及更高版本);或 Linux。使用 Gemini Nano 的 API 尚不支持 Android 版 Chrome、iOS 版 Chrome 和 ChromeOS 版 Chrome。
- 存储空间:包含 Chrome 个人资料的卷上至少有 22 GB 的可用空间。
- GPU:VRAM 严格大于 4 GB。
- 网络:无限流量或不按流量计费的网络连接。
随着浏览器更新模型,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 的实现中,简短的关键点摘要包含三个项目符号,而简短摘要则是一句话。
参数一经设置便无法更改。如果您需要修改参数,请创建一个新的总结器对象。
下表展示了不同类型的摘要及其对应的长度。这些长度表示可能的最大值,因为有时结果可能会更短。
类型 | 含义 | 长度 | ||||||
---|---|---|---|---|---|---|---|---|
"tldr" |
摘要应简短明了,提供输入内容的快速概览,适合忙碌的读者。 |
|
||||||
"teaser" |
摘要应侧重于输入中最有趣或最引人入胜的部分,旨在吸引读者阅读更多内容。 |
|
||||||
"key-points" |
总结应从输入中提取最重要的要点,并以项目符号列表的形式呈现。 |
|
||||||
"headline" |
摘要应以文章标题的形式,用一句话有效地概括输入内容的主要观点。 |
|
例如,您可以初始化总结器,以输出 Markdown 格式的中等长度的关键点。
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.',
});
直播摘要
流式总结功能可实时提供结果。
随着输入内容的添加和调整,输出内容会不断更新。如需获取流式摘要,请调用 summarizeStreaming()
,而不是 summarize()
。
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。
标准化工作量
我们正在努力实现 Summarizer API 的标准化,以确保跨浏览器兼容性。
总结器 API 和其他写作辅助 API 已被 W3C WebML 工作组采用。我们已向 Mozilla 和 WebKit 询问了他们的标准立场。
分享反馈
我们很想了解您使用 Summarizer API 构建了哪些内容。欢迎在 X、YouTube 和 LinkedIn 上与我们分享您的网站和 Web 应用。