このガイドでは、生成された 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-codegen≥0.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() は、 Ready、 NotReady、 DisabledByUser、または NotSupportedOnCurrentSystemのいずれかを返します。
ensureReadyAsync()を呼び出すと、まだ準備ができていない場合に、システムによってモデルのダウンロード/初期化がトリガーされます。
手順 3: 実行する
npm start
コンソールの出力を確認します。Phi Silica の概要が印刷されています。
モデルがデバイスで使用できない場合、関数は "Summary: Model is not available"ログに記録します。 サポートされているハードウェア (Copilot+ PC) で実行していること、およびマニフェストにsystemAIModelsが含まれていることを確認します。
ここから、サマライザーをアプリに統合できますが、必要に応じて、プリロード スクリプトを使用してレンダラーに公開したり、IPC ハンドラーに接続したり、メイン プロセスで直接呼び出したりすることができます。
次のステップ
おめでとうございます! これで、JavaScript から Phi Silica を直接呼び出しています。C# アドオンはなく、ビルドステップ node-gyp もありません。 🎉
これで、次の準備ができました。
-
配布用にアプリをパッケージ化 する - 出荷できる MSIX を生成します (
@microsoft/dynwinrtランタイムは既にdependenciesにあります)。
または、他のガイドを調べる:
- JavaScript からの通知を表示する — JS バインディングを使用してWindows アプリ SDK通知を表示します。
- JavaScript から Windows API を呼び出します。ファイルを選択し、JS バインドを使用してそのイメージ ディメンションを読み取ります。
-
JavaScript から WinML を実行 —
onnxruntime-nodeで Windows アプリ SDK の ML プロバイダー検出を使用する。 - Phi シリカ アドオンの作成 - 対応するネイティブ C# アドオン。
- 概要 - メイン ガイドに戻ります。
その他のリソース
-
winapp CLI ドキュメント — 完全な CLI リファレンス (
init、restore、node generate-bindings)。 - サンプル Electron App — JS バインドを含む完全な作業例。
- @microsoft/dynwinrt — 生成されたバインディングを実行するランタイム。
- @microsoft/dynwinrt-codegen — コード ジェネレーター。
Windows developer