このガイドでは、生成された JS バインディングを使用して、electron JavaScript から直接 Windows アプリ SDK Phi Silica テキスト要約 API を呼び出す方法について説明します。
[前提条件]
このガイドを開始する前に、次の作業が完了していることを確認してください。
- 開発環境の セットアップが完了しました。
- Phi Silica をサポートするハードウェアでテスト済み。 現在のハードウェア、アクセス、移行のガイダンスについては、Windows アプリ SDK で Phi Silica を使い始めるを参照してください。
手順 1: AI 機能を追加する
Phi シリカには systemAIModels 機能が必要です。
rescapではなくsystemai独自の名前空間に存在するため、<Package>でその名前空間を宣言し、無視可能としてマークしてから、機能を追加します。
<Package
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
xmlns:systemai="http://schemas.microsoft.com/appx/manifest/systemai/windows10"
IgnorableNamespaces="rescap systemai">
...
<Capabilities>
<rescap:Capability Name="runFullTrust" />
<systemai:Capability Name="systemAIModels" />
</Capabilities>
</Package>
また、10.0.26226.0は少なくともTargetDeviceFamily/@MaxVersionTestedである必要があります。
マニフェストを変更した後、デバッグ 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"ログに記録します。
サポートされている Phi Silica ハードウェアで実行していること、およびマニフェストに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 バインドを含む完全な作業例。
- Phi Silica のドキュメント — 現在のハードウェア要件、準備ガイダンス、および API の詳細。
- @microsoft/dynwinrt — 生成されたバインディングを実行するランタイム。
- @microsoft/dynwinrt-codegen — コード ジェネレーター。
Windows developer