Windows AI を使用してアプリの構築を開始する APIs

Windows AI API ハードウェア要件と、Windows AI APIsを使用してアプリを正常に構築するようにデバイスを構成する方法について説明します。

依存関係

PC で Windows AI APIs がサポートされていることと、すべての依存関係がインストールされていることを確認します。 これを自動的に行うか (推奨)、手動で行うかを選択できます。

  1. 使用する予定の Windows AI APIs のハードウェア要件をデバイスが満たしていることを確認します。 ほとんどのAPIsには、NPU を使用したCopilot+ PCが必要です (Copilot+ PCs 開発者ガイドに記載されているデバイスをお勧めします)。 一部のAPIsでは、Copilot+ ではないデバイスでの GPU または CPU での実行もサポートされています。詳細については、対応ハードウェア一覧を参照してください。

  2. Windows ターミナルで次のコマンドを実行します。

    winget configure https://raw.githubusercontent.com/microsoft/winget-dsc/refs/heads/main/samples/Configuration%20files/Learn%20tutorials/Windows%20AI/learn_wcr.winget
    

    これにより、次のタスクを実行する WinGet 構成ファイル が実行されます。

    • OS の最小バージョンを確認します。
    • 開発者モードを有効にします。
    • WinUI やその他の必要なワークロードを含む Visual Studio Community Edition をインストールします。
    • Windows アプリ SDK をインストールします。

新しいアプリをビルドする

次の手順では、Windows AI APIs を使用するアプリを構築する方法について説明します (優先する UI フレームワークのタブを選択します)。

  1. Visual Studio で、 空のアプリパッケージ (デスクトップの WinUI 3) テンプレートを選択して、新しい WinUI プロジェクトを作成します。

    WinUI テンプレートが選択されている Visual Studio の新しいプロジェクト UI のスクリーンショット。

  2. ソリューション エクスプローラーでプロジェクト ノードを右クリックし、プロパティ>Application>General を選択し、ターゲット フレームワークが .NET 8.0 に設定され、ターゲット OS が 10.0.22621 以降に設定されていることを確認します。

    Visual Studio プロジェクトのプロパティ ウィンドウのスクリーンショット

  3. Package.appxmanifest ファイルを編集し (右クリックして [ コードの表示] を選択)、次のスニペットを追加します。

    • systemAIModels ノードに対する <Capabilities> 機能:

      <Capabilities>
         <systemai:Capability Name="systemAIModels"/>
      </Capabilities>
      
    • systemai ノードの "IgnorableNamespaces" への<Package>名前空間指定子。

      xmlns:systemai="http://schemas.microsoft.com/appx/manifest/systemai/windows10"
      IgnorableNamespaces="uap rescap systemai"
      
    • TargetDeviceFamily ノードの <Dependencies> 要素でテストされる最大バージョンは、少なくとも 10.0.26226.0 である必要があります。

      <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
      
  4. 次のファイルを .waproj、.csproj、または .vcxproj ファイルに追加します。 この手順は、Visual Studio がテストされた最大バージョンをオーバーライドしないようにするために必要です。

    <AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
    <AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
    
  5. プロジェクト ノードを右クリックし、[ NuGet パッケージの管理...] を選択します。

  6. NuGet パッケージ マネージャーで、[プレリリースを含める] チェック ボックスをオンにし、Windows アプリ SDK バージョン 1.8.250410001-experimental1 を選択します。 [ インストール ] または [ 更新] をクリックします。

    Microsoft.WindowsAppSDK 1.8.250410001-experimental1 が選択されている Visual Studio nuget パッケージ マネージャーのスクリーンショット。

  7. ビルド構成がデバイスに適したアーキテクチャ ( ARM64x64 など) に設定されていることを確認します。

    ARM64 に設定された Visual Studio ビルド構成のスクリーンショット。

  8. アプリをビルドして実行します。

  9. アプリが正常に起動した場合は、最初の AI APIの追加に進みます。 それ以外の場合は、「 トラブルシューティング」を参照してください。

最初の AI を追加する API

Windows AI APIsを使用して機能を実装する場合、アプリではまず、その機能をサポートする AI モデルの可用性を確認する必要があります。

