发布时间:2024 年 11 月 11 日;上次更新时间:2025 年 5 月 20 日
说明类视频 | 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 运行功能的用户必须满足以下要求。其他浏览器可能有不同的运行要求。
语言检测器和翻译器 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()
函数。它会返回一个包含以下值的 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 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 提案获得了社区支持,目前已移至 W3C Web Incubator Community Group 以供进一步讨论。 Chrome 团队向 W3C 技术架构组征求了反馈,并向 Mozilla 和 WebKit 询问了他们的标准立场。
加入 Web Incubator Community Group,参与标准制定工作。
分享反馈
我们很想了解您使用 Summarizer API 构建了哪些内容。欢迎在 X、YouTube 和 LinkedIn 上与我们分享您的网站和 Web 应用。