Lär dig mer om maskinvarukraven för Windows AI API och hur du konfigurerar enheten för att framgångsrikt bygga appar med hjälp av Windows AI APIs.
Beroenden
Se till att datorn har stöd för Windows AI APIs och att alla beroenden är installerade. Du kan välja att göra detta automatiskt (rekommenderas) eller manuellt.
Bekräfta att enheten är en Copilot+ PC (vi rekommenderar de enheter som anges i utvecklarguiden för Copilot+-datorer).
Kör följande kommando i Windows-terminalen.
winget configure https://raw.githubusercontent.com/microsoft/winget-dsc/refs/heads/main/samples/Configuration%20files/Learn%20tutorials/Windows%20AI/learn_wcr.winget
Detta kör en WinGet-konfigurationsfil som utför följande uppgifter:
- Söker efter lägsta operativsystemversion.
- Aktiverar utvecklarläge.
- Installerar Visual Studio Community Edition med WinUI och andra nödvändiga arbetsbelastningar.
- Installerar Windows App SDK.
Skapa en ny app
Följande steg beskriver hur du skapar en app som använder Windows AI APIs (välj fliken för ditt önskade gränssnittsramverk).
I Visual Studio skapar du ett nytt WinUI-projekt genom att välja mallen Tom app, Paketerad (WinUI 3 i Desktop).
Högerklicka på projektnoden i Solution Explorer, välj Egenskaper>Program>allmänt och kontrollera att målramverket är inställt på .NET 8.0 och att måloperativsystemet är inställt på 10.0.22621 eller senare.
Redigera filen Package.appxmanifest (högerklicka och välj Visa kod) och lägg till följande kodfragment.
Funktionen systemAIModels för <Capabilities> noden:
<Capabilities>
<systemai:Capability Name="systemAIModels"/>
</Capabilities>
Namnområdesspecificeraren systemai till "IgnorableNamespaces" i <Package> noden:
xmlns:systemai="http://schemas.microsoft.com/appx/manifest/systemai/windows10"
IgnorableNamespaces="uap rescap systemai"
Den högsta version som testas i TargetDeviceFamily nodens <Dependencies> element måste vara minst 10.0.26226.0:
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
Lägg till följande i filen .waproj, .csproj eller .vcxproj. Det här steget är nödvändigt för att säkerställa att Visual Studio inte åsidosätter den maxversion som testats.
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
Högerklicka på projektnoden och välj Hantera NuGet-paket....
I NuGet Package Manager markerar du kryssrutan Inkludera förhandsversion och väljer Windows App SDK version 1.8.250410001-experimental1. Klicka på Installera eller uppdatera.
Kontrollera att byggkonfigurationen är inställd på ARM64.
Skapa och kör din app.
Om appen startas framgångsrikt fortsätter du att lägga till din första AI API. Annars kan du läsa Felsökning.
I Visual Studio skapar du ett nytt WPF-projekt genom att välja WPF-applikation-mallen.
Högerklicka på projektnoden i Solution Explorer och välj Redigera projektfil för att öppna som XML. Ersätt allt inuti <PropertyGroup> med följande:
<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>
Redigera filen Package.appxmanifest (högerklicka och välj Visa kod) och lägg till följande kodfragment.
Funktionen systemAIModels för <Capabilities> noden:
<Capabilities>
<systemai:Capability Name="systemAIModels"/>
</Capabilities>
Namnområdesspecificeraren systemai till "IgnorableNamespaces" i <Package> noden:
xmlns:systemai="http://schemas.microsoft.com/appx/manifest/systemai/windows10"
IgnorableNamespaces="uap rescap systemai"
Den högsta version som testas i TargetDeviceFamily nodens <Dependencies> element måste vara minst 10.0.26226.0:
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
Lägg till följande i filen .waproj, .csproj eller .vcxproj. Det här steget är nödvändigt för att säkerställa att Visual Studio inte åsidosätter den maxversion som testats.
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
Högerklicka på noden Beroenden i Solution Explorer och välj Hantera Nuget-paket....
I NuGet Package Manager markerar du kryssrutan Inkludera förhandsversion och väljer Windows App SDK version 1.8.250410001-experimental1. Klicka på Installera eller uppdatera.
Skapa och kör din app.
Om appen startas framgångsrikt fortsätter du att lägga till din första AI API. Annars kan du läsa Felsökning.
Mer information finns i Konfigurera WPF-projektet för Windows App SDK-stöd.
Skapa ett MAUI-projekt genom att följa anvisningarna i Skapa din första .NET MAUI-app.
I Solution Explorer högerklickar du på projektnoden >Redigera projektfil för att öppna som XML.
Längst ned i projektfilen lägger du till dessa rader för att referera till rätt Microsoft.WindowsAppSDK-paketversion (vid kompilering för Windows-plattformen):
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.250410001-experimental1"/>
</ItemGroup>
Anmärkning
När du klickar på projektnoden och väljer alternativet Hantera NuGet-paket... kan du använda för att lägga till det nödvändiga paketet. Om din app också skapas för andra plattformar, till exempel Android och iOS, måste projektfilen fortfarande redigeras för att villkora paketreferensen för Windows-versioner.
Lägg till följande i filen .waproj, .csproj eller .vcxproj. Det här steget är nödvändigt för att säkerställa att Visual Studio inte åsidosätter den maxversion som testats.
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
Högerklicka på projektnoden i Solution Explorer, välj Egenskaper och se till att Windows-målramverket är inställt på 10.0.22621 eller senare.
Redigera filen Package.appxmanifest (högerklicka och välj Visa kod) och lägg till följande kodfragment.
Funktionen systemAIModels för <Capabilities> noden:
<Capabilities>
<systemai:Capability Name="systemAIModels"/>
</Capabilities>
Namnområdesspecificeraren systemai till "IgnorableNamespaces" i <Package> noden:
xmlns:systemai="http://schemas.microsoft.com/appx/manifest/systemai/windows10"
IgnorableNamespaces="uap rescap systemai"
Den högsta version som testas i TargetDeviceFamily nodens <Dependencies> element måste vara minst 10.0.26226.0:
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
Skapa och kör din app.
Om appen startas framgångsrikt fortsätter du att lägga till din första AI API. Annars kan du läsa Felsökning.
Lägg till din första AI API
När du implementerar en funktion med hjälp av Windows AI APIs bör din app först kontrollera tillgängligheten för den AI-modell som stöder funktionen.
Följande kodfragment visar hur du söker efter modelltillgänglighet och genererar ett svar.
I MainWindow.xaml lägger du till en TextBlock för att visa LanguageModel-svaret .
<TextBlock x:Name="OutputText" HorizontalAlignment="Center" VerticalAlignment="Center" />
Lägg till följande using Microsoft.Windows.AI direktiv överst i MainWindow.xaml.cs.
using Microsoft.Windows.AI;
I MainWindow.xaml.csersätter du klassen MainWindow med följande kod, som bekräftar att LanguageModel är tillgänglig och sedan skickar en uppmaning om att modellen ska svara med den molekylära formeln glukos.
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;
}
}
Skapa och kör appen.
Formeln för glukos bör visas i textblocket.
I MainWindow.xaml lägger du till en TextBlock för att visa LanguageModel-svaret .
<TextBlock x:Name="OutputText" HorizontalAlignment="Center" VerticalAlignment="Center" />
Lägg till följande using Microsoft.Windows.AI direktiv överst i MainWindow.xaml.cs.
using Microsoft.Windows.AI;
I MainWindow.xaml.cs ersätter du klassen MainWindow med följande kod, som bekräftar att LanguageModel är tillgänglig och sedan skickar en uppmaning om att modellen ska svara med den molekylära formeln glukos.
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;
}
}
Skapa och kör appen.
Formeln för glukos bör visas i textblocket.
Mer information om hur du lägger till plattformsspecifik kod i en MAUI-app finns i Anropa plattformskod .
I det här exemplet använder vi metoden partiella klasser och partiella metoder för att placera Windows-koden i mappen Platform\Windows.
I MainPage.xaml.cs lägger du till en partiell metoddefinition som partial void ChangeLanguageModelAvailability(); och anropar den partiella metoden från hanteraren OnCounterClicked för CounterBtn knappen som skapats av .NET MAUI App-mallen.
I Solution Explorer expanderar du Plattformar, högerklickar på Windows, väljer Lägg till>klass..., skriver namnet MainPage.cs och klickar på Lägg till.
Den nya MainPage.cs ska visas i redigeringsfönstret. Växla tillbaka till MainPage.xaml.cs för att kopiera dess namnområdesrad.
Växla tillbaka till den nya MainPage.cs och ersätt dess namnområdesrad med raden från MainPage.xaml.cs. Det här är för att göra klassen Platform\Windows till ett partiellt tillägg för basklassen MainPage .
För att göra MainPage.cs till ett tillägg, ersätt internal i klassdeklarationen med partial.
Lägg till följande kod i den partiella metoden ChangeLanguageModelAvailability som definieras i steg 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}");
}
}
Kör appen igen, klicka på knappen Klicka på mig och observera utdata i utdatafönstret för Felsökning i Visual Studio.
Avancerade handledningar och APIs
Nu när du har kontrollerat modelltillgänglighet kan du utforska närmare APIs i de olika Windows AI-guiderna API.
Felsökning
Om det uppstår fel beror det vanligtvis på maskinvaran eller avsaknaden av en nödvändig modell.
- Metoden GetReadyState kontrollerar om den modell som krävs av en AI-funktion är tillgänglig på användarens enhet. Du måste anropa den här metoden innan något anrop till modellen.
- Om modellen inte är tillgänglig på användarens enhet kan du anropa metoden EnsureReadyAsync för att installera den modell som krävs. Modellinstallationen körs i bakgrunden och användaren kan kontrollera installationsstatusen på sidan Windows-inställningar> förWindows-uppdateringsinställningar.
- Metoden EnsureReadyAsync har ett statusalternativ som kan visa ett inläsningsgränssnitt. Om användaren inte har maskinvara som stöds misslyckas EnsureReadyAsync med ett fel.
Mer hjälp finns i Felsökning och vanliga frågor och svar om Windows AIAPI.
Se även