Chamar Phi Silica a partir de JavaScript (bindings JS)

Este guia mostra como invocar diretamente do JavaScript do Electron a API Phi Silica de resumo de texto do SDK de Aplicações Windows, utilizando bindings JavaScript gerados.

Pré-requisitos

Antes de começar este guia, certifique-se de que:

Passo 1: Adicionar a capacidade de IA

A Phi Silica requer essa systemAIModels capacidade limitada. Adicione-o ao Package.appxmanifest dentro de <Capabilities>:

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

Após alterar o manifesto, atualize a identidade de depuração:

npx winapp node add-electron-debug-identity

Passo 2: Invocar o Phi Silica a partir do processo principal do Electron

Importe os bindings gerados através de #winapp/bindings, crie um TextSummarizer e chame-o no final de createWindow() para verificar se tudo funciona:

Requer @microsoft/dynwinrt-codegen0.1.0-preview.8 — veja Comece com o Electron para alternativas de projetos mais antigos.

// 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();
};

Note

getReadyState() devolve um de Ready, NotReady, DisabledByUser, ou NotSupportedOnCurrentSystem. A chamada ensureReadyAsync() faz com que o sistema descarregue/inicialize o modelo caso ainda não esteja pronto.

Passo 3: Executa

npm start

Consulta a saída da consola — deves ver o resumo da Phi Silica impresso!

Se o modelo não estiver disponível no dispositivo, a função regista "Summary: Model is not available". Certifique-se de que está a correr em hardware suportado (Copilot+ PC) e que o manifesto inclui systemAIModels.

A partir daqui, pode integrar o resumidor na sua aplicação como quiser — expondo-o através de um script de pré-carregamento no processo de renderização, ligando-o a manipuladores de IPC ou chamando-o diretamente no processo principal.

Próximas Etapas

Parabéns! Agora estás a chamar Phi Silica diretamente a partir do JavaScript — sem addon C#, sem node-gyp passo de compilação. 🎉

Agora está pronto para:

Ou explore outros guias:

Recursos adicionais