次のスニペットは、モデルの可用性を確認し、応答を生成する方法を示しています。

  1. MainWindow.xaml で、 TextBlock を追加して LanguageModel 応答を表示します。

    <TextBlock x:Name="OutputText" HorizontalAlignment="Center" VerticalAlignment="Center" />
    
  2. MainWindow.xaml.csの先頭に、次の using Microsoft.Windows.AI ディレクティブを追加します。

    using Microsoft.Windows.AI; 
    
  3. MainWindow.xaml.csでは、MainWindow クラスを次のコードに置き換えます。これにより、LanguageModel が使用可能であることを確認し、モデルがグルコースの分子式で応答するように求めるプロンプトが送信されます。

    public sealed partial class MainWindow : Window
    {
        public MainWindow()
        {
            this.InitializeComponent();
            InitAI();
        }
    
        private async void InitAI()
        {
            OutputText.Text = "Loading..";
    
            if (LanguageModel.GetReadyState() == AIFeatureReadyState.EnsureNeeded)
            {
                var result = await LanguageModel.EnsureReadyAsync();
                if (result.Status != PackageDeploymentStatus.CompletedSuccess)
                {
                    throw new Exception(result.ExtendedError().Message);
                }
            }            
    
            using LanguageModel languageModel = 
               await LanguageModel.CreateAsync();
    
            string prompt = "Provide the molecular formula of glucose.";
            var result = await languageModel.GenerateResponseAsync(prompt);
            OutputText.Text = result.Response;
        }
    }
    
  4. アプリケーションをビルドし、実行します。

  5. グルコースの数式がテキスト ブロックに表示されます。

高度なチュートリアルと APIs

モデルの可用性を正常に確認できたので、さまざまな Windows AI APIs チュートリアルでAPIをさらに詳しく調べてください。

トラブルシューティング

エラーが発生した場合は、通常、ハードウェアまたは必要なモデルがないためです。

  • GetReadyState メソッドは、AI 機能に必要なモデルがユーザーのデバイスで使用できるかどうかを確認します。 モデルを呼び出す前に、このメソッドを呼び出す必要があります。
  • ユーザーのデバイスでモデルを使用できない場合は、 EnsureReadyAsync メソッドを呼び出して、必要なモデルをインストールできます。 モデルのインストールはバックグラウンドで実行され、ユーザーは Windows 設定>Windows 更新 設定ページでインストールの進行状況を確認できます。
  • EnsureReadyAsync メソッドには、読み込み UI を表示できる状態オプションがあります。 ユーザーがサポートされていないハードウェアを持っている場合、 EnsureReadyAsync はエラーで失敗します。

実行時にハードウェア サポートを検出する

Windows AI APIs は、さまざまなハードウェア (NPU、GPU、CPU) に付属しており、すべてのAPIがすべてのデバイスでサポートされているわけではありません。 アプリは、機能に依存する UI の表示など、作業を行う前に GetReadyState の結果で分岐する必要があります。

AIFeatureReadyState 意味 アプリで実行する必要がある操作
Ready モデルがインストールされ、デバイスが APIをサポートします。 APIを呼び出します。
NotReady または EnsureNeeded デバイスは APIをサポートしていますが、モデルをダウンロードまたは準備する必要があります。 ダウンロード (サイズ、ネットワークの使用状況) を説明する同意ダイアログを表示し、 EnsureReadyAsync を呼び出して進行状況をユーザーに報告します。
NotSupportedOnCurrentSystem デバイスは、この API (互換性のないハードウェア、不足しているドライバー、またはポリシー) を実行できません。 EnsureReadyAsync を呼び出さないでください。 機能を非表示または無効にするか、代替実装 ( クラウド AI サービスなど) にフォールバックします。

3 つのブランチ (同意ダイアログ UX を含む) をすべて網羅したエンド ツー エンドの例については、「 Phi Silica → Recommended UX パターン」を参照してください。 同じパターンは、API を公開するすべてのWindows AI に適用されます。

APIs (VSR など) を持つの場合、GetReadyStateだけでは不十分ですGetReadyState は、 API がサポートされているかどうかを示すだけです。CPU スペック チェックでは、UX に 十分 に動作するかどうかを示します。 両方を使用する: GetReadyStateでのゲート可用性、CPU チェックによるゲート品質の選択。

詳細については、 Windows AI API のトラブルシューティングと FAQ を参照してください。

こちらも参照ください