JavaScript에서 Phi Silica 호출(JS 바인딩)

이 가이드에서는 생성된 JS 바인딩을 사용하여 Electron JavaScript에서 직접 Windows 앱 SDK Phi Silica 텍스트 요약 API를 호출하는 방법을 보여 줍니다.

사전 요구 사항

이 가이드를 시작하기 전에 다음을 수행했는지 확인합니다.

  • 개발 환경 설정을 완료했습니다.
  • Copilot+ PC 테스트했습니다. Phi Silica에는 로컬 언어 모델을 지원하는 하드웨어가 필요합니다.

1단계: AI 기능 추가

Phi Silica에는 systemAIModels 제한된 기능이 필요합니다. <Capabilities> 내부의 Package.appxmanifest에 이를 추가합니다.

<Capabilities>
  <rescap:Capability Name="runFullTrust" />
  <rescap:Capability Name="systemAIModels" />
</Capabilities>

매니페스트를 변경한 후 디버그 ID를 새로 고칩니다.

npx winapp node add-electron-debug-identity

2단계: 전자 메인 프로세스에서 피 실리카 호출

생성된 바인딩을 #winapp/bindings를 통해 가져오고, TextSummarizer을 생성한 다음, createWindow()의 끝에서 이를 호출하여 모든 것이 정상적으로 작동하는지 확인합니다.

@microsoft/dynwinrt-codegen0.1.0-preview.8 필요 — 이전 프로젝트용 대체 방법은 Electron 시작하기를 참조하세요.

// src/index.js (Electron main, CommonJS)
const {
  AIFeatureReadyState,
  LanguageModel,
  TextSummarizer,
} = require('#winapp/bindings');

const callPhiSilica = async () => {
  console.log('Summarizing with Phi Silica:');

  const readyState = LanguageModel.getReadyState();
  if (readyState !== AIFeatureReadyState.Ready && readyState !== AIFeatureReadyState.NotReady) {
    console.log('Summary: Model is not available');
    return;
  }
  if (readyState === AIFeatureReadyState.NotReady) {
    await LanguageModel.ensureReadyAsync();
  }

  const languageModel = await LanguageModel.createAsync();
  try {
    const summarizer = TextSummarizer.createInstance(languageModel);
    const result = await summarizer.summarizeParagraphAsync(
      "The Windows App Development CLI lets Electron apps call Windows-native APIs from JavaScript. Package identity enables features such as notifications and background tasks."
    );
    console.log('Summary:', result.text);
  } finally {
    languageModel.close();
  }
};

const createWindow = () => {
  // ... existing window creation code ...

  // Test the Phi Silica AI API
  callPhiSilica();
};

메모

getReadyState()는 , Ready또는 NotReadyDisabledByUser. 중 NotSupportedOnCurrentSystem하나를 반환합니다. 호출 ensureReadyAsync() 은 아직 준비가 되지 않은 경우 시스템을 트리거하여 모델을 다운로드/초기화합니다.

3단계: 실행

npm start

콘솔 출력을 확인합니다. Phi Silica 요약이 인쇄되어 표시됩니다.

디바이스에서 모델을 사용할 수 없는 경우 함수는 로깅합니다 "Summary: Model is not available". 지원되는 하드웨어(Copilot+ PC)에서 실행 중이고 매니페스트에 포함되어 있는지 확인합니다systemAIModels.

여기에서 요약 도우미를 앱에 통합할 수 있습니다. 즉, 사전 로드 스크립트를 통해 렌더러에 노출하거나, IPC 처리기에 연결하거나, 기본 프로세스에서 직접 호출할 수 있습니다.

다음 단계

축하합니다! 이제 JavaScript에서 직접 Phi Silica를 호출하고 있습니다( C# 추가 기능 없음, 빌드 단계 없음 node-gyp ). 🎉

이제 다음을 수행할 준비가 되었습니다.

  • 배포용 앱 패키지 - 배송할 수 있는 MSIX를 생성합니다( @microsoft/dynwinrt 런타임은 이미 사용자 dependencies에 있습니다).

또는 다른 가이드를 살펴보세요.

추가 리소스