JavaScript から Phi Silica を呼び出す (JS バインド)

このガイドでは、生成された JS バインディングを使用して、electron JavaScript から直接 Windows アプリ SDK Phi Silica テキスト要約 API を呼び出す方法について説明します。

[前提条件]

このガイドを開始する前に、次の作業が完了していることを確認してください。

  • 開発環境の セットアップが完了しました。
  • Copilot+ PCでテスト済み。 Phi Silica には、ローカル言語モデルをサポートするハードウェアが必要です。

手順 1: AI 機能を追加する

Phi シリカには、 systemAIModels 制限された機能が必要です。 Package.appxmanifest内の<Capabilities>に追加します。

<Capabilities>
  <rescap:Capability Name="runFullTrust" />
  <rescap:Capability Name="systemAIModels" />
</Capabilities>

マニフェストを変更した後、デバッグ ID を更新します。

npx winapp node add-electron-debug-identity

ステップ 2: 電子メイン プロセスから Phi シリカを呼び出す

生成されたバインディングを #winapp/bindingsからインポートし、 TextSummarizerを作成し、 createWindow() の最後に呼び出して、すべてが機能することを確認します。

@microsoft/dynwinrt-codegen0.1.0-preview.8 が必要です — 古いプロジェクト向けの代替手段については、Electron を使い始めるを参照してください。

// src/index.js (Electron main, CommonJS)
const {
  AIFeatureReadyState,
  LanguageModel,
  TextSummarizer,
} = require('#winapp/bindings');

const callPhiSilica = async () => {
  console.log('Summarizing with Phi Silica:');

  const readyState = LanguageModel.getReadyState();
  if (readyState !== AIFeatureReadyState.Ready && readyState !== AIFeatureReadyState.NotReady) {
    console.log('Summary: Model is not available');
    return;
  }
  if (readyState === AIFeatureReadyState.NotReady) {
    await LanguageModel.ensureReadyAsync();
  }

  const languageModel = await LanguageModel.createAsync();
  try {
    const summarizer = TextSummarizer.createInstance(languageModel);
    const result = await summarizer.summarizeParagraphAsync(
      "The Windows App Development CLI lets Electron apps call Windows-native APIs from JavaScript. Package identity enables features such as notifications and background tasks."
    );
    console.log('Summary:', result.text);
  } finally {
    languageModel.close();
  }
};

const createWindow = () => {
  // ... existing window creation code ...

  // Test the Phi Silica AI API
  callPhiSilica();
};

Note

getReadyState() は、 ReadyNotReadyDisabledByUser、または NotSupportedOnCurrentSystemのいずれかを返します。 ensureReadyAsync()を呼び出すと、まだ準備ができていない場合に、システムによってモデルのダウンロード/初期化がトリガーされます。

手順 3: 実行する

npm start

コンソールの出力を確認します。Phi Silica の概要が印刷されています。

モデルがデバイスで使用できない場合、関数は "Summary: Model is not available"ログに記録します。 サポートされているハードウェア (Copilot+ PC) で実行していること、およびマニフェストにsystemAIModelsが含まれていることを確認します。

ここから、サマライザーをアプリに統合できますが、必要に応じて、プリロード スクリプトを使用してレンダラーに公開したり、IPC ハンドラーに接続したり、メイン プロセスで直接呼び出したりすることができます。

次のステップ

おめでとうございます! これで、JavaScript から Phi Silica を直接呼び出しています。C# アドオンはなく、ビルドステップ node-gyp もありません。 🎉

これで、次の準備ができました。

または、他のガイドを調べる:

その他のリソース