Dowiedz się więcej o wymaganiach sprzętowych dotyczących sztucznej inteligencji systemu Windows API i sposobach konfigurowania urządzenia w celu pomyślnego kompilowania aplikacji przy użyciu sztucznej inteligencji APIssystemu Windows.
Zależności
Upewnij się, że komputer obsługuje sztuczną inteligencję APIs systemu Windows i że są zainstalowane wszystkie zależności. Możesz to zrobić automatycznie (zalecane) lub ręcznie.
Upewnij się, że urządzenie jest komputerem copilot+ (zalecamy urządzenia wymienione w przewodniku dewelopera Copilot+ PCs).
Uruchom następujące polecenie w terminalu systemu Windows.
winget configure https://raw.githubusercontent.com/microsoft/winget-dsc/refs/heads/main/samples/Configuration%20files/Learn%20tutorials/Windows%20AI/learn_wcr.winget
Spowoduje to uruchomienie pliku konfiguracji WinGet , który wykonuje następujące zadania:
- Sprawdza minimalną wersję systemu operacyjnego.
- Włącza tryb dewelopera.
- Instaluje program Visual Studio Community Edition z pakietem WinUI i innymi wymaganymi obciążeniami.
- Instaluje zestaw SDK aplikacji systemu Windows.
Tworzenie nowej aplikacji
W poniższych krokach opisano sposób tworzenia aplikacji korzystającej ze sztucznej inteligencji APIs systemu Windows (wybierz kartę preferowanej struktury interfejsu użytkownika).
W programie Visual Studio utwórz nowy projekt WinUI, wybierając szablon Pusta aplikacja, Pakowana (WinUI 3 na komputerze stacjonarnym).
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy węzeł projektu, wybierz pozycję Właściwości>Ogólne aplikacji> i upewnij się, że platforma docelowa jest ustawiona na .NET 8.0, a docelowy system operacyjny ma wartość 10.0.22621 lub nowszą.
Edytuj plik Package.appxmanifest (kliknij prawym przyciskiem myszy i wybierz pozycję Wyświetl kod) i dodaj następujące fragmenty kodu.
Możliwość systemAIModels
węzła <Capabilities>
:
<Capabilities>
<systemai:Capability Name="systemAIModels"/>
</Capabilities>
Specyfikator przestrzeni nazw systemai
do "IgnorableNamespaces" w węźle <Package>
:
xmlns:systemai="http://schemas.microsoft.com/appx/manifest/systemai/windows10"
IgnorableNamespaces="uap rescap systemai"
Maksymalna wersja przetestowana w TargetDeviceFamily
elemenie węzła <Dependencies>
musi być co najmniej 10.0.26226.0:
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
Dodaj następujący kod do pliku .waproj, csproj lub .vcxproj. Ten krok jest niezbędny, aby upewnić się, że program Visual Studio nie zastępuje maksymalnej wersji przetestowanej.
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
Kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Zarządzaj pakietami NuGet....
W Menedżerze pakietów NuGet zaznacz pole Uwzględnij wersję wstępną i wybierz wersję 1.8.250410001-experimental1 Zestawu SDK aplikacji systemu Windows. Kliknij pozycję Zainstaluj lub zaktualizuj.
Upewnij się, że konfiguracja kompilacji jest ustawiona na ARM64.
Skompiluj i uruchom aplikację.
Jeśli aplikacja zostanie uruchomiona pomyślnie, przejdź do sekcji Dodaj swoją pierwszą sztuczną inteligencję API. W przeciwnym razie zobacz Rozwiązywanie problemów.
W programie Visual Studio utwórz nowy projekt WPF, wybierając szablon Aplikacja WPF .
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Edytuj plik projektu , aby otworzyć go jako plik XML. Zastąp wszystko wewnątrz <PropertyGroup>
następującymi elementami:
<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>
Edytuj plik Package.appxmanifest (kliknij prawym przyciskiem myszy i wybierz pozycję Wyświetl kod) i dodaj następujące fragmenty kodu.
Możliwość systemAIModels
węzła <Capabilities>
:
<Capabilities>
<systemai:Capability Name="systemAIModels"/>
</Capabilities>
Specyfikator przestrzeni nazw systemai
dla "IgnorableNamespaces" w węźle <Package>
:
xmlns:systemai="http://schemas.microsoft.com/appx/manifest/systemai/windows10"
IgnorableNamespaces="uap rescap systemai"
Maksymalna wersja przetestowana w TargetDeviceFamily
elemencie węzła <Dependencies>
musi być co najmniej 10.0.26226.0:
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
Dodaj następujący kod do pliku .waproj, csproj lub .vcxproj. Ten krok jest niezbędny, aby upewnić się, że program Visual Studio nie zastępuje maksymalnej wersji przetestowanej.
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy węzeł Zależności i wybierz polecenie Zarządzaj pakietami Nuget....
W Menedżerze pakietów NuGet zaznacz pole Uwzględnij wersję wstępną i wybierz wersję 1.8.250410001-experimental1 Zestawu SDK aplikacji systemu Windows. Kliknij pozycję Zainstaluj lub zaktualizuj.
Skompiluj i uruchom aplikację.
Jeśli aplikacja zostanie uruchomiona pomyślnie, przejdź do sekcji Dodaj swoją pierwszą sztuczną inteligencję API. W przeciwnym razie zobacz Rozwiązywanie problemów.
Aby uzyskać więcej informacji, zobacz Configure your WPF project for Windows App SDK support (Konfigurowanie projektu WPF pod kątem obsługi zestawu SDK aplikacji systemu Windows).
Utwórz projekt MAUI, postępując zgodnie z instrukcjami w temacie Build your first .NET MAUI app (Tworzenie pierwszej aplikacji MAUI platformy .NET).
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy węzeł > projektu Edytuj plik projektu, aby otworzyć go jako PLIK XML.
W dolnej części pliku projektu dodaj następujące wiersze, aby odwołać się do poprawnej wersji pakietu Microsoft.WindowsAppSDK (podczas kompilowania dla platformy Windows):
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.250410001-experimental1"/>
</ItemGroup>
Uwaga / Notatka
Po kliknięciu węzła projektu i wybraniu opcji Zarządzaj pakietami NuGet można dodać wymagany pakiet. Jednak jeśli aplikacja jest również kompilowana na inne platformy, takie jak Android i iOS, plik projektu nadal musi zostać edytowany, aby zawierać odwołanie do pakietu tylko dla kompilacji na Windows.
Dodaj następujący kod do pliku .waproj, csproj lub .vcxproj. Ten krok jest niezbędny, aby upewnić się, że program Visual Studio nie zastępuje maksymalnej wersji przetestowanej.
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy węzeł projektu, wybierz pozycję Właściwości i upewnij się, że docelowa platforma Windows Framework jest ustawiona na 10.0.22621 lub nowszą.
Edytuj plik Package.appxmanifest (kliknij prawym przyciskiem myszy i wybierz pozycję Wyświetl kod) i dodaj następujące fragmenty kodu.
Możliwość systemAIModels
węzła <Capabilities>
:
<Capabilities>
<systemai:Capability Name="systemAIModels"/>
</Capabilities>
Specyfikator systemai
przestrzeni nazw "IgnorableNamespaces" w węźle <Package>
:
xmlns:systemai="http://schemas.microsoft.com/appx/manifest/systemai/windows10"
IgnorableNamespaces="uap rescap systemai"
Maksymalna wersja przetestowana w elemencie TargetDeviceFamily
węzła <Dependencies>
musi być co najmniej 10.0.26226.0:
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
Skompiluj i uruchom aplikację.
Jeśli aplikacja zostanie uruchomiona pomyślnie, przejdź do sekcji Dodaj swoją pierwszą sztuczną inteligencję API. W przeciwnym razie zobacz Rozwiązywanie problemów.
Dodaj swoją pierwszą AI API
Podczas implementowania funkcji przy użyciu sztucznej inteligencji systemu Windows APIsaplikacja powinna najpierw sprawdzić dostępność modelu AI, który obsługuje tę funkcję.
Poniższy fragment kodu pokazuje, jak sprawdzić dostępność modelu i wygenerować odpowiedź.
W pliku MainWindow.xaml dodaj element TextBlock , aby wyświetlić odpowiedź LanguageModel .
<TextBlock x:Name="OutputText" HorizontalAlignment="Center" VerticalAlignment="Center" />
W górnej części MainWindow.xaml.cs dodaj następującą using Microsoft.Windows.AI
dyrektywę.
using Microsoft.Windows.AI;
W MainWindow.xaml.cs
pliku zastąp klasę MainWindow następującym kodem, który potwierdza, że model LanguageModel jest dostępny, a następnie przesyła monit z prośbą o odpowiedź modelu na formułę molekularną glukozy.
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;
}
}
Skompiluj i uruchom aplikację.
Formuła glukozy powinna pojawić się w bloku tekstowym.
W pliku MainWindow.xaml dodaj element TextBlock , aby wyświetlić odpowiedź LanguageModel .
<TextBlock x:Name="OutputText" HorizontalAlignment="Center" VerticalAlignment="Center" />
W górnej części MainWindow.xaml.cs dodaj następującą using Microsoft.Windows.AI
dyrektywę.
using Microsoft.Windows.AI;
W MainWindow.xaml.cs zastąp klasę MainWindow następującym kodem, który potwierdza dostępność modelu LanguageModel , a następnie przesyła monit z prośbą o odpowiedź modelu na formułę molekularną glukozy.
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;
}
}
Skompiluj i uruchom aplikację.
Formuła glukozy powinna pojawić się w bloku tekstowym.
Aby uzyskać szczegółowe informacje na temat dodawania kodu specyficznego dla platformy do aplikacji MAUI, zobacz Wywoływanie kodu platformy .
W tym przykładzie używamy metod częściowych i klas częściowych, aby umieścić kod systemu Windows w folderze Platform\Windows.
W MainPage.xaml.cs dodaj definicję metody częściowej jako partial void ChangeLanguageModelAvailability();
i wywołaj tę metodę częściową z procedury obsługi OnCounterClicked dla CounterBtn
przycisku utworzonego przez szablon aplikacji MAUI platformy .NET.
W Eksploratorze rozwiązań rozwiń Platformy, kliknij prawym przyciskiem myszy na Windows, wybierz Dodaj>klasę..., wpisz nazwę MainPage.cs, a następnie kliknij Dodaj.
Nowe MainPage.cs powinny być wyświetlane w oknie edytora. Wróć do MainPage.xaml.cs, aby skopiować wiersz przestrzeni nazw.
Wróć do nowego MainPage.cs i zastąp wiersz przestrzeni nazw wierszem z MainPage.xaml.cs. Ma to na celu utworzenie klasy Platform\Windows częściowego rozszerzenia podstawowej klasy MainPage .
Aby uczynić MainPage.cs rozszerzeniem, zastąp internal
w deklaracji klasy partial
.
Dodaj następujący kod do metody częściowej ChangeLanguageModelAvailability zdefiniowanej w kroku 1.
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}");
}
}
Ponownie uruchom aplikację, kliknij przycisk Kliknij mnie i obserwuj dane wyjściowe w okienku wyników debugowania programu Visual Studio.
Zaawansowane samouczki i APIs
Po pomyślnym sprawdzeniu dostępności modelu, zgłębiaj APIs dalej w różnych samouczkach dotyczących sztucznej inteligencji API systemu Windows.
Rozwiązywanie problemów
Jeśli wystąpią jakiekolwiek błędy, zazwyczaj jest to spowodowane sprzętem lub brakiem wymaganego modelu.
- Metoda GetReadyState sprawdza, czy model wymagany przez funkcję sztucznej inteligencji jest dostępny na urządzeniu użytkownika. Tę metodę należy wywołać przed wszelkimi wywołaniami związanymi z modelem.
- Jeśli model nie jest dostępny na urządzeniu użytkownika, możesz wywołać metodę EnsureReadyAsync , aby zainstalować wymagany model. Instalacja modelu jest uruchamiana w tle, a użytkownik może sprawdzić postęp instalacji na stronie Ustawienia>systemu Windows Windows Update .
- Metoda EnsureReadyAsync ma opcję stanu, która może wyświetlać interfejs użytkownika pokazujący ładowanie. Jeśli użytkownik ma nieobsługiwany sprzęt, funkcja EnsureReadyAsync zakończy się niepowodzeniem z powodu błędu.
Aby uzyskać więcej pomocy, zobacz Rozwiązywanie problemów ze sztuczną inteligencją systemu Windows API i często zadawane pytania .
Zobacz także