利用内置 AI 生成摘要

发布时间:2024 年 11 月 11 日;上次更新时间:2025 年 7 月 30 日

Browser Support

  • Chrome: 138.
  • Edge: behind a flag.
  • Firefox: not supported.
  • Safari: not supported.

您可以让用户将长篇文章、复杂文档甚至是生动的聊天对话整理成简明而富有洞察力的摘要。

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;或 ChromeOS(从平台 16389.0.0 开始)[Chromebook Plus](https://www.google.com/chromebook/chromebookplus/) 设备。 非 Chromebook Plus 设备上的 Android 版 Chrome、iOS 版 Chrome 和 ChromeOS 版 Chrome 尚不支持使用 Gemini Nano 的 API。
  • 存储空间:包含 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(默认值)、tldrteaserheadline。有关详情,请查看下表。
  • format:总结的格式,允许的值为 markdown(默认值)和 plain-text
  • length:总结的长度,允许的值为 shortmedium(默认值)和 long。这些长度的含义因所请求的 type 而异。例如,在 Chrome 的实现中,简短的关键点摘要包含三个项目符号,而简短摘要则是一句话。

参数一经设置便无法更改。如果您需要修改参数,请创建一个新的总结器对象。

下表展示了不同类型的摘要及其对应的长度。这些长度表示可能的最大值,因为有时结果可能会更短。

类型 含义 长度
"tldr" 摘要应简短明了,提供输入内容的快速概览,适合忙碌的读者。
短片 1 句话
3 个句子
long 5 个句子
"teaser" 摘要应侧重于输入内容中最有趣或最引人入胜的部分,旨在吸引读者继续阅读。
短片 1 句话
3 个句子
long 5 个句子
"key-points" 总结应从输入中提取最重要的要点,并以项目符号列表的形式呈现。
短片 3 个列表项
5 个项目符号
long 7 个列表项
"headline" 摘要应以文章标题的形式,用一句话有效地概括输入内容的主要观点。
短片 12 个字词
17 个字词
long 22 个字词

例如,您可以初始化总结器,以输出 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。

权限政策、iframe 和 Web Worker

默认情况下,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 目前不适用于 Web Worker。这是因为为每个 worker 建立负责任的文档以检查权限政策状态非常复杂。

分享反馈

我们很想了解您使用 Summarizer API 构建了哪些内容。欢迎在 XYouTubeLinkedIn 上与我们分享您的网站和 Web 应用。

如需针对 Chrome 的实现提供反馈,请提交 bug 报告功能请求