Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze handleiding laat zien hoe u een systeemeigen C#-invoegtoepassing maakt die de Phi Silicium AI-API aanroept in uw Electron-app. PhiSilium is een klein taalmodel dat lokaal wordt uitgevoerd op Windows 11 apparaten met NPU's (Neural Processing Units).
Vereiste voorwaarden
Voordat u aan deze handleiding begint, moet u het volgende doen:
- De installatie van de ontwikkelomgeving is voltooid
- Copilot+ PC - Phi Silicium vereist een apparaat met een NPU (Neural Processing Unit)
Opmerking
Als u zich niet op een Copilot+ PC bevindt, kunt u deze handleiding nog steeds volgen om het proces voor het maken van invoegtoepassingen te leren. De code verwerkt apparaten zonder NPU-ondersteuning probleemloos door een bericht te retourneren dat het model niet beschikbaar is.
Stap 1: Een systeemeigen C#-invoegtoepassing maken
Laten we nu een systeemeigen invoegtoepassing maken die Windows API's aanroept. We gebruiken een C#-sjabloon die gebruikmaakt van node-api-dotnet om JavaScript en C# te overbrugmen.
npx winapp node create-addon --template cs
Hiermee maakt u een csAddon/ map met:
-
addon.cs- Uw C#-code die Windows-API's aanroept -
csAddon.csproj- Project bestand met verwijzingen naar Windows SDK en Windows App SDK -
README.md- Documentatie over het gebruik van de invoegtoepassing
Met de opdracht wordt ook een build-csAddon script aan uw package.json toegevoegd voor het bouwen van de invoegtoepassing en een clean-csAddon script voor het opschonen van buildartefacten:
{
"scripts": {
"build-csAddon": "dotnet publish ./csAddon/csAddon.csproj -c Release",
"clean-csAddon": "dotnet clean ./csAddon/csAddon.csproj"
}
}
De sjabloon bevat automatisch verwijzingen naar beide SDK's, zodat u onmiddellijk Windows API's kunt aanroepen.
Laten we controleren of alles correct is ingesteld door de invoegtoepassing te bouwen:
# Build the C# addon
npm run build-csAddon
Opmerking
U kunt ook een C++-invoegtoepassing maken met behulp van npx winapp node create-addon (zonder de --template vlag). C++ invoegtoepassingen gebruiken node-addon-api en bieden directe toegang tot Windows API's met maximale prestaties. Zie de handleiding voor de C++-meldingsinvoegtoepassing voor een overzicht of de volledige opdrachtdocumentatie voor meer opties.
Stap 2: AI-mogelijkheden toevoegen met PhiSilium
We gaan een echte Windows App SDK-API toevoegen. We gebruiken het ai-model PhiSilium om tekst rechtstreeks op het apparaat samen te vatten.
Open csAddon/addon.cs deze code en voeg deze toe:
using System;
using System.Threading.Tasks;
using Microsoft.JavaScript.NodeApi;
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Text;
namespace csAddon
{
[JSExport]
public class Addon
{
/// <summary>
/// Summarizes the provided text using the Phi Silica AI model.
/// </summary>
/// <param name="text">The text to summarize</param>
/// <returns>A summary of the input text</returns>
[JSExport]
public static async Task<string> SummarizeText(string text)
{
try
{
var readyState = LanguageModel.GetReadyState();
if (readyState is AIFeatureReadyState.Ready or AIFeatureReadyState.NotReady)
{
if (readyState == AIFeatureReadyState.NotReady)
{
await LanguageModel.EnsureReadyAsync();
}
using LanguageModel languageModel = await LanguageModel.CreateAsync();
TextSummarizer textSummarizer = new TextSummarizer(languageModel);
var result = await textSummarizer.SummarizeParagraphAsync(text);
return result.Text;
}
return "Model is not available";
}
catch (Exception ex)
{
return $"Error calling Phi Silica API: {ex.Message}";
}
}
}
}
Opmerking
PhiSilium vereist Windows 11 met een NPU-apparaat (Copilot+ PC). Als u geen compatibele hardware hebt, retourneert de API een bericht dat aangeeft dat het model niet beschikbaar is. U kunt deze zelfstudie nog steeds voltooien en de app verpakken - de app zal apparaten zonder NPU-ondersteuning soepel verwerken.
Stap 3: de C#-invoegtoepassing bouwen
Bouw de invoegtoepassing nu opnieuw:
npm run build-csAddon
Hiermee compileert u uw C#-code met behulp van systeemeigen AOT (compilatie vooraf), die:
- Maakt een
.nodebinaire bestand (native addon formaat) - Verwijdert ongebruikte code voor een kleinere bundel.
- Vereist geen .NET-runtime op doelcomputers.
- Biedt systeemeigen prestaties
De gecompileerde invoegtoepassing bevindt zich in csAddon/dist/csAddon.node.
Stap 4: de Windows-API testen
Laten we nu controleren of de invoegtoepassing werkt door deze aan te roepen vanuit het hoofdproces. Open src/main.js en volg deze stappen:
4.1. De C#-invoegtoepassing laden
Voeg dit toe met uw andere require instructies boven aan het bestand:
const csAddon = require('../csAddon/dist/csAddon.node');
4.2. Een testfunctie maken
Voeg deze functie ergens in uw bestand toe (na de vereiste instructies):
const callPhiSilica = async () => {
console.log('Summarizing with Phi Silica: ')
const result = await csAddon.Addon.summarizeText("The Windows App Development CLI is a powerful tool that bridges cross-platform development with Windows-native capabilities.");
console.log('Summary:', result);
};
4.3. De functie aanroepen
Voeg deze regel toe aan het einde van de createWindow() functie om de API te testen wanneer de app wordt gestart:
callPhiSilica();
Wanneer u de app uitvoert, wordt de samenvatting afgedrukt op de console. Vanaf hier kunt u de invoegtoepassing integreren in uw app zoals u wilt - of u deze nu via een preloadscript aan het rendererproces blootstelt, het vanuit IPC-handlers aanroept, of het direct in het main process gebruikt.
Stap 5: Vereiste mogelijkheid toevoegen
Voordat u de Phi Silicium-API kunt gebruiken, moet u de vereiste mogelijkheid declareren in uw app-manifest. Open Package.appxmanifest en voeg de systemAIModels mogelijkheid toe in de <Capabilities> sectie:
<Capabilities>
<rescap:Capability Name="runFullTrust" />
<rescap:Capability Name="systemAIModels" />
</Capabilities>
Tip
Voor verschillende Windows-API's zijn verschillende mogelijkheden vereist. Controleer altijd de API-documentatie om te zien welke mogelijkheden er nodig zijn. Veelvoorkomende zijn onder andere microphone, webcam, locationen bluetooth.
Stap 6: Foutopsporingsidentiteit bijwerken
Wanneer u Package.appxmanifest of assets die in het manifest worden vermeld (zoals app-pictogrammen) wijzigt, moet u de foutopsporingsidentiteit van uw app bijwerken. Rennen:
npx winapp node add-electron-debug-identity
Deze opdracht:
- Leest uw
Package.appxmanifestgegevens voor het ophalen van app-details en -mogelijkheden - Registreert
electron.exein uwnode_modulesmet een tijdelijke identiteit - Hiermee kunt u API's waarvoor authenticatie vereist is testen zonder volledige MSIX-verpakkingen
Opmerking
Deze opdracht maakt al deel uit van het postinstall script dat we in de installatiehandleiding hebben toegevoegd, dus deze wordt automatisch uitgevoerd na npm install. U moet deze echter handmatig uitvoeren wanneer u het volgende doet:
- Wijzigen
Package.appxmanifest(mogelijkheden, identiteit of eigenschappen wijzigen) - App-assets bijwerken (pictogrammen, logo's, enzovoort)
- Afhankelijkheden opnieuw installeren of bijwerken
Voer nu uw app uit:
npm start
Controleer de console-uitvoer. U ziet dat de phi-siliciumsamenvatting wordt afgedrukt.
⚠️ Bekend probleem: app-crashes of een leeg venster (klik om uit te vouwen)
Er is een bekende Windows-bug bij sparse packaging van Electron-toepassingen die ervoor zorgt dat de app vastloopt bij het starten of geen webinhoud weergeeft. Het probleem is opgelost in Windows, maar is nog niet doorgegeven aan alle apparaten.
Zie inrichting van de ontwikkelomgeving voor een tijdelijke oplossing.
Volgende stappen
Gefeliciteerd! U hebt een systeemeigen invoegtoepassing gemaakt die Windows AI-API's aanroept. 🎉
U kunt nu het volgende doen:
- Uw app voor distributie verpakken - Maak een MSIX-pakket dat u kunt distribueren
Of bekijk andere handleidingen:
- Een WinML-invoegtoepassing maken - Meer informatie over het gebruik van Windows Machine Learning
- Overzicht Aan de slag - Ga terug naar de hoofdhandleiding
Aanvullende informatiebronnen
- documentatie voor winapp CLI - Volledige CLI-verwijzing
- Voorbeeld van Electron-app - Volledig werkvoorbeeld
- Windows AI-invoegtoepassing voor Electron - De Windows AI-invoegtoepassing voor Electron is een Node.js systeemeigen invoegtoepassing die toegang biedt tot de Windows AI-API's rechtstreeks vanuit JavaScript.
- AI Dev Gallery - Voorbeeldgalerie van alle AI-API's
- Windows App SDK Samples - Verzameling van Windows App SDK voorbeelden
- node-api-dotnet - C# ↔ JavaScript-interop-bibliotheek
Windows developer