1. 简介
Prompt API 使网页能够直接提示由浏览器提供的语言模型。它提供了统一的 JavaScript API,抽象掉底层模型的具体细节(例如模板化或分词)。通过利用内置语言模型,它提供了本地处理敏感数据、离线使用、模型共享,以及与基于云或自带模型的方法相比降低成本等好处。
2. 依赖项
本规范依赖于 Infra 标准。[INFRA]
与 Web 平台的其余部分一样,在这些 API 中,人类语言通过 BCP 47 语言标签来标识,
例如 "ja"、"en-US"、"sr-Cyrl" 或
"de-CH-1901-x-phonebk-extended"。用于验证、规范化和语言标签匹配的具体算法来自 ECMAScript 国际化 API 规范,
而该规范又将其部分处理委托给 Unicode 区域设置数据标记语言(LDML)。[BCP47] [ECMA-402] [UTS35]。
这些 API 是预期由机器学习模型驱动的一系列 API 的一部分,它们共享通用的 API 表面习惯用法和规范模式。目前,这些共享部分的规范文本位于 Writing Assistance APIs § 5 共享基础设施,通用的隐私和安全考虑事项在 Writing Assistance APIs § 6 隐私考虑事项 和 Writing Assistance APIs § 7 安全考虑事项 中讨论。实现这些 API 需要实现该共享基础设施,并符合这些隐私和安全考虑事项。但它不要求实现或暴露实际的写作辅助 API。[WRITING-ASSISTANCE-APIS]
3. API
[Exposed =Window ,SecureContext ]interface :LanguageModel EventTarget {static Promise <LanguageModel >create (optional LanguageModelCreateOptions = {});options static Promise <Availability >availability (optional LanguageModelCreateCoreOptions = {}); // **EXPERIMENTAL**: 仅在扩展和实验性上下文中可用。options static Promise <LanguageModelParams ?>(); // 如果 role = "system",这些将抛出 "NotSupportedError" DOMExceptionparams Promise <DOMString >prompt (LanguageModelPrompt ,input optional LanguageModelPromptOptions = {} );options ReadableStream promptStreaming (LanguageModelPrompt ,input optional LanguageModelPromptOptions = {} );options Promise <undefined >append (LanguageModelPrompt ,input optional LanguageModelAppendOptions = {} );options Promise <double >measureContextUsage (LanguageModelPrompt ,input optional LanguageModelPromptOptions = {} );options readonly attribute double contextUsage ;readonly attribute unrestricted double contextWindow ;attribute EventHandler oncontextoverflow ; // **DEPRECATED**: 此方法仅在扩展上下文中可用。Promise <double >measureInputUsage (LanguageModelPrompt ,input optional LanguageModelPromptOptions = {} ); // **DEPRECATED**: 此属性仅在扩展上下文中可用。options readonly attribute double inputUsage ; // **DEPRECATED**: 此属性仅在扩展上下文中可用。readonly attribute unrestricted double inputQuota ; // **DEPRECATED**: 此属性仅在扩展上下文中可用。attribute EventHandler onquotaoverflow ; // **EXPERIMENTAL**: 仅在扩展和实验性上下文中可用。readonly attribute unsigned long topK ; // **EXPERIMENTAL**: 仅在扩展和实验性上下文中可用。readonly attribute float temperature ;Promise <LanguageModel >clone (optional LanguageModelCloneOptions = {}); };options LanguageModel includes DestroyableModel ; // **EXPERIMENTAL**: 仅在扩展和实验性上下文中可用。 [Exposed =Window ,SecureContext ]interface {LanguageModelParams readonly attribute unsigned long ;defaultTopK readonly attribute unsigned long ;maxTopK readonly attribute float ;defaultTemperature readonly attribute float ; };maxTemperature callback =LanguageModelToolFunction Promise <DOMString > (any ...); // 语言模型可以调用的工具调用描述。arguments dictionary {LanguageModelTool required DOMString ;name required DOMString ; // 输入参数的 JSON schema。description required object ; // 由用户代理代表语言模型调用的函数。inputSchema required LanguageModelToolFunction ; };execute dictionary { // 注:这两个具有自定义的越界处理行为,不在 IDL 层。 // 它们是 unrestricted double,以便允许 +Infinity 而不失败。 // **EXPERIMENTAL**: 仅在扩展和实验性上下文中可用。LanguageModelCreateCoreOptions unrestricted double ; // **EXPERIMENTAL**: 仅在扩展和实验性上下文中可用。topK unrestricted double ;temperature sequence <LanguageModelExpected >;expectedInputs sequence <LanguageModelExpected >;expectedOutputs sequence <LanguageModelTool >; };tools dictionary :LanguageModelCreateOptions LanguageModelCreateCoreOptions {AbortSignal ;signal CreateMonitorCallback ;monitor sequence <LanguageModelMessage >; };initialPrompts dictionary {LanguageModelPromptOptions object ;responseConstraint boolean =omitResponseConstraintInput false ;AbortSignal ; };signal dictionary {LanguageModelAppendOptions AbortSignal ; };signal dictionary {LanguageModelCloneOptions AbortSignal ; };signal dictionary {LanguageModelExpected required LanguageModelMessageType ;type sequence <DOMString >; }; // prompt() 方法及其他类似方法的参数languages typedef (sequence <LanguageModelMessage > // `[{ role: "user", content: [{ type: "text", value: providedValue }] }]` 的简写or DOMString );LanguageModelPrompt dictionary {LanguageModelMessage required LanguageModelMessageRole ; // DOMString 分支是 `[{ type: "text", value: providedValue }]` 的简写role required (DOMString or sequence <LanguageModelMessageContent >);content boolean =prefix false ; };dictionary {LanguageModelMessageContent required LanguageModelMessageType ;type required LanguageModelMessageValue ; };value enum {LanguageModelMessageRole ,"system" ,"user" };"assistant" enum {LanguageModelMessageType ,"text" ,"image" ,"audio" ,"tool-call" };"tool-response" typedef (ImageBitmapSource or AudioBuffer or BufferSource or DOMString );LanguageModelMessageValue
3.1. 创建
create(options) 方法步骤为:
-
返回在给定 options、"
language-model"、 验证并规范化语言模型选项、计算语言模型选项可用性、下载语言模型、初始化语言模型、创建语言模型对象 和 false 时,创建 AI 模型对象的结果。
LanguageModelCreateCoreOptions
options 时,验证并规范化语言模型选项,执行以下步骤。它们会就地改变
options,以规范化并去重语言标签;如果任何语言标签无效,则抛出异常。
-
如果 options["
expectedInputs"] 存在,则对 options["expectedInputs"] 的每个 expected 执行以下操作:-
如果 expected["
languages"] 存在,则在给定 expected 和 "languages" 时,验证并规范化语言标签。
-
-
如果 options["
expectedOutputs"] 存在,则对 options["expectedOutputs"] 的每个 expected 执行以下操作:-
如果 expected["
languages"] 存在,则在给定 expected 和 "languages" 时,验证并规范化语言标签。
-
-
如果 options["
initialPrompts"] 存在,则:-
令 expectedInputs 为 options["
expectedInputs"], 如果它存在;否则为一个空列表。 -
令 expectedInputTypes 为在给定 expectedInputs 时,获取预期内容类型的结果。
-
在给定 options["
initialPrompts"]、 expectedInputTypes 和 false 时,执行验证并规范化提示。
-
LanguageModelCreateCoreOptions
options 时,下载语言模型:
LanguageModelCreateOptions
options 时,初始化语言模型:
-
令 availability 为在给定 options 时,计算语言模型选项可用性的结果。
-
如果 availability 为 null 或
unavailable, 则返回一个 DOMException 错误信息,其 name 为 "NotSupportedError", 并且其 details 包含适当的详细信息。
-
-
对支撑用户代理提示能力的 AI 模型执行任何必要的初始化操作。
这可能包括将适当的模型以及支持 options 所需的任何微调加载到内存中。
-
如果 options["
initialPrompts"] 存在,则:-
令 expectedInputs 为 options["
expectedInputs"], 如果它存在;否则为一个空列表。 -
令 expectedInputTypes 为在给定 expectedInputs 时,获取预期内容类型的结果。
-
令 initialMessages 为在给定 options["
initialPrompts"]、 expectedInputTypes 和 false 时,验证并规范化提示的结果。 -
将 initialMessages 加载到模型的上下文窗口中。
-
-
-
如果初始化失败是因为加载 options 的过程用尽了模型的上下文窗口,则:
-
如果初始化因任何其他原因失败,则返回一个 DOMException 错误信息,其 name 为 "
OperationError", 并且其 details 包含适当的详细信息。 -
返回 null。
LanguageModelCreateOptions
options 时,创建语言模型对象:
-
令 contextWindowSize 为用户代理可用于此模型的上下文窗口量。(该值是实现定义的,并且如果除了例如用户内存限制或 JavaScript 字符串限制之外没有特定限制,则可以为 +∞。)
-
令 initialMessages 为空的
LanguageModelMessage列表。 -
令 initialMessagesUsage 为 0。
-
如果 options["
initialPrompts"] 存在,则:-
令 expectedInputs 为 options["
expectedInputs"], 如果它存在;否则为一个空列表。 -
令 expectedInputTypes 为在给定 expectedInputs 时,获取预期内容类型的结果。
-
将 initialMessages 设置为在给定 options["
initialPrompts"]、 expectedInputTypes 和 false 时,验证并规范化提示的结果。 -
将 initialMessagesUsage 设置为在给定 initialMessages 和 options["
signal"] 时,测量语言模型上下文使用量的结果。
-
-
返回一个新的
LanguageModel对象,该对象在 realm 中创建,并具有- 初始消息
-
initialMessages
- top K
- temperature
-
options["
temperature"], 如果它存在;否则为一个实现定义的值 - 预期输入
-
options["
expectedInputs"], 如果它存在;否则为一个空列表 - 预期输出
-
options["
expectedOutputs"], 如果它存在;否则为一个空列表 - 工具
- 上下文窗口大小
-
contextWindowSize
- 当前上下文使用量
-
initialMessagesUsage
3.2. 可用性
availability(options) 方法步骤为:
-
返回在给定 options、"
language-model"、 验证并规范化语言模型选项,以及 计算语言模型选项可用性时,计算 AI 模型可用性的结果。
LanguageModelCreateCoreOptions
options 时,计算语言模型选项可用性,执行以下步骤。它们返回一个 Availability
值或 null,并且它们会就地改变 options,以将语言标签更新为其最佳匹配。
-
令 availability 为语言模型非选项可用性。
-
如果 availability 为 null,则返回 null。
-
令 availabilities 为一个包含 availability 的列表。
-
令 inputPartition 为在给定以该语言提示语言模型这一目的时,获取语言可用性分区的结果。
-
令 outputPartition 为在给定以该语言生成语言模型输出这一目的时,获取语言可用性分区的结果。
-
如果 options["
expectedInputs"] 存在,则对 options["expectedInputs"] 的每个 expected 执行以下操作: -
如果 options["
expectedOutputs"] 存在,则对 options["expectedOutputs"] 的每个 expected 执行以下操作: -
返回在给定 availabilities 时的最小可用性。
Availability
值或 null。
-
如果在尝试确定用户代理是否能够支持提示语言模型时出现某些错误,而用户代理认为该错误是暂时性的(因此重新查询可能会停止产生此类错误),则返回 null。
-
如果用户代理认为它将能够支持提示语言模型,但只能在完成已经进行中的下载之后,则返回 "
downloading"。 -
如果用户代理认为它将能够支持提示语言模型,但只能在执行当前未进行的下载之后,则返回 "
downloadable"。 -
否则,返回 "
unavailable"。
LanguageModelMessageType
type 和一个 boolean isInput 时,语言模型内容类型可用性由以下步骤给出。它们返回一个 Availability
值。
-
如果用户代理当前支持 type 在 isInput 为 true 时作为输入,或在 isInput 为 false 时作为输出,则返回 "
available"。 -
如果用户代理认为它将能够支持 type 作为这种形式,但只能在完成已经进行中的下载之后,则返回 "
downloading"。 -
如果用户代理认为它将能够支持 type 作为这种形式,但只能在执行当前未进行的下载之后,则返回 "
downloadable"。 -
否则,返回 "
unavailable"。
3.3. LanguageModel
类
每个 LanguageModel
都有一个初始消息,即一个 LanguageModelMessage
列表,
在创建期间设置。
每个 LanguageModel
都有一个 top K,即一个 unsigned long,在创建期间设置。
每个 LanguageModel
都有一个 temperature,即一个 float,在创建期间设置。
每个 LanguageModel
都有一个预期输入,即一个 LanguageModelExpected
列表,
在创建期间设置。
每个 LanguageModel
都有一个预期输出,即一个 LanguageModelExpected
列表,
在创建期间设置。
每个 LanguageModel
都有一个 tools,即一个 LanguageModelTool
列表,
在创建期间设置。
每个 LanguageModel
都有一个上下文窗口大小,即一个 unrestricted double,在创建期间
设置。
每个 LanguageModel
都有一个当前上下文使用量,即一个 double,初始为 0。
contextUsage getter 步骤是返回 this 的当前上下文使用量。
inputUsage getter 步骤是返回 this 的当前上下文使用量。
contextWindow getter 步骤是返回 this 的上下文窗口大小。
inputQuota getter 步骤是返回 this 的上下文窗口大小。
topK getter 步骤是返回 this 的 top K。
temperature getter 步骤是返回 this 的 temperature。
以下是必须作为事件处理器 IDL 属性,由所有 LanguageModel
对象支持的事件处理器(及其对应的事件处理器事件类型):
| 事件处理器 | 事件处理器事件类型 |
|---|---|
oncontextoverflow
| contextoverflow
|
onquotaoverflow
| quotaoverflow
|
prompt(input, options) 方法步骤为:
-
令 responseConstraint 为 options["
responseConstraint"], 如果它存在;否则为 null。 -
令 omitResponseConstraintInput 为 options["
omitResponseConstraintInput"]。 -
令 operation 为一个算法步骤,它接受参数 chunkProduced、 done、error 和 stopProducing,并执行以下 步骤:
-
返回在给定 this、options 和 operation 时,获取聚合的 AI 模型结果的结果。
promptStreaming(input, options)
方法步骤为:
-
令 responseConstraint 为 options["
responseConstraint"], 如果它存在;否则为 null。 -
令 omitResponseConstraintInput 为 options["
omitResponseConstraintInput"]。 -
令 operation 为一个算法步骤,它接受参数 chunkProduced、 done、error 和 stopProducing,并执行以下 步骤:
-
返回在给定 this、options 和 operation 时,获取流式 AI 模型结果的结果。
append(input, options) 方法
步骤为:
-
令 operation 为一个算法步骤,它接受参数 chunkProduced、 done、error 和 stopProducing,并执行以下 步骤:
chunkProduced 从不会被调用,因为预填充算法不会 生成块。
-
返回在给定 this、options 和 operation 时,获取聚合的 AI 模型结果的结果。
measureContextUsage(input, options)
方法步骤为:
-
如果 options["
omitResponseConstraintInput"] 为 true,且 options["responseConstraint"] 不存在,则抛出一个 "TypeError"DOMException。 -
令 messages 为在给定 input、expectedInputTypes 和 false 时,验证并规范化提示的结果。
-
如果 options["
responseConstraint"] 存在且不为 null,并且 options["omitResponseConstraintInput"] 为 false,则实现可以向 messages 插入一个实现定义的LanguageModelMessage来引导模型的行为。 -
令 measureUsage 为一个算法步骤,它接受参数 stopMeasuring, 并返回在给定 messages 和 stopMeasuring 时,测量语言模型上下文 使用量的结果。
-
返回在给定 this、options 和 measureUsage 时,测量 AI 模型输入使用量的结果。
measureInputUsage(input, options)
方法步骤为:
-
返回在给定 input 和 options 时,运行
measureContextUsage()方法步骤的结果。
3.3.1. 预填充和生成
-
一个
LanguageModelmodel, -
一个
LanguageModelPromptinput, -
一个 boolean omitResponseConstraintInput,
-
一个 object-or-null responseConstraint,
-
一个 algorithm-or-null error,其接受错误信息且不返回任何内容,以及
-
一个 algorithm-or-null stopPrefilling,其不接受参数并返回一个 boolean,
执行以下步骤:
-
令 messages 为在给定 input、expectedInputTypes,以及当 model 的当前上下文使用量大于 0 时为 true、否则为 false 时,验证并规范化提示的结果。
如果这抛出异常 e,则:
-
如果 error 不为 null,则在给定一个 DOMException 错误信息时执行 error,该错误信息的 name 是 e 的 name,且其 details 包含适当的详细信息。
-
返回 false。
-
-
如果 responseConstraint 不为 null 且 omitResponseConstraintInput 为 false, 则实现可以向 messages 插入一个实现定义的
LanguageModelMessage来引导模型的行为。 -
令 requested 为在给定 messages 和 stopPrefilling 时,测量语言模型上下文使用量的结果。
-
如果 requested 为 null,则返回 false。
-
如果 requested 是错误信息,则:
-
如果 error 不为 null,则在给定 requested 时执行 error。
-
返回 false。
-
-
断言:requested 是一个数字。
-
以实现定义的方式,更新底层模型的内部状态以包含 messages。
该过程应使用 model 的初始 消息、model 的top K、model 的temperature、 model 的预期输入、model 的预期输出,以及 model 的tools 来引导状态如何更新。
该过程必须符合 § 4 隐私考虑事项 和 § 5 安全考虑事项 中给出的指导。
如果在此过程中 stopPrefilling 返回 true,则返回 false。
如果预填充期间发生错误:
-
令该错误按照 § 3.3.4 错误 中的指导表示为错误信息 errorInfo。
-
如果 error 不为 null,则在给定 errorInfo 时执行 error。
-
返回 false。
-
-
返回 true。
-
一个
LanguageModelmodel, -
一个 object-or-null responseConstraint,
-
一个 algorithm-or-null chunkProduced,其接受一个字符串且不返回 任何内容,
-
一个 algorithm-or-null done,其不接受参数且不返回任何内容,
-
一个 algorithm-or-null error,其接受错误信息且不返回任何内容,以及
-
一个 algorithm-or-null stopProducing,其不接受参数并返回一个 boolean,
执行以下步骤:
-
以实现定义的方式,在遵循以下准则的前提下,开始基于语言模型 当前内部状态生成响应的过程。
该过程应使用 model 的初始 消息、model 的top K、model 的temperature、 model 的预期输入、model 的预期输出、model 的tools,以及 responseConstraint 来引导 模型的行为。
提示过程必须符合 § 4 隐私 考虑事项 和 § 5 安全考虑事项 中给出的指导。
如果 model 的tools 非空,则模型可以通过调用其 execute 函数来使用所提供的 工具。
-
当 true 时循环:
-
等待下一个响应数据块被生成,等待过程完成,或等待调用 stopProducing 的结果变为 true。
-
如果成功生成了这样的块:
-
令其表示为一个字符串 chunk。
-
如果 chunkProduced 不为 null,则在给定 chunk 时执行 chunkProduced。
-
-
否则,如果过程已经完成:
-
如果 done 不为 null,则执行 done。
-
中断。
-
-
否则,如果 stopProducing 返回 true,则中断。
-
否则,如果提示期间发生错误:
-
令该错误按照 § 3.3.4 错误 中的指导表示为错误信息 errorInfo。
-
如果 error 不为 null,则在给定 errorInfo 时执行 error。
-
中断。
-
-
3.3.2. 使用量
-
一个由
LanguageModelMessagemessages 组成的列表, -
一个算法 stopMeasuring,其不接受参数并返回一个 boolean,
执行以下步骤:
-
令 inputToModel 为为了在给定 messages 时进行预填充而会发送到底层模型的实现定义的输入。
这通常会由所有输入的编码组成,可能还带有提示工程或其他实现定义的包装。
如果在此过程中 stopMeasuring 开始返回 true,则返回 null。
如果在此过程中发生错误,则按照 § 3.3.4 错误 中的指导返回适当的 DOMException 错误信息。
-
返回在将 inputToModel 提供给底层模型时表示它所需的上下文使用量。确切的计算过程是实现定义的,但受以下约束限制。
返回的上下文使用量必须是非负且有限的。它应大致与 inputToModel 中的数据量成比例。
这可能是在语言模型分词方案中表示输入所需的 token 数,也可能 与数据的字节大小相关。
如果在此过程中 stopMeasuring 开始返回 true,则改为返回 null。
如果在此过程中发生错误,则改为按照 § 3.3.4 错误 中的指导返回适当的DOMException 错误信息。
3.3.3. 选项
LanguageModelExpected
expectedContents 组成的列表时,获取
预期内容类型:
LanguageModelPrompt
input、一个由 LanguageModelMessageType
expectedTypes 组成的列表,以及一个 boolean hasAppendedInput 时,验证并规范化提示,执行以下步骤。返回
值将是一个非空的、处于“完整形式”的 LanguageModelMessage
列表。
-
如果 input 是一个字符串,则返回 « «[ "
role" → "user", "content" → « «[ "type" → "text", "value" → input ]» », "prefix" → false ]» »。 -
断言:input 是一个由
LanguageModelMessage组成的列表。 -
如果 input 是一个空列表,则返回 « «[ "
role" → "user", "content" → « «[ "type" → "text", "value" → "" ]» », "prefix" → false ]» »。 -
令 messages 为一个空的
LanguageModelMessage列表。 -
对 input 的每个 message 执行以下操作:
-
如果 message["
content"] 是一个字符串,则将 message 设置为 «[ "role" → message["role"], "content" → « «[ "type" → "text", "value" → message["content"] ]» », "prefix" → message["prefix"] ]»。 -
如果 message["
prefix"] 为 true,则:-
如果 message["
role"] 不是 "assistant", 则抛出一个 "SyntaxError"DOMException。 -
如果 message 不是 messages 中的最后一项,则抛出一个 "
SyntaxError"DOMException。
-
-
如果 message["
role"] 是 "system", 则:-
如果 hasAppendedInput 为 true,则抛出一个 "
TypeError"DOMException。
-
-
对 message["
content"] 的每个 content 执行以下操作:-
如果 message["
role"] 是 "assistant" 且 content["type"] 不是 "text", 则抛出一个 "NotSupportedError"DOMException。 -
如果 content["
type"] 是 "text" 且 content["value"] 不是一个字符串,则抛出一个 "TypeError"DOMException。 -
如果 content["
type"] 是 "image", 则:-
如果 expectedTypes 不包含 "
image", 则抛出一个 "NotSupportedError"DOMException。 -
如果 content["
value"] 既不是ImageBitmapSource也不是BufferSource, 则抛出一个 "TypeError"DOMException。
-
-
如果 content["
type"] 是 "audio", 则:-
如果 expectedTypes 不包含 "
audio", 则抛出一个 "NotSupportedError"DOMException。 -
如果 content["
value"] 不是AudioBuffer、BufferSource或Blob, 则抛出一个 "TypeError"DOMException。
-
-
-
令 contentWithContiguousTextCollapsed 为空的
LanguageModelMessageContent列表。 -
令 lastTextContent 为 null。
-
对 message["
content"] 的每个 content 执行以下操作:-
-
如果 lastTextContent 为 null:
-
将 content 追加到 contentWithContiguousTextCollapsed。
-
将 lastTextContent 设置为 content。
-
-
否则,将 lastTextContent["
value"] 设置为 lastTextContent["value"] 与 content["value"] 的连接。不会添加空格或其他字符。因此,« «[ "
type" → "text", "foo" ]», «[ "type" → "text", "bar" ]» » 被规范化为 « «[ "type" → "text", "foobar" ]»。
-
-
否则:
-
将 content 追加到 contentWithContiguousTextCollapsed。
-
将 lastTextContent 设置为 null。
-
-
将 message["
content"] 设置为 contentWithContiguousTextCollapsed。
-
-
将 message 追加到 messages。
-
将 hasAppendedInput 设置为 true。
-
-
如果 messages 为空, 则抛出一个 "
SyntaxError"DOMException。 -
返回 messages。
3.3.4. 错误
当提示失败时,以下可能的原因可以暴露给 Web 开发者。此表列出了可能的 DOMException
name,以及实现应使用它们的情形:
DOMException
name
| 场景 |
|---|---|
"NotAllowedError"
|
提示被用户选择或用户代理策略禁用。 |
"NotReadableError"
|
模型输出被用户代理过滤,例如因为它被检测为有害、不准确或无意义。 |
"NotSupportedError"
|
要处理的输入使用的是用户代理不支持的语言,或在调用 模型输出最终使用了用户代理不支持的语言(例如,因为用户代理尚未对该输出 语言执行足够的质量控制测试)。 |
"UnknownError"
|
所有其他场景,包括用户代理认为它无法提示模型,同时也无法满足 § 4 隐私考虑事项 或 § 5 安全考虑事项 中给出的要求。或者,如果用户代理不愿披露失败原因。 |
此表没有给出 prompt API 可以暴露的完整异常列表。它只包含那些可能来自某些实现定义的步骤的异常。
LanguageModel
model 和一个 LanguageModelCloneOptions
options 时,克隆语言
模型:
-
令 global 为 model 的相关全局对象。
-
如果 global 的关联 Document 不是完全活动的,则返回一个被拒绝的 promise,其拒绝原因为一个 "
InvalidStateError"DOMException。 -
令 compositeSignal 为在给定 signals 并使用
AbortSignal和 model 的相关 realm 时,创建依赖中止信号的结果。 -
如果 compositeSignal 已中止,则返回一个被拒绝的 promise,其拒绝原因为 compositeSignal 的中止原因。
-
令 abortedDuringOperation 为 false。
-
向 compositeSignal 添加以下中止步骤:
-
并行:
-
-
如果 abortedDuringOperation 为 true,则返回。
-
令 clonedModel 为一个新的
LanguageModel对象,其具有: -
以实现定义的方式, 将任何其他状态从 model 复制到 clonedModel。
-
如果复制操作失败:
-
以一个 "
OperationError"DOMException拒绝 promise。 -
返回。
-
-
以 clonedModel 解决 promise。
-
-
-
返回 promise。
3.4. 权限策略集成
对 prompt API 的访问受策略控制特性 "language-model" 限制,该特性具有
'self'
的默认允许列表。
4. 隐私考虑事项
有关 prompt API 的隐私考虑事项的讨论,请参见 Writing Assistance APIs § 6 隐私考虑事项。如 § 2 依赖项 所述,该文本是为适用于共享相同基础设施的所有 API 而编写的。
5. 安全考虑事项
有关 prompt API 的安全考虑事项的讨论,请参见 Writing Assistance APIs § 7 安全考虑事项。如 § 2 依赖项 所述,该文本是为适用于共享相同基础设施的所有 API 而编写的。