Windows AI API ハードウェア要件と、Windows AI APIsを使用してアプリを正常に構築するようにデバイスを構成する方法について説明します。
依存関係
PC で Windows AI APIs がサポートされていることと、すべての依存関係がインストールされていることを確認します。 これを自動的に行うか (推奨)、手動で行うかを選択できます。
デバイスが Copilot+ PC であることを確認します ( Copilot+ PC 開発者ガイドに記載されているデバイスをお勧めします)。
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 App SDK をインストールします。
新しいアプリをビルドする
次の手順では、Windows AI APIs を使用するアプリを構築する方法について説明します (優先する UI フレームワークのタブを選択します)。
Visual Studio で、 空のアプリパッケージ (デスクトップの WinUI 3) テンプレートを選択して、新しい WinUI プロジェクトを作成します。
ソリューション エクスプローラーでプロジェクト ノードを右クリックし、プロパティ>Application>General を選択し、ターゲット フレームワークが .NET 8.0 に設定され、ターゲット OS が 10.0.22621 以降に設定されていることを確認します。
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" />
次のファイルを .waproj、.csproj、または .vcxproj ファイルに追加します。 この手順は、Visual Studio がテストされた最大バージョンをオーバーライドしないようにするために必要です。
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
プロジェクト ノードを右クリックし、[ NuGet パッケージの管理...] を選択します。
NuGet パッケージ マネージャーで、[プレリリースを含める] チェック ボックスをオンにし、Windows App SDK バージョン 1.8.250410001-experimental1 を選択します。 [ インストール ] または [ 更新] をクリックします。
ビルド構成が ARM64 に設定されていることを確認します。
アプリをビルドして実行します。
アプリが正常に起動した場合は、最初の AI APIの追加に進みます。 それ以外の場合は、「 トラブルシューティング」を参照してください。
Visual Studio で、WPF アプリケーション テンプレートを選択して新しい WPF プロジェクトを作成します。
ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、[プロジェクト ファイルの編集] を選択して XML として開きます。
<PropertyGroup>内のすべてを次のように置き換えます。
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<ImplicitUsings>enable</ImplicitUsings>
<WindowsPackageType>None</WindowsPackageType>
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" />
次のファイルを .waproj、.csproj、または .vcxproj ファイルに追加します。 この手順は、Visual Studio がテストされた最大バージョンをオーバーライドしないようにするために必要です。
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
ソリューション エクスプローラーで、[依存関係] ノードを右クリックし、[Nuget パッケージの管理...] を選択します。
NuGet パッケージ マネージャーで、[プレリリースを含める] チェック ボックスをオンにし、Windows App SDK バージョン 1.8.250410001-experimental1 を選択します。 [ インストール ] または [ 更新] をクリックします。
アプリをビルドして実行します。
アプリが正常に起動した場合は、最初の AI APIの追加に進みます。 それ以外の場合は、「 トラブルシューティング」を参照してください。
詳細については、「 Windows App SDK サポート用に WPF プロジェクトを構成する」を参照してください。
「最初の .NET MAUI アプリをビルドする」の手順に従って、MAUI プロジェクトを作成します。
ソリューション エクスプローラーで、[プロジェクト >] プロジェクト ノードを右クリックし、XML として開きます。
プロジェクト ファイルの下部に、次の行を追加して、正しい Microsoft.WindowsAppSDK パッケージ バージョンを参照します (Windows プラットフォーム用にコンパイルする場合)。
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.250410001-experimental1"/>
</ItemGroup>
注
プロジェクト ノードをクリックして [ NuGet パッケージの管理...] オプションを選択すると、必要なパッケージを追加できます。アプリが Android や iOS などの他のプラットフォーム向けにビルドされている場合でも、Windows 専用ビルドのパッケージ参照を条件としてプロジェクト ファイルを編集する必要があります。
次のファイルを .waproj、.csproj、または .vcxproj ファイルに追加します。 この手順は、Visual Studio がテストされた最大バージョンをオーバーライドしないようにするために必要です。
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
ソリューション エクスプローラーでプロジェクト ノードを右クリックし、[プロパティ] を選択し、ターゲット Windows Framework が 10.0.22621 以降に設定されていることを確認します。
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" />
アプリをビルドして実行します。
アプリが正常に起動した場合は、最初の AI APIの追加に進みます。 それ以外の場合は、「 トラブルシューティング」を参照してください。
最初の AI を追加する API
Windows AI APIsを使用して機能を実装する場合、アプリではまず、その機能をサポートする AI モデルの可用性を確認する必要があります。
次のスニペットは、モデルの可用性を確認し、応答を生成する方法を示しています。
MainWindow.xaml で、 TextBlock を追加して LanguageModel 応答を表示します。
<TextBlock x:Name="OutputText" HorizontalAlignment="Center" VerticalAlignment="Center" />
MainWindow.xaml.csの先頭に、次の using Microsoft.Windows.AI ディレクティブを追加します。
using Microsoft.Windows.AI;
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;
}
}
アプリケーションをビルドし、実行します。
グルコースの数式がテキスト ブロックに表示されます。
MainWindow.xaml で、 TextBlock を追加して LanguageModel 応答を表示します。
<TextBlock x:Name="OutputText" HorizontalAlignment="Center" VerticalAlignment="Center" />
MainWindow.xaml.csの先頭に、次の using Microsoft.Windows.AI ディレクティブを追加します。
using Microsoft.Windows.AI;
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 for glucose.";
var result = await languageModel.GenerateResponseAsync(prompt);
OutputText.Text = result.Response;
}
}
アプリケーションをビルドし、実行します。
グルコースの数式がテキスト ブロックに表示されます。
プラットフォーム固有のコードを MAUI アプリに追加する方法の詳細については、プラットフォーム コードの 呼び出 しに関するページを参照してください。
この例では、部分クラスと部分メソッドのアプローチを使用して、Windows コードを Platform\Windows フォルダーに配置します。
MainPage.xaml.csで、部分メソッド定義をpartial void ChangeLanguageModelAvailability();として追加し、.NET MAUI アプリ テンプレートによって作成された ボタンの CounterBtn ハンドラーからその部分メソッドを呼び出します。
ソリューション エクスプローラーで、[プラットフォーム] を展開し、Windows を右クリックし、[追加>Class...] を選択し、MainPage.cs名前を入力して、[追加] をクリックします。
新しいMainPage.csがエディター ウィンドウに表示されます。 MainPage.xaml.csに戻って名前空間行をコピーします。
新しいMainPage.csに戻り、名前空間の行をMainPage.xaml.csの行に置き換えます。 これは、 Platform\Windows クラスを 基本 MainPage クラスの部分拡張にするためです。
MainPage.cs拡張機能の作成を完了するには、クラス宣言の internal を partialに置き換えます。
手順 1 で定義した ChangeLanguageModelAvailability 部分メソッドに次のコードを追加します。
partial void ChangeLanguageModelAvailability()
{
try
{
AIFeatureReadyState readyState = Microsoft.Windows.AI.LanguageModel.GetReadyState();
System.Diagnostics.Debug.WriteLine($"LanguageModel.GetReadyState: {readyState}");
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine($"LanguageModel is not available: {e}");
}
}
アプリをもう一度実行し、[ クリック ] ボタンをクリックして、Visual Studio のデバッグ出力ウィンドウで出力を確認します。
高度なチュートリアルと APIs
モデルの可用性を正常に確認できたので、さまざまな Windows AI APIs チュートリアルでAPIをさらに詳しく調べてください。
トラブルシューティング
エラーが発生した場合は、通常、ハードウェアまたは必要なモデルがないためです。
-
GetReadyState メソッドは、AI 機能に必要なモデルがユーザーのデバイスで使用できるかどうかを確認します。 モデルを呼び出す前に、このメソッドを呼び出す必要があります。
- ユーザーのデバイスでモデルを使用できない場合は、 EnsureReadyAsync メソッドを呼び出して、必要なモデルをインストールできます。 モデルのインストールはバックグラウンドで実行され、ユーザーは Windows 設定>Windows 更新 設定ページでインストールの進行状況を確認できます。
-
EnsureReadyAsync メソッドには、読み込み UI を表示できる状態オプションがあります。 ユーザーがサポートされていないハードウェアを持っている場合、 EnsureReadyAsync はエラーで失敗します。
詳細については、 Windows AI API のトラブルシューティングと FAQ を参照してください。
こちらも参照ください