Erstellen eines Phi-Silikat-Addons

In diesem Leitfaden erfahren Sie, wie Sie ein natives C#-Addon erstellen, das die Phi-Silikat-KI-API in Ihrer Electron-App aufruft. Phi Silika ist ein kleines Sprachmodell, das lokal auf Windows 11 Geräten mit NPUs (Neural Processing Units) ausgeführt wird.

Voraussetzungen

Bevor Sie diesen Leitfaden starten, stellen Sie sicher, dass Sie folgendes haben:

  • Einrichtung der Entwicklungsumgebung abgeschlossen
  • Copilot+ PC - Phi Silica erfordert ein Gerät mit einer NPU (Neural Processing Unit)

Hinweis

Wenn Sie sich nicht auf einem Copilot+ PC befinden, können Sie diesem Leitfaden folgen, um den Addon-Erstellungsprozess kennenzulernen. Der Code behandelt Geräte ohne NPU-Unterstützung ordnungsgemäß, indem eine Meldung zurückgegeben wird, die angibt, dass das Modell nicht verfügbar ist.

Schritt 1: Erstellen eines nativen C#-Add-Ons

Jetzt für den spannenden Teil - erstellen wir ein natives Addon, das Windows APIs aufruft! Wir verwenden eine C#-Vorlage, die node-api-dotnet nutzt, um JavaScript und C# zu überbrücken.

npx winapp node create-addon --template cs

Dadurch wird ein csAddon/ Ordner mit:

  • addon.cs – Ihr C#-Code, der Windows-APIs aufruft
  • csAddon.csproj – Project Datei mit Verweisen auf Windows SDK und Windows App SDK
  • README.md - Dokumentation zur Verwendung des Add-Ons

Der Befehl fügt Ihrem Addon ein build-csAddon-Skript zum Erstellen des Addons und ein clean-csAddon-Skript zum Bereinigen von Build-Artefakten hinzu.

{
  "scripts": {
    "build-csAddon": "dotnet publish ./csAddon/csAddon.csproj -c Release",
    "clean-csAddon": "dotnet clean ./csAddon/csAddon.csproj"
  }
}

Die Vorlage enthält automatisch Verweise auf beide SDKs, sodass Sie sofort mit dem Aufrufen Windows APIs beginnen können!

Überprüfen wir, ob alles ordnungsgemäß eingerichtet ist, indem wir das Add-On erstellen:

# Build the C# addon
npm run build-csAddon

Hinweis

Sie können auch ein C++-Add-On mit npx winapp node create-addon (ohne das --template Flag) erstellen. C++-Addons verwenden node-addon-api und bieten direkten Zugriff auf Windows APIs mit maximaler Leistung. Weitere Optionen finden Sie im C++-Benachrichtigungs-Addon-Handbuch für eine exemplarische Vorgehensweise oder die vollständige Befehlsdokumentation .

Schritt 2: Hinzufügen von KI-Funktionen mit Phi-Silika

Fügen wir nun eine echte Windows App SDK-API hinzu – wir verwenden das Phi-Silikadikat KI-Modell, um Text direkt auf dem Gerät zusammenzufassen.

Öffnen Sie csAddon/addon.cs und fügen Sie diesen Code hinzu:

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}";
            }
        }
    }
}

Hinweis

Phi Silika erfordert Windows 11 mit einem NPU-ausgestatteten Gerät (Copilot+ PC). Wenn Sie nicht über kompatible Hardware verfügen, gibt die API eine Meldung zurück, die angibt, dass das Modell nicht verfügbar ist. Sie können dieses Lernprogramm trotzdem abschließen und die App verpacken – sie behandelt Geräte problemlos ohne NPU-Unterstützung.

Schritt 3: Erstellen des C#-Add-Ons

Erstellen Sie nun das Addon erneut:

npm run build-csAddon

Dadurch wird Ihr C#-Code mithilfe der nativen AOT (Ahead-of-Time-Kompilierung) kompiliert, die:

  • Erstellt eine .node Binärdatei (systemeigenes Addon-Format)
  • Kürzen von nicht verwendetem Code für eine kleinere Paketgröße
  • Erfordert keine .NET-Laufzeitumgebung auf Zielcomputern
  • Bietet systemeigene Leistung

Das kompilierte Addon wird in csAddon/dist/csAddon.node sein.

Schritt 4: Testen der Windows-API

Überprüfen wir nun, ob das Add-On funktioniert, indem wir es aus dem Hauptprozess aufrufen. Öffnen Sie src/main.js und führen Sie dann die folgenden Schritte aus:

4.1. Laden des C#-Add-Ons

Fügen Sie dies mit Ihren anderen require Anweisungen oben in der Datei hinzu:

const csAddon = require('../csAddon/dist/csAddon.node');

4.2. Erstellen einer Testfunktion

Fügen Sie diese Funktion an einer beliebigen Stelle in Ihrer Datei hinzu (nach den erforderlichen Anweisungen):

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. Aufrufen der Funktion

Fügen Sie diese Zeile am Ende der createWindow() Funktion hinzu, um die API beim Start der App zu testen:

callPhiSilica();

Wenn Sie die App ausführen, wird die Zusammenfassung auf die Konsole gedruckt. Von hier aus können Sie das Addon in Ihre App integrieren, ganz gleich, ob Sie es über ein Preload-Skript für den Renderer-Prozess bereitstellen, es über IPC-Handler aufrufen oder es direkt im Hauptprozess verwenden.

Schritt 5: Hinzufügen der erforderlichen Funktion

Bevor Sie die Phi-Silika-API verwenden können, müssen Sie die erforderliche Funktion im App-Manifest deklarieren. Öffnen Sie Package.appxmanifest und fügen Sie die systemAIModels Fähigkeit im <Capabilities> Abschnitt hinzu:

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

Tip

Unterschiedliche Windows-APIs erfordern unterschiedliche Funktionen. Überprüfen Sie immer die API-Dokumentation, um zu sehen, welche Funktionen erforderlich sind. Zu den gängigen gehören : microphone, webcam, location, und bluetooth.

Schritt 6: Aktualisieren der Debugidentität

Wenn Sie Objekte ändern Package.appxmanifest oder ändern, auf die im Manifest verwiesen wird (z. B. App-Symbole), müssen Sie die Debugidentität Ihrer App aktualisieren. Laufen:

npx winapp node add-electron-debug-identity

Dieser Befehl:

  1. Liest Ihre Package.appxmanifest, um Details und Funktionen der App abzurufen.
  2. Registriert electron.exe in Ihrem node_modules mit einer temporären Identität.
  3. Ermöglicht es Ihnen, identitätsrelevante APIs ohne vollständige MSIX-Verpackung zu testen.

Hinweis

Dieser Befehl ist bereits Teil des Skripts, das wir im postinstall Einrichtungsanleitung hinzugefügt haben, sodass es automatisch nach npm install ausgeführt wird. Sie müssen sie jedoch immer dann manuell ausführen, wenn Sie:

  • Ändern Package.appxmanifest (Ändern von Funktionen, Identitäten oder Eigenschaften)
  • Aktualisieren von App-Ressourcen (Symbole, Logos usw.)
  • Erneutes Installieren oder Aktualisieren von Abhängigkeiten

Führen Sie nun Ihre App aus:

npm start

Überprüfen Sie die Konsolenausgabe - die Phi-Silika-Zusammenfassung sollte angezeigt werden!

⚠– Bekanntes Problem: App stürzt ab oder leeres Fenster (zum Erweitern klicken)

Es gibt einen bekannten Windows-Fehler bei der sparsamen Verpackung von Electron-Anwendungen, was dazu führt, dass die App beim Start abstürzt oder keine Webinhalte rendert. Das Problem wurde in Windows behoben, wurde jedoch noch nicht an alle Geräte weitergegeben.

Informationen zur Problemumgehung finden Sie unter "Setup der Entwicklungsumgebung ".

Nächste Schritte

Herzlichen Glückwunsch! Sie haben erfolgreich ein systemeigenes Addon erstellt, das Windows AI-APIs aufruft! 🎉

Jetzt sind Sie bereit für:

Oder erkunden Sie andere Guides:

Zusätzliche Ressourcen