이 가이드에서는 생성된 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-codegen≥0.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에 있습니다).
또는 다른 가이드를 살펴보세요.
- JavaScript에서 알림 표시 - JS 바인딩을 통해 Windows 앱 SDK 알림을 표시합니다.
- JavaScript에서 Windows API 호출 - 파일을 선택하고 JS 바인딩을 사용하여 이미지 차원을 읽습니다.
-
JavaScript에서 WinML 실행 - Windows 앱 SDK ML 공급자 검색을
onnxruntime-node사용합니다. - Phi Silica Addon 만들기 - 네이티브 C# 추가 기능 대응
- 시작 개요 - 기본 가이드로 돌아갑니다.
추가 리소스
-
winapp CLI 설명서 - 전체 CLI 참조(
init,restore,node generate-bindings). - 샘플 Electron 앱 - JS 바인딩을 포함한 전체 작업 예제입니다.
- @microsoft/dynwinrt - 생성된 바인딩을 구동하는 런타임입니다.
- @microsoft/dynwinrt-codegen - 코드 생성기입니다.
Windows developer