通过


使用校对 API 更正语法和拼写

校对 API 是一种实验性 Web API,它允许你通过网站或浏览器扩展的 JavaScript 代码使用内置于 Microsoft Edge 中的 SLM) (小型语言模型来更正文本中的语法、拼写和标点错误。

有关校对 API 的介绍性信息,请参阅 Proofreader API Explainer

详细内容:

校对器 API 的可用性

从版本 142 开始,校对 API 在 Microsoft Edge Canary 或开发频道中以开发人员预览版的形式提供。

校对 API 进行优化,可更正文本内容中的语法、拼写和标点错误。 若要详细了解这些 API 可能无法提供的更多自定义提示工程方案的替代方法,请参阅 使用提示 API 提示内置语言模型

确定要使用的 API

若要在网站和浏览器扩展中利用 AI 功能,还可以使用以下方法:

校对 API 使用小型语言模型 (SLM) ,该模型在同一设备上运行,在该设备上使用模型的输入和输出 (即本地) 。 与基于云的解决方案相比,这具有以下优势:

  • 降低成本: 使用云 AI 服务不产生任何费用。

  • 网络独立性: 除了初始模型下载之外,提示模型时不会有网络延迟,并且当设备脱机时也可以使用模型。

  • 改进的隐私: 输入到模型的数据永远不会离开设备,也不会收集 (例如) 训练 AI 模型。

校对 API 使用由 Microsoft Edge 提供并内置于浏览器中的模型,该模型与自定义本地解决方案(例如基于 WebGPU、WebNN 或 WebAssembly 的解决方案)相较,具有其他优势:

  • 共享一次性成本: 首次调用 API 时,将下载浏览器提供的模型,然后在浏览器中运行的所有网站之间共享该模型,从而降低用户和开发人员的网络成本。

  • 简化 Web 开发人员的用法: 内置模型可以使用简单的 Web API 来运行,不需要 AI/ML 专业知识或使用第三方框架。

Phi-4-mini 模型

校对 API 使用内置于 Microsoft Edge 中的 Phi-4-mini 模型。 Phi-4-mini 是一种功能强大的小语言模型,擅长于基于文本的任务。 若要了解有关 Phi-4-mini 及其功能的详细信息,请参阅 microsoft/Phi-4-mini-指令中的模型卡。

免责声明

与其他语言模型一样,Phi 系列模型的行为方式可能不公平、不可靠或冒犯性。 若要了解详细信息,请参阅 负责任 AI 注意事项

硬件要求

校对 API 开发人员预览版适用于具有硬件功能的设备,这些设备可生成小型语言模型 (SLM) 具有可预测的质量和延迟的输出。

校对 API 具有以下要求:

  • 作系统:Windows 10 或 11 以及 macOS 13.3 或更高版本。

  • 存储: 包含 Edge 配置文件的卷上至少有 20 GB 可用。 如果可用存储空间低于 10 GB,则将删除该模型,以确保其他浏览器功能有足够的空间正常运行。

  • GPU: 5.5 GB 或更多 VRAM。

  • 网络: 无限制的数据计划或非计量连接。 如果使用按流量计费的连接,则不会下载模型。

若要检查设备是否支持校对 API 开发人员预览版,请参阅下面的启用校对器 API 并检查设备性能类。

由于校对 API 的实验性,你可能会发现特定硬件配置存在问题。 如果发现特定硬件配置存在问题,请在 MSEdgeExplainers 存储库 中打开新问题 来提供反馈。

模型可用性

网站首次调用内置 AI API 时,需要初始下载模型。 创建新的校对 API 会话时,可以使用“监视器”选项监视模型下载。 请参阅下面的 监视模型下载进度

启用校对 API

若要在 Microsoft Edge 中使用任何校对 API,请执行以下作:

  1. 请确保使用最新版本的 Microsoft Edge Canary 或 Dev (版本 142 或更高版本) 。 请参阅 成为Microsoft Edge 预览体验成员

  2. 在 Microsoft Edge Canary 或 Dev 中,打开一个新选项卡或窗口,然后转到 edge://flags

  3. 在搜索框中,在页面顶部输入 适用于 Phi mini 的校对 API

    筛选页面以显示匹配标志。

  4. 选择“适用于 Phi 的校对 API”迷你标志旁边的“已启用”

    浏览器的“标志”页

  5. (可选)若要在本地记录可能对调试问题有用的信息,还可以启用 “启用设备 AI 模型调试日志” 标志。

  6. Microsoft Edge Canary 或 Dev 重启。

  7. 若要检查设备是否满足校对 API 开发人员预览版的硬件要求,请打开一个新选项卡,转到 edge://on-device-internals,然后检查设备性能类值。

    如果设备性能类为 “高 ”或“更高”,则设备应支持校对器 API。 如果继续发现问题,请 提交新问题

查看工作示例

若要查看校对 API 的运行情况,并检查使用这些 API 的现有代码,请执行以下作:

  1. 如上所述,启用校对器 API

  2. 在 Microsoft Edge Canary 或 Dev 浏览器中,打开选项卡或窗口并转到 校对 API场

  3. 在顶部的信息横幅中,检查状态。 状态最初为 “设备内 API”和“模型下载”:

    显示模型下载进度的状态指示器

    下载模型后,信息横幅显示 “设备上的 API 和可用模型”,指示可以使用 API 和模型:

    显示消息的信息横幅:设备 API 和模型就绪。

    如果模型未开始下载,请重启Microsoft Edge,然后重试。

    只有满足某些硬件要求的设备才支持校对器 API。 有关详细信息,请参阅上面的 硬件要求

  4. (可选)更改页面中的内容和设置。 例如,修改文本进行校对,或更改预期的输入语言。

  5. 单击页面底部的 “校对 ”按钮。

    输出在页面的响应部分中生成:

    “校对程序”演示页,其中包含设置和“校对”按钮

另请参阅:

  • /built-in-ai/ - 内置 AI场演示的自述文件和源代码。

使用校对 API

检查 API 是否已启用

在网站代码中使用校对器 API 之前,检查通过测试是否存在 对象来启用 APIProofreader

if (!Proofreader) {
  // The Proofreader API is not available.
}

检查是否可以使用模型

仅当设备支持运行模型时,以及Microsoft Edge 下载语言模型和模型运行时后,才能使用校对器 API。

若要检查是否可以使用 API,请使用 availability() 方法:

const availability = await Proofreader.availability();

if (availability == "unavailable") {
  // The model is not available.
}

if (availability == "downloadable" || availability == "downloading") {
  // The model can be used, but it needs to be downloaded first.
}

if (availability == "available") {
  // The model is available and can be used.
}

创建新会话

创建会话会指示浏览器在内存中加载语言模型,以便可以使用它。 在使用校对 API 更正文本之前,请使用 create() 方法创建新会话:

// Create a Proofreader session.
const session = await Proofreader.create();

若要自定义模型会话,可以将选项传递给 create() 方法:

// Create a Proofreader session with options.
const session = await Proofreader.create(options);

下面列出了可用选项:

选项 说明
monitor 用于监视模型下载进度的函数。 请参阅下面的 监视模型下载进度
expectedInputLanguages 字符串数组。 每个字符串都是输入文本应包含的语言。 例如:["en", "es"]
监视模型下载进度

可以使用 选项跟踪模型下载 monitor 进度。 当模型尚未完全下载到要使用的设备上时,这非常有用,以通知用户等待。

// Create a Proofreader session with the monitor option to monitor the model
// download.
const session = await Proofreader.create({
  monitor: m => {
    // Use the monitor object argument to add an listener for the 
    // downloadprogress event.
    m.addEventListener("downloadprogress", event => {
      // The event is an object with the loaded and total properties.
      if (event.loaded == event.total) {
        // The model is fully downloaded.
      } else {
        // The model is still downloading.
        const percentageComplete = (event.loaded / event.total) * 100;
      }
    });
  }
});

运行校对 API

若要使用校对器 API 生成修订的文本,请在创建相应的模型会话后,使用 session.proofread() 方法。 此方法返回一个承诺,该承诺在校对器 API 完成生成更正文本后解析。

// Create a Proofreader session.
const session = await Proofreader.create();

// Correct the text and wait for the result.
const result = await session.proofread(textToBeCorrected);

// Use the result.
console.log(result);

使用校对 API 的结果

方法 session.proofread() 返回一个承诺,该承诺解析为具有以下属性的 对象:

属性 说明
correctedInput 更正的文本,作为字符串。
corrections 更正对象的数组。

更正对象具有以下属性:

属性 说明
startIndex 已更正的输入文本中第一个字符的索引。
endIndex 输入文本中已更正的最后一个字符的索引。
correction 替换错误文本的字符串。

以下示例演示如何使用 方法的结果 session.proofread()

// Create a Proofreader session.
const session = await Proofreader.create();

// Correct the text and wait for the result.
const result = await session.proofread(textToBeCorrected);

// Log the corrected text.
console.log("Corrected text:", result.correctedInput);

// Log each correction.
result.corrections.forEach(({ startIndex, endIndex, correction }) => {
  const initialText = textToBeCorrected.slice(startIndex, endIndex);
  console.log(`Replaced text "${initialText}" (index ${startIndex} to ${endIndex}) with "${correction}"`);
});

销毁会话

销毁会话,让浏览器知道你不再需要语言模型,以便可以从内存中卸载该模型。

可以通过两种不同的方式销毁会话:

  • 通过使用 destroy() 方法。
  • 通过使用 AbortController
使用 destroy () 方法销毁会话

可以使用 session.destroy() 方法销毁校对程序会话:

const session = await Proofreader.create();

// Later, destroy the session by using the destroy method.
session.destroy();
使用 AbortController 销毁会话

或者,可以创建对象 AbortController 、创建 Proofreader 会话,然后调用 abort()

// Create an AbortController object.
const controller = new AbortController();

// Create a Proofreader session and pass the 
// AbortController signal object by using the signal option.
const session = await Proofreader.create({ signal: controller.signal });

// Later, such as when the user interacts with the UI, destroy the session by
// calling the abort() function of the AbortController object.
controller.abort();

发送反馈

我们非常有兴趣了解你打算使用校对器 API 的方案范围、API 或语言模型的任何问题,以及新的特定于任务的 API 是否有用。

若要发送有关方案和要实现的任务的反馈,请向 校对 API 反馈问题添加注释。

如果在改用 API 时发现任何问题,请在存储库中报告。

还可以在 W3C Web 机器学习工作组存储库中参与有关校对 API 设计的讨论。

另请参阅