共用方式為


使用 Proofreader API 正確文法與拼字

校對者 API 是一個實驗性的網頁 API,允許你使用內建於 Microsoft Edge 的小型語言模型 (SLM) ,從你網站或瀏覽器擴充功能的 JavaScript 程式碼中修正文法、拼字和標點符號錯誤。

關於校對者 API 的入門資訊,請參閱校對者 API 說明。

詳細內容:

校對 API 的可用性

校對者 API 自 142 版起,已在 Microsoft Edge Canary 或開發者頻道中以開發者預覽版形式提供。

校對 API 優化用於修正文法、拼寫及標點符號錯誤。 想了解更多關於這些 API 可能無法提供的自訂提示工程替代方案,請參閱 Prompt API 內建語言模型 Prompt

決定要使用哪個 API

為了在網站和瀏覽器擴充功能中發揮 AI 功能,你也可以採用以下方法:

校對者 API 使用一個小型語言模型 (SLM) ,運行於同一裝置上,該裝置同時使用該模型的輸入與輸出, (本地) 。 與雲端解決方案相比,這有以下優點:

  • 降低成本: 使用雲端 AI 服務是沒有費用的。

  • 網路獨立性: 除了初始模型下載外,提示模型時不會有網路延遲,且該模型在裝置離線時也能使用。

  • 提升隱私: 輸入到模型的資料不會離開裝置,也不會被收集 (用來訓練 AI 模型) 。

校對者 API 採用 Microsoft Edge 提供的模型,並內建於瀏覽器中,這比基於 WebGPU、WebNN 或 WebAssembly 的自訂本地解決方案有額外優勢:

  • 一次性共擔費用: 瀏覽器提供的模型會在首次呼叫 API 時下載,然後模型會被所有在瀏覽器中執行的網站共享,降低使用者與開發者的網路成本。

  • 網頁開發者的簡化使用方法: 內建模型可透過簡單的網頁 API 運行,無需 AI/ML 專業知識或第三方框架。

Phi-4-mini 型號

校對者 API 採用內建於 Microsoft Edge 的 Phi-4-mini 模型。 Phi-4-mini 是一個強大的小型語言模型,擅長文字任務。 欲了解更多 Phi-4-mini 及其功能,請參閱 microsoft/Phi-4-mini-instruct 的型號卡。

免責聲明

像其他語言模型一樣,Phi 家族模型可能表現得不公平、不可靠或冒犯。 欲了解更多,請參閱 負責任的人工智慧考量

硬體需求

校對者 API 開發者預覽版旨在適用於具備硬體能力,能產生小語言模型 (SLM) 輸出且品質與延遲可預測的裝置。

校對者 API 有以下要求:

  • 作業系統:Windows 10 或 11,以及 macOS 13.3 或更新版本。

  • 儲存: 至少要在包含你 Edge 設定檔的磁碟區有 20GB 空間。 若可用儲存空間低於 10 GB,該型號將被刪除,以確保其他瀏覽器功能有足夠空間運作。

  • 顯示卡: 5.5GB VRAM 或以上。

  • 網絡: 無限數據方案或免計費連線。 如果使用計量連接,該型號不會被下載。

要確認你的裝置是否支援 Proofreader API 開發者預覽版,請參閱下方 的「啟用校對者 API 」並檢查你的裝置效能類別。

由於校對 API 屬於實驗性質,你可能會在特定硬體配置上觀察到問題。 如果你在特定硬體配置上發現問題,請透過在 MSEdgeExplainers 倉庫 開啟新問題 來提供回饋。

模型可用性

網站首次呼叫內建 AI API 時,必須先下載模型。 你可以在建立新的校對者 API 會話時,使用監控選項來監控模型下載。 詳見下方 「監控模型下載進度」。

啟用校對者 API

要使用 Microsoft Edge 中的任何 Proofreader API:

  1. 請確保你使用的是最新版本的 Microsoft Edge Canary,或是 Dev (版本 142 或更新的) 。 請參閱 成為 Microsoft Edge 內部人士

  2. 在 Microsoft Edge、Canary 或 Dev 中,開啟一個新分頁或視窗,然後前往 edge://flags

  3. 在頁面頂端的搜尋框輸入 Proofreader API for Phi mini

    頁面會經過篩選以顯示匹配的旗標。

  4. Phi mini 標記的校對 API 旁選擇啟用

    瀏覽器的旗標頁面

  5. 可選擇性地,為了在本地記錄可能對除錯問題有用的資訊,也啟用 裝置 AI 模型除錯日誌 旗標。

  6. 重新啟動 Microsoft Edge Canary 或 Dev。

  7. 要檢查你的裝置是否符合 Proofreader API 開發者預覽版的硬體需求,請開啟新分頁,前往 edge://on-device-internals,並檢查 裝置效能類別 值。

    如果你的裝置 效能等級很高 或更高,理應支援 Proofreader API。 如果你持續發現問題,請重新申請。

請參考工作範例

想看看 Proofreader API 的運作,並檢視使用這些 API 的現有程式碼:

  1. 啟用上述的校對者 API

  2. 在 Microsoft Edge Canary 或開發者瀏覽器中,打開分頁或視窗,進入 校對 API 遊玩區

  3. 在頂端的資訊橫幅中,請查看狀態。 狀態最初顯示為裝置 上 API 及型號下載中:

    狀態指示器顯示模型下載進度

    下載模型後,資訊橫幅會顯示「 裝置上 API」及可用型號,表示 API 與型號可使用:

    資訊橫幅顯示訊息:裝置上 API 與型號已準備好。

    如果模型無法開始下載,請重新啟動 Microsoft Edge 並重新嘗試。

    校對 API 僅支援符合特定硬體需求的裝置。 更多資訊請參閱上方 的硬體需求

  4. 可選擇性地更改頁面內容和設定。 例如,修改文字以校對,或更改預期輸入語言。

  5. 點擊頁面底部的 校對 按鈕。

    輸出會在頁面的回應區產生:

    校對器示範頁面,包含設定和校對按鈕

另請參閱:

  • /built-in-ai/ - 內建 AI 遊樂場示範的說明與原始碼。

使用 Proofreader API

檢查 API 是否啟用

在使用網站程式碼中的校對者 API 前,請先檢查該 API 是否啟用,並測試該物件的存在 Proofreader

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

確認該模型是否可用

校對者 API 僅在裝置支援執行模型,且語言模型與執行時由 Microsoft Edge 下載後才能使用。

要檢查該 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.
}

建立新工作階段

建立會話會指示瀏覽器將語言模型載入記憶體,以便使用。 在你使用 Proofreader 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

要使用 Proofreader 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);

使用 Proofreader 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 物件,建立一個 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();

傳送意見反應

我們非常想知道你打算在哪些情境下使用 Proofreader API,API或語言模型存在問題,以及新的任務專用API是否有用。

若想對您的情境及想達成的任務提供回饋,請在 校對 API 回饋問題中留言。

如果你發現使用 API 時有任何問題,請向倉庫回報。

你也可以在 W3C Web Machine Learning 工作小組的資料庫中,參與關於校對 API 設計的討論。

另請參閱