Windows AI를 사용하여 앱 빌드 시작 APIs

Windows AI 하드웨어 요구 사항 및 Windows AI APIAPIs를 사용하여 앱을 성공적으로 빌드하도록 디바이스를 구성하는 방법에 대해 알아봅니다.

종속성

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. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 속성>애플리케이션>일반을 선택하고 대상 프레임워크가 .NET 8.0으로 설정되어 있고 대상 OS가 10.0.22621 이상으로 설정되어 있는지 확인합니다.

    Visual Studio 프로젝트 속성 창의 스크린샷

  3. Package.appxmanifest 파일을 편집하고(마우스 오른쪽 단추를 클릭하고 코드 보기 선택) 다음 코드 조각을 추가합니다.

    • systemAIModels 노드에 대한 <Capabilities> 기능:

      <Capabilities>
         <systemai:Capability Name="systemAIModels"/>
      </Capabilities>
      
    • 노드에서 systemai 네임스페이스 지정자는 <Package>의 "IgnorableNamespaces"입니다.

      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. 빌드 구성이 디바이스에 적합한 아키텍처(예: ARM64 또는 x64)로 설정되어 있는지 확인합니다.

    ARM64로 설정된 Visual Studio 빌드 구성의 스크린샷.

  8. 앱을 빌드하고 실행합니다.

  9. 앱이 성공적으로 시작되면 첫 번째 AIAPI를 계속 추가합니다. 그렇지 않으면 문제 해결을 참조하세요.

첫 번째 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.csMainWindow 클래스를 다음 코드로 바꿉니다. 이 코드는 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 서비스)으로 대체합니다.

세 분기(동의 대화 상자 UX 포함)를 모두 포함하는 엔드투엔드 예제는 Phi Silica → 권장 UX 패턴을 참조하세요. 동일한 패턴은 API 노출하는 모든 Windows AI 적용됩니다.

비고

권장 CPU 사양(예: VSR)이 있는 APIs의 경우, GetReadyState만으로는 충분하지 않습니다. GetReadyState는 API의 지원 여부만 알려주며, CPU 사양 검사는 원하는 UX를 구현하기에 충분히 원활하게 실행되는지 여부를 알려줍니다. 둘 다 사용하세요: GetReadyState이 포함된 게이트 가용성과 CPU 확인이 포함된 게이트 품질 선택.

자세한 내용은 Windows AI API 문제 해결 및 FAQ 를 참조하세요.

참고하십시오