发布时间:2024 年 11 月 11 日;最后更新时间:2025 年 5 月 20 日
解说 | Web | 扩展程序 | Chrome 状态 | 意向 |
---|---|---|---|---|
MDN | 视图 | 发货意图 |
您可以让用户将冗长的文章、复杂的文档或甚至热烈的聊天对话浓缩为简洁而富有洞见的摘要。
Summarizer API 可用于生成不同长度和格式的不同类型的摘要,例如句子、段落、项目符号列表等。我们认为此 API 在以下情况下非常有用:
- 总结文章或聊天对话的要点。
- 为文章建议标题和标题。
- 为长篇文字创建简明扼要的信息性摘要。
- 根据图书评价为图书生成预告片。
开始使用
Summarizer API 从 Chrome 138 稳定版开始提供。
运行功能检测,以查看浏览器是否支持 Summarizer API。
if ('Summarizer' in self) {
// The Summarizer API is supported.
}
查看硬件要求
语言检测器 API 和 Translator API 仅适用于桌面版 Chrome。
满足以下条件时,Prompt API、Summarizer API、Writer API 和 Rewriter API 可在 Chrome 中正常运行:
- 操作系统:Windows 10 或 11;macOS 13 或更高版本(Ventura 及更高版本);或 Linux。由 Gemini Nano 支持的 API 尚不支持 Android 版、iOS 版和 ChromeOS 版 Chrome。
- 存储空间:包含 Chrome 个人资料的卷至少有 22 GB。
- GPU:VRAM 必须严格超过 4 GB。
- 网络:无限流量或不计流量的连接。
这些要求适用于您在开发过程中以及使用您构建的功能的用户。
模型下载
Summarizer API 使用经过训练的模型生成高质量的摘要。该 API 内置于 Chrome 中,Gemini Nano 是网站首次使用此 API 时下载的模型。
如需确定模型是否已准备就绪,请调用异步 Summarizer.availability()
函数。它会返回一个包含以下值的 promise。
"unavailable"
表示实现不支持请求的选项。"downloadable"
表示实现支持请求的选项,但首先,浏览器必须下载某些内容,例如模型(在 Chrome 中,即 Gemini Nano)或模型的微调。"downloading"
表示实现支持请求的选项,但必须先完成正在进行的下载,才能继续操作。"available"
表示实现支持请求的选项,并且摘要生成器可以继续操作。
如需触发模型下载并创建摘要生成器,请调用异步 Summarizer.create()
函数。如果对 availability()
的响应为 downloadable
或 downloading
,最佳实践是监听下载进度。这样,您就可以告知用户,并指明下载可能需要一些时间才能完成,然后才能进行总结。
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" |
摘要应以文章标题的格式,在一个句子中有效包含输入内容的主要要点。 |
|
以下示例演示了如何初始化摘要生成器。
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const availability = await Summarizer.availability();
let summarizer;
if (availability === 'unavailable') {
// The Summarizer API isn't usable.
return;
}
if (availability === 'available') {
// The Summarizer API can be used immediately .
summarizer = await Summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await Summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
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()
,而不是 summarize()
。
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarizeStreaming(longText, {
context: 'This article is intended for junior developers.',
});
演示
您可以在 Summarizer API Playground 中试用 Summarizer API。
标准化工作
我们正在努力标准化 Summarizer API,以确保跨浏览器兼容性。
我们的 API 提案获得了社区支持,已移至 W3C Web Incubator 社区群组进行进一步讨论。Chrome 团队向 W3C 技术架构组征求了反馈,并询问了 Mozilla 和 WebKit 的标准立场。
加入 Web Incubator 社区群组,参与制定标准。
分享反馈
我们希望了解您使用 Summarizer API 构建了什么。欢迎通过 X、YouTube 和 LinkedIn 与我们分享您的网站和 Web 应用。