다음을 통해 공유


Windows 앱 SDK의 Phi Silica

Windows 앱 SDK 사용하여 Windows 앱을 가장 강력한 NPU 튜닝 로컬 언어 모델인 Phi Silica를 포함하여 디바이스 내 언어 모델에 연결합니다.

Windows 앱 SDK 이러한 모델에 액세스하고 채팅의 로컬 처리 및 생성, 수학 해결, 코드 생성, 텍스트에 대한 추론 등을 제공하기 위해 여러 AI(인공 지능) API와 함께 제공됩니다.

Important

Windows 앱 SDK 실험 채널에는 개발 초기 단계의 API 및 기능이 포함됩니다. 실험적 채널의 모든 API는 광범위한 수정 및 호환성이 손상되는 변경이 적용되며 언제든지 후속 릴리스에서 제거될 수 있습니다. 프로덕션 환경에서는 사용할 수 없으며 실험적 기능을 사용하는 앱은 Microsoft Store에 게시할 수 없습니다.

필수 조건

책임 있는 AI

Phi Silica는 안전하고 안전한 AI 환경을 사용하여 앱을 빌드하기 위한 강력하고 신뢰할 수 있는 모델을 개발자에게 제공합니다. Phi Silica가 신뢰할 수 있고 안전하며 책임감 있게 빌드되도록 하기 위해 다음 단계를 수행했습니다.

  • 모델 품질을 철저히 테스트하고 평가하여 잠재적 위험을 식별하고 완화합니다.
  • 모델의 강점과 한계를 설명하고 의도한 용도에 대한 명확성을 제공하는 Phi Silica 모델 카드를 만듭니다.
  • Phi Silica 실험 릴리스의 증분 롤아웃. 최종 Phi Silica 실험 릴리스에 이어, 롤아웃은 서명된 앱으로 확장되어 로컬 모델 기능이 있는 애플리케이션에 맬웨어 검사가 적용되었는지 확인합니다.
  • 사용자가 시스템, 사용자 또는 앱의 디바이스에서 모델을 끌 수 있도록 설정에서 기능 액세스 관리자를 통해 고객 컨트롤을 제공합니다.

참고 항목

Con텐트 모드ration은 현재 개발 중입니다.

위의 추가 기능에서는 Windows의 책임 있는 생성 AI 개발에 설명된 모범 사례를 검토하는 것이 좋습니다.

피 실리카와 Windows 앱 SDK 어떻게 해야 하나요?

로컬 Phi Silica 언어 모델 및 Windows 앱 SDK 사용하여 사용자 프롬프트에 대한 텍스트 응답을 생성할 수 있습니다.

문자열 프롬프트에 따라 단일 전체 응답 가져오기

이 예제에서는 결과가 반환되기 전에 전체 응답이 생성되는 Q&A 프롬프트에 대한 응답을 생성하는 방법을 보여줍니다.

  1. 먼저 IsAvailable 메서드를 호출하고 MakeAvailableAsync 메서드가 성공적으로 반환되도록 대기하여 언어 모델을 사용할 수 있는지 확인합니다.
  2. 언어 모델을 사용할 수 있게 되면 LanguageModel 개체를 만들어 참조합니다.
  3. 마지막으로 전체 결과를 반환하는 GenerateResponseAsync 메서드를 사용하여 문자열 프롬프트를 모델에 제출합니다.
using Microsoft.Windows.AI.Generative; 
 
 
if (!LanguageModel.IsAvailable()) 
{ 
   var op = await LanguageModel.MakeAvailableAsync(); 
} 
 
using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
string prompt = "Provide the molecular formula for glucose."; 
 
var result = await languageModel.GenerateResponseAsync(prompt); 
 
Console.WriteLine(result.Response); 
using namespace winrt::Microsoft::Windows::AI::Generative;

if (!LanguageModel::IsAvailable()) 
{
    auto op = LanguageModel::MakeAvailableAsync().get();
}

auto languageModel = LanguageModel::CreateAsync().get();

std::string prompt = "Provide the molecular formula for glucose.";

auto result = languageModel.GenerateResponseAsync(prompt).get();

std::cout << result.Response << std::endl;

이 예제에서 생성된 응답은 다음과 같습니다.

The molecular formula for glucose is C6H12O6.

문자열 프롬프트를 기반으로 부분 결과 스트림 가져오기

이 예제에서는 응답이 부분 결과의 스트림으로 반환되는 Q&A 프롬프트에 대한 응답을 생성하는 방법을 보여줍니다.

  1. 먼저 로컬 언어 모델을 참조하는 LanguageModel 개체를 만듭니다(이전 코드 조각에서 언어 모델이 있는지 이미 확인했습니다).
  2. 그런 다음 GenerateResponseWithProgressAsync 호출에서 LanguageModelResponse를 비동기적으로 검색하고 응답이 생성될 때 콘솔에 씁니다.
using Microsoft.Windows.AI.Generative; 

using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
 string prompt = "Provide the molecular formula for glucose."; 
 
  AsyncOperationProgressHandler<LanguageModelResponse, string> 
 progressHandler = (asyncInfo, delta) => 
 { 
     Console.WriteLine($"Progress: {delta}"); 
     Console.WriteLine($"Response so far: {asyncInfo.GetResults().Response()}"); 
 }; 
 
var asyncOp = languageModel.GenerateResponseWithProgressAsync(prompt); 
 
 asyncOp.Progress = progressHandler; 
 
 var result = await asyncOp;  
 
 Console.WriteLine(result.Response);
using namespace winrt::Microsoft::Windows::AI::Generative;

auto languageModel = LanguageModel::CreateAsync().get();

std::string prompt = "Provide the molecular formula for glucose.";

AsyncOperationProgressHandler<LanguageModelResponse, std::string> progressHandler = 
    [](const IAsyncOperationWithProgress<LanguageModelResponse, std::string>& asyncInfo, const std::string& delta) 
    { 
        std::cout << "Progress: " << delta << std::endl; 
        std::cout << "Response so far: " << asyncInfo.GetResults().Response() << std::endl; 
    };

auto asyncOp = languageModel.GenerateResponseWithProgressAsync(prompt);

asyncOp.Progress(progressHandler); 

auto result = asyncOp.get();

std::cout << result.Response() << std::endl;

추가 리소스

Windows App SDK 및 WinRT API를 사용하여 파일 및 폴더에 액세스