Llamada a PhiLice desde JavaScript (enlaces JS)

En esta guía se muestra cómo invocar directamente la API de resumido de texto Phi Silica de SDK de Aplicaciones para Windows desde JavaScript de Electron mediante enlaces de JS generados.

Prerequisites

Antes de iniciar esta guía, asegúrese de que tiene:

Paso 1: Adición de la funcionalidad de IA

Phi Silica requiere la systemAIModels capacidad restringida. Añádalo a Package.appxmanifest dentro de <Capabilities>:

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

Después de cambiar el manifiesto, actualice la identidad de depuración:

npx winapp node add-electron-debug-identity

Paso 2: Invocar Phi Silica desde el proceso principal de Electron

Importe los enlaces generados a través de #winapp/bindings, cree un TextSummarizer e invóquelo al final de createWindow() para comprobar que todo funciona:

Requiere @microsoft/dynwinrt-codegen0.1.0-preview.8 — consulta Primeros pasos con Electron para soluciones alternativas para proyectos antiguos.

// 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() devuelve uno de Ready, NotReady, DisabledByUsero NotSupportedOnCurrentSystem. Llamar a ensureReadyAsync() hace que el sistema descargue/inicialice el modelo si aún no está listo.

Paso 3: Ejecutarlo

npm start

Compruebe la salida de la consola — debería ver el resumen de PhiLice impreso!

Si el modelo no está disponible en el dispositivo, la función registra "Summary: Model is not available". Asegúrese de que se está ejecutando en hardware admitido (Copilot+ PC) y de que el manifiesto incluye systemAIModels.

Desde aquí, puedes integrar la función de resumen en tu aplicación como quieras: exponiéndola al proceso de renderizado mediante un script de precarga, conectándola a controladores de IPC o llamándola directamente en el proceso principal.

Pasos siguientes

¡Felicidades! Ahora puedes llamar a Phi Silica directamente desde JavaScript, sin complemento de C# ni paso de compilación node-gyp. 🎉

Ahora ya está listo para:

O explore otras guías:

Recursos adicionales