Chrome 浏览器内置 AI 开发版开启攻略
配置要求
目前仅有桌面端
以官方原文链接(英文)为准,本篇2024/6/18日更新
Windows
- 操作系统版本: 10, 11
MacOS
- 操作系统版本: ≥ 13 (Ventura)
Linux
- 操作系统版本: 未指定
通用要求
- 存储空间: 在包含Chrome配置文件的卷上至少有22 GB的存储空间。
- GPU: 集成GPU或独立GPU(例如显卡)。
- 显存: 4 GB(最小值)
存储空间不一定要22GB
模型实际上需要的存储空间少得多,这只是为了确保有充足的存储余量。 目前(2024/6/8),模型大小大概为2GB。
配置
前提条件
- 确认已阅读 Google 的生成式 AI 禁止使用政策。
- 下载 Chrome 开发者频道(或 金丝雀频道),并确认您的版本等于或高于 127.0.6512.0。
- 检查您的设备是否符合要求。
- 不要跳过此步骤,特别是确保您有至少20GB的可用存储空间。
确保您的操作系统语言设置为英语(美国)您可能还需要更改 Chrome 浏览器的语言为英语(美国)。- 新版应当不需要更改语言
启用 Gemini Nano 和 Prompt API
按照以下步骤启用 Gemini Nano 和 Prompt API 标志以进行本地实验:
- 在 Chrome 中打开一个新标签页,转到
chrome://flags/#optimization-guide-on-device-model
- 选择“Enabled BypassPerfRequirement”
- 这将绕过可能阻碍您设备下载 Gemini Nano 的性能检查。
- 转到
chrome://flags/#prompt-api-for-gemini-nano
- 选择“Enabled”
- 重新启动 Chrome。
确认 Gemini Nano 的可用性
- 打开开发者工具,在控制台中发送
await window.ai.canCreateTextSession();
。如果返回“readily”,那么您就准备好了。- 否则,重新启动 Chrome 并继续以下步骤。
- 在 Chrome 中打开一个新标签页,转到
chrome://components
- 确认 Gemini Nano 是否可用或正在下载
- 您需要看到 Optimization Guide On Device Model 显示的版本大于或等于 2024.5.21.1031。
- 如果没有列出版本,请点击“Check for update”以强制下载。
- 一旦模型下载并达到上述版本以上,打开开发者工具,在控制台中发送 await window.ai.canCreateTextSession(); 。如果返回“readily”,那么您就准备好了。
- 否则,重新启动,等待一段时间,然后从步骤 1 重新开始。
- 如果仍然失败,请参阅故障排除部分。
开发者工具控制台调用大模型相关API
const canCreate = await window.ai.canCreateTextSession();
// canCreate 的值将是以下之一:
// * "readily": 模型可在设备上使用,因此创建会很快完成
// * "after-download": 模型在设备上不可用,但设备有能力,
// 因此创建会话将启动下载过程(可能需要一段时间)。
// * "no": 该设备不可用该模型。
if (canCreate !== "no") {
const session = await window.ai.createTextSession();
// 提示模型并等待整个结果返回。
const result = await session.prompt("给我写一首诗");
console.log(result);
// 提示模型并流式传输结果:
const stream = session.promptStreaming("给我写一首超长的诗");
for await (const chunk of stream) {
console.log(chunk);
}
}
在线演示
⚠️
需要你完成前面步骤、开启API
Chrome本地大模型在线演示
API 总览
示例代码可以参考开发者工具控制台调用大模型相关API
会话选项
每个会话可以通过 topK 和 temperature 进行定制。这些参数的默认值可以通过 window.ai.defaultTextSessionOptions()
返回。
终止会话
如果您不再需要会话,请调用 destroy()
以释放资源。当会话被销毁后,它将无法再使用,任何正在进行的执行将被中止。
await session.prompt(`
您是一位专门从事服装选择的友好且乐于助人的助手。
`);
session.destroy();
// 该 promise 将被拒绝,并解释会话已被销毁。
await session.prompt(`
今天我该穿什么?天气晴朗,我在 T 恤和 Polo 衫之间犹豫不决。
`);
控制序列
字符序列 <ctrl23>
是 Gemini Nano 的控制序列。它帮助模型理解模拟交互的回合以及何时应该响应。该序列应直接在提示中使用(有关详细信息,请参阅 Prompt 101 部分)。
目前,控制序列
<ctrl23>
由 Prompt API 自动添加到提示的末尾。然而,对于one shot[1]或few shots[2],最好在每个例子末尾添加控制序列
<ctrl23>
。请参阅这些示例。
异常
Prompt API 可能会从 AI 运行时收到错误。请参阅本部分以了解可能的错误及其如何映射到 DOMExceptions。
注意事项
canCreateTextSession()
的“after-download
”状态
“after-download
”状态和行为不受支持。API 不会触发模型下载。相反,Chrome 会触发下载,要么作为 chrome://flags
状态变化的一部分,要么因为其他设备上的 AI 功能。
流式传输
目前,promptStreaming()
返回的 ReadableStream
的块会逐步构建。
例如,以下代码记录的序列是 "Hello," "Hello world," "Hello world I am," "Hello world I am an AI."
for await (const chunk of stream) {
console.log(chunk);
}
这不是预期的行为。我们打算与平台上的其他流式 API 对齐,其中块是单个长流的连续部分。这意味着输出将是 "Hello", " world", " I am", " an AI" 的序列。
目前,为了实现预期行为,您可以实现以下代码:
let result = '';
let previousLength = 0;
for await (const chunk of stream) {
const newContent = chunk.slice(previousLength);
console.log(newContent);
previousLength = chunk.length;
result += newContent;
}
console.log(result);
会话持久性和克隆
尽管有一个名为 AITextSession 的对象,但尚未实现持久性。发送到模型的任何信息都不会保留,这意味着每次必须重新发送整个对话。换句话说,每次调用 prompt()
或 promptStreaming()
是独立的。
一旦实现了持久性,我们打算允许会话克隆。这意味着可以设置一个具有基本上下文的会话,并提示模型,而无需重复。
无痕模式和访客模式
Prompt API 的实现目前不支持无痕模式和访客模式。这是由于 AI 运行时层的依赖关系,并不打算作为永久限制。
企业
如果设置了 GenAILocalFoundationalModelSettings 为“不要下载模型”,则此 API 将不起作用。
Workers
最初,Prompt API 仅在专用 Workers中可用。以后可能会添加对 Shared Workers 和 Service Workers 的支持。