次の方法で共有


Write Assistance API を使用してテキストを要約、書き込み、書き換える

Write Assistance API は、Web サイトまたはブラウザー拡張機能の JavaScript コードから、Microsoft Edge に組み込まれている小さな言語モデル (SLM) を使用してテキストを要約、書き込み、書き換えできる実験的な Web API です。

サマライザー API、ライター API、およびリライター API の概要については、「 ライティング アシスタンス API Explainer」を参照してください。

詳細な内容:

ライティング アシスタンス API の可用性

サマライザー、ライター、およびリライター API は、Microsoft Edge Canary または Dev チャネルの開発者プレビューとして、バージョン 138.0.3309.2 以降で利用できます。

ライティング アシスタンス API は、テキスト コンテンツの生成、変更、要約に固有のタスク用に最適化されています。 これらの API によって提供されない可能性がある、より多くのカスタム プロンプト エンジニアリング シナリオの代替方法の詳細については、「 Prompt API を使用して組み込みの言語モデルをプロンプトする」を参照してください。

ライティング アシスタンス API の代替手段と利点

Web サイトとブラウザー拡張機能で AI 機能を活用するには、次の方法を使用することもできます。

書き込みアシスタンス API では、モデルの入力と出力が使用されているのと同じデバイスで実行される小さな言語モデル (SLM) が使用されます (つまり、ローカルで)。 これには、クラウドベースのソリューションと比較して、次の利点があります。

  • コストの削減: クラウド AI サービスの使用に関連するコストはありません。

  • ネットワークの独立性: 最初のモデルのダウンロード以外に、モデルを要求するときにネットワーク待機時間はなく、デバイスがオフラインのときにも使用される場合があります。

  • プライバシーの強化: モデルへのデータ入力はデバイスから離れることはなく、AI モデルをトレーニングするために収集されることはありません。

ライティング アシスタンス API は、Microsoft Edge によって提供され、ブラウザーに組み込まれているモデルを使用します。これには、WebGPU、WebNN、WebAssembly に基づくカスタム ローカル ソリューションよりも追加の利点があります。

  • 共有 1 回限りのコスト: ブラウザーが提供するモデルは、API が初めて呼び出され、ブラウザーで実行されるすべての Web サイトで共有されるときにダウンロードされるため、ユーザーと開発者のネットワーク コストが削減されます。

  • Web 開発者向けの簡略化された使用方法: 組み込みモデルは、単純な Web API を使用して実行でき、AI/ML の専門知識やサードパーティのフレームワークを使用する必要はありません。

Phi-4-mini モデル

Prompt API を使用すると、Microsoft Edge に組み込まれている、テキストベースのタスクに優れた強力な小さな言語モデルである Phi-4-mini をプロンプトできます。 Phi-4-mini とその機能の詳細については、microsoft/Phi-4-mini-instruct でカードモデルを参照してください。

免責事項

他の言語モデルと同様に、Phi ファミリのモデルは、不公平、信頼性の低い、または攻撃的な方法で動作する可能性があります。 モデルの AI に関する考慮事項の詳細については、「 責任ある AI に関する考慮事項」を参照してください。

ハードウェア要件

Prompt API 開発者プレビューは、予測可能な品質と待機時間で SLM 出力を生成するハードウェア機能を備えたデバイスで動作することを目的としています。

Prompt API は現在、次に制限されています。

  • オペレーティング システム: Windows 10または 11 および macOS 13.3 以降。

  • 貯蔵: Edge プロファイルを含むボリュームで少なくとも 20 GB を使用できます。 使用可能なストレージが 10 GB を下回ると、モデルが削除され、他のブラウザー機能が機能するのに十分な領域が確保されます。

  • GPU: 5.5 GB 以上の VRAM。

  • ネットワーク: 無制限のデータ プランまたは測定されていない接続。 従量制課金接続を使用している場合、モデルはダウンロードされません。

デバイスがライティング アシスタンス API 開発者プレビューをサポートしているかどうかをチェックするには、以下の「ライティング アシスタンス API を有効にする」を参照し、デバイス のパフォーマンス クラスをチェックします。

ライティング アシスタンス API の実験的な性質により、特定のハードウェア構成に関する問題が発生する可能性があります。 特定のハードウェア構成に関する問題が表示される場合は、MSEdgeExplainers リポジトリで 新しい問題を開 いてフィードバックを提供してください。

モデルの可用性

Web サイトが組み込みの AI API を初めて呼び出す場合は、モデルの初回ダウンロードが必要になります。 新しいサマライザー、ライター、またはリライター API セッションを作成するときに、monitor オプションを使用してモデルのダウンロードを監視できます。 詳細については、以下 の「モデルのダウンロードの進行状況を監視する」を参照してください。

ライティング アシスタンス API を有効にする

Microsoft Edge で任意のライティング アシスタンス API を使用するには:

  1. 最新バージョンの Microsoft Edge Canary または Dev (バージョン 138.0.3309.2 以降) を使用していることを確認します。 「Microsoft Edge Insider になる」を参照してください。

  2. Microsoft Edge Canary または Dev で、新しいタブまたはウィンドウを開き、[ edge://flags/] に移動します。

  3. 検索ボックスで、ページの上部に次の手順を実行します。

    • Summarizer API を有効にするには、「 Summarizeation API for Phi mini」と入力します。
    • ライター API を有効にするには、「 Writer API for Phi mini」と入力します。
    • リライター API を有効にするには、「 リライター API for Phi mini」と入力します。

    ページがフィルター処理され、一致するフラグが表示されます。

  4. 有効にする API のフラグの横にある [ 有効] を選択します。

    ブラウザーの [フラグ] ページ

  5. 必要に応じて、問題のデバッグに役立つ可能性のある情報をローカルでログに記録するには、[ デバイス AI モデルのデバッグ ログで有効にする] フラグも有効にします。

  6. Microsoft Edge Canary または Dev を再起動します。

  7. デバイスがライティング アシスタンス API 開発者プレビューのハードウェア要件を満たしているかどうかをチェックするには、新しいタブを開き、[edge://on-device-internals] に移動し、[デバイス パフォーマンス クラス] の値をチェックします。

    デバイス のパフォーマンス クラスが High 以上の場合は、デバイスで書き込みアシスタンス API がサポートされている必要があります。 問題が引き続き発生する場合は、 新しい問題を提出してください。

作業例を参照する

動作しているライティング アシスタンス API を確認し、これらの API を使用する既存のコードを確認するには:

  1. 上記のように、書き込みアシスタンス API を有効にします

  2. Microsoft Edge Canary または Dev ブラウザーで、タブまたはウィンドウを開き、 Summarizer API プレイグラウンドに移動します。

  3. 左側の 組み込みの AI プレイグラウンド ナビゲーションで、次の操作を行います。

    • サマライザー API の遊び場で、[ サマライザー] をクリックします。
    • [ライター API] プレイグラウンドで、[ ライター] をクリックします。
    • リライター API の遊び場で、[ リライター] をクリックします。
  4. 上部の情報バナーで、状態をチェックします。最初はモデルのダウンロードと読み取り、お待ちください

    モデルのダウンロードの進行状況を示す状態インジケーター

    モデルのダウンロード後、情報バナーは API とモデルの準備完了を読み取り、API とモデルを使用できることを示します。

    API とモデルの準備完了を示す状態インジケーター

    モデルのダウンロードが開始されない場合は、Microsoft Edge を再起動してやり直してください。

    ライティング アシスタンス API は、特定のハードウェア要件を満たすデバイスでのみサポートされます。 詳細については、上記の 「ハードウェア要件」を参照してください。

  5. 必要に応じて、要約するテキスト、書き込み、書き換えるテキスト、予想される出力の長さと形式など、遊び場ページの設定を変更します。

  6. ページの下部にある [ 要約]、[ 書き込み]、または [ 書き換え ] ボタンをクリックします。

    出力は、ページの応答セクションで生成されます。

    設定と [集計] ボタンを含むサマライザー デモ ページ

  7. 応答の生成を停止するには、いつでも [停止 ] ボタンをクリックします。

関連項目:

ライティング アシスタンス API を使用する

サマライザー、ライター、リライターの 3 つのライティング アシスタンス API は、よく使用され、以下のセクションにまとめています。

API が有効になっているかどうかを確認する

Web サイトのコードで任意のライティング アシスタンス API を使用する前に、SummarizerWriter、または Rewriter オブジェクトの存在をテストすることによって API が有効になっていることをチェックします。

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

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

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

モデルを使用できるかどうかを確認する

ライティング アシスタンス API は、デバイスがモデルの実行をサポートしている場合、および言語モデルとモデル ランタイムが Microsoft Edge によってダウンロードされた後にのみ使用できます。

API を使用できるかどうかをチェックするには、API の availability() メソッドを使用します。 たとえば、Writer API を使用してモデルの可用性をチェックするには、次のようにします。

const availability = await Writer.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 と Summarizer API を使用してモデルの可用性をチェックするには、上記のコードで WriterRewriter または Summarizer に変更します。

新しいセッションを作成する

セッションを作成すると、使用できるように言語モデルをメモリに読み込むようブラウザーに指示されます。 Write Assistance API を使用してテキストを要約、書き込み、または書き換える前に、 create() メソッドを使用して新しいセッションを作成します。

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

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

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

モデル セッションをカスタマイズするには、 create() メソッドにオプションを渡します。

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

一部のオプションは 3 つのライティング アシスタンス API に共通ですが、他のオプションは異なるか、値が異なります。 API ごとに使用可能なオプションを次に示します。

オプション Summarizer API ライター API リライター API
monitor Monitor オブジェクト Monitor オブジェクト Monitor オブジェクト
type 文字列: "tl;dr""key-points""teaser""headline" サポート対象外 サポート対象外
tone サポート対象外 文字列: "formal""neutral""casual" 文字列: "as-is""more-formal""more-casual"
length 文字列: "short""medium""long" 文字列: "short""medium""long" 文字列: "as-is""shorter""longer"
format 文字列: "plain-text""markdown" 文字列: "plain-text""markdown" 文字列: "as-is""plain-text""markdown"

これらのオプションについては、以下で説明します。

モデルのダウンロードの進行状況を監視する

[ monitor ] オプションを使用して、モデルのダウンロードの進行状況に従うことができます。 これは、モデルが使用されるデバイスにまだ完全にダウンロードされていない場合に役立ち、ユーザーが待機する必要があることを Web サイトのユーザーに通知します。

// Create a Summarizer session with the monitor option to monitor the model
// download.
const session = await Summarizer.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;
      }
    });
  }
});
概要の種類を設定する

type オプションは、Summarizer API でのみサポートされます。 type オプションを使用して、次のいずれかの種類の概要を生成するように言語モデルに依頼します。

  • tl;dr
  • key-points
  • teaser
  • headline

key-pointsのサマリー type オプションを使用してSummarizer セッションを作成する例:

const session = await Summarizer.create({
  type: "key-points"
});
生成されたテキストのトーンを設定する

ライター API とリライター API では、 tone オプションがサポートされています。

tone オプションを使用して、書き込みまたは書き換えるテキストのトーンを設定します。

Writer API では、 tone オプションに対して次の値がサポートされています。

  • formal
  • neutral
  • casual

リライター API では、 tone オプションに対して次の値がサポートされています。

  • as-is
  • more-formal
  • more-casual

Rewriter セッションを作成し、more-formaltoneを使用するようにモデルにテキストの書き換えを依頼する例:

const session = await Rewriter.create({
  tone: "more-formal"
});
生成されたテキストの長さを設定する

length オプションは、Summarizer、Writer、および Rewriter API でサポートされており、生成されたテキストの長さを制御するために使用されます。

ライター API とサマライザー API では、次の値がサポートされています。

  • short
  • medium
  • long

リライター API では、次の値がサポートされています。

  • as-is
  • shorter
  • longer

Writer セッションを作成し、longlengthでテキストを生成するようにモデルに依頼する例:

const session = await Writer.create({
  length: "long"
});
生成されたテキストの形式を設定する

format オプションは、Summarizer、Writer、および Rewriter API でサポートされており、プレーン テキストの生成またはマークダウン形式のテキストの生成をモデルに依頼するために使用されます。

ライター API とサマライザー API では、次の値がサポートされています。

  • plain-text
  • markdown

リライター API では、次の値がサポートされています。

  • as-is
  • plain-text
  • markdown

Rewriter セッションを作成し、指定されたテキストを書き直してmarkdownとしてformatを生成するようにモデルに要求する例:

const session = await Rewriter.create({
  format: "markdown"
});

ライティング アシスタンス API を実行する

テキストを生成するには、サマライザー、ライター、またはリライター API を使用して、対応するモデル セッションを作成した後、次のメソッドを使用します。

  • summarizerSession.summarize()
  • writerSession.write()
  • rewriterSession.rewrite()

または、生成されたテキストを生成時に表示するには、上記のメソッドのストリーミング バージョンを使用します。

  • summarizerSession.summarizeStreaming()
  • writerSession.writeStreaming()
  • rewriterSession.rewriteStreaming()

これらのメソッドの 2 つのバージョンを以下に示します。

テキストが生成されるのを待ちます

コードの実行を続行する前にテキストが完全に生成されるのを待つには、 summarize()write()、および非同期メソッド rewrite() 使用します。 これらのメソッドは、対応する API がテキストの生成を完了すると解決される promise を返します。

Summarizer API の summarize() 非同期メソッドの使用例:

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

// Summarize text and wait for the summary to be done.
const summary = await summarizerSession.summarize(textToBeSummarized);

// Use the summary.
console.log(summary);
トークンの生成時にトークンを表示する

生成中のトークンを表示するには、代わりに上記のメソッドのストリーミング バージョンを使用します。 summarizeStreaming()writeStreaming()、および rewriteStreaming() メソッドは、ストリーム オブジェクトをすぐに返します。 返されたストリーム オブジェクトを使用して、生成中の応答トークンを表示します。

Summarizer API の summarizeStreaming() 非同期メソッドの使用例:

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

// Ask the model to summarize text.
const stream = session.summarizeStreaming(textToBeSummarized);

// Use the stream object to display tokens that are generated by the model, as
// they are being generated.
for await (const chunk of stream) {
  console.log(chunk);
}

テキストの生成を停止する

上記のメソッドによって返された promise またはストリームが解決または終了する前にテキストの生成を停止するには、 AbortController シグナルを使用します。

AbortController シグナルを使用したRewriter セッションの例:

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

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

// Use the model session to generate some text and pass the AbortController
// object by using the signal option.
const stream = session.rewriteStreaming(textToBeRewritten, {
    signal: abortController.signal
});

// Later, perhaps when the user presses a "Stop" button, call the abort()
// method on the AbortController object to stop generating text.
abortController.abort();

SummarizerまたはWriter セッションの場合は、上記のコードで次のようにします。

  • Rewriter.create()Summarizer.create() または Writer.create() に変更します。
  • session.rewriteStreaming()の使用から変更します。

セッションを破棄する

セッションを破棄して、モデルをメモリからアンロードできるように、言語モデルが不要であることをブラウザーに知らせます。

セッションは、次の 2 つの異なる方法で破棄できます。

  • destroy() メソッドを使用します。
  • AbortControllerを使用する。
destroy() メソッドを使用してセッションを破棄する

destroy() メソッドは、SummarizerWriter、または Rewriter セッションで使用できます。

Summarizer セッションの使用例:

const session = await Summarizer.create();

// Later, destroy the session by using the destroy method.
session.destroy();
AbortController を使用してセッションを破棄する

または、 AbortController オブジェクトを作成し、 SummarizerWriter、または Rewriter セッションを作成してから、 abort()を呼び出すことができます。

Writer セッションの使用例:

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

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

// Later, perhaps 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 Machine Learning ワーキング グループ リポジトリのライティング アシスタンス API の設計に関するディスカッションに投稿することもできます。

関連項目