Phi Silika Eklentisi Oluşturma

Bu kılavuzda, Electron uygulamanızda Phi Silika AI API'sini çağıran bir C# yerel eklentisinin nasıl oluşturulacağı gösterilmektedir. Phi Silica, NPU'lara (Sinir İşlem Birimleri) sahip Windows 11 cihazlarda yerel olarak çalışan küçük bir dil modelidir.

Önkoşullar

Bu kılavuza başlamadan önce şunları yaptığınızdan emin olun:

Uyarı

Copilot+ PC değilseniz, eklenti oluşturma işlemini öğrenmek için bu kılavuzu yine de izleyebilirsiniz. Kod, modelin kullanılamadığını belirten bir ileti döndürerek NPU desteği olmayan cihazları düzgün bir şekilde işler.

1. Adım: C# Yerel Eklentisi Oluşturma

Şimdi de heyecan verici bölüm için Windows API'leri çağıran yerel bir eklenti oluşturalım! JavaScript ve C# arasında köprü oluşturmak için node-api-dotnet kullanan bir C# şablonu kullanacağız.

npx winapp node create-addon --template cs

Bu, şunu içeren bir csAddon/ klasör oluşturur:

  • addon.cs - Windows API'lerini çağıracak C# kodunuz
  • csAddon.csproj - Windows SDK ve Windows Uygulama SDK'sı referansları içeren Project Dosyası
  • README.md - Eklentiyi kullanma belgeleri

Komut, eklentiyi oluşturmak için build-csAddon betiğine ve derleme yapıtlarını temizlemek için package.json betiğine ekler.

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

Şablon her iki SDK'ya da otomatik olarak başvurular içerdiğinden, hemen Windows API'leri çağırmaya başlayabilirsiniz!

Şimdi eklentiyi oluşturarak her şeyin doğru şekilde ayarlandığını doğrulayalım:

# Build the C# addon
npm run build-csAddon

Uyarı

Ayrıca kullanarak npx winapp node create-addon (bayrak olmadan --template ) bir C++ eklentisi de oluşturabilirsiniz. C++ eklentileri node-addon-api kullanır ve maksimum performansla Windows API'lere doğrudan erişim sağlar. İzlenecek yol için C++ Bildirim Eklentisi kılavuzuna veya diğer seçenekler için tam komut belgelerine bakın.

2. Adım: Phi Silika ile Yapay Zeka Özellikleri Ekleme

Şimdi gerçek bir Windows Uygulama SDK'sı API'si ekleyelim. Metni doğrudan cihazda özetlemek için Phi Silica yapay zeka modelini kullanacağız.

Bu kodu açın csAddon/addon.cs ve ekleyin:

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

Uyarı

Phi Silica, NPU ile donatılmış bir cihazla (Copilot+ PC) Windows 11 gerektirir. Uyumlu donanımınız yoksa, API modelin kullanılamadığını belirten bir ileti döndürür. Yine de bu öğreticiyi tamamlayabilir ve uygulamayı paketleyebilirsiniz; NPU desteği olmayan cihazları zarif bir şekilde işler.

3. Adım: C# Eklentisini Oluşturma

Şimdi eklentiyi yeniden derleyin:

npm run build-csAddon

Bu, C# kodunuzu Yerel AOT (Önceden Derleme) kullanarak derler:

  • Oluşturur .node ikili dosya (yerel eklenti biçimi)
  • Kullanılmayan kodu daha küçük paket boyutu için kırpıyor
  • Hedef makinelerde .NET çalışma zamanı gerektirmez
  • Yerel performans sağlar

Derlenen eklenti csAddon/dist/csAddon.node içinde olacaktır.

4. Adım: Windows API'sini test edin

Şimdi eklentiyi ana işlemden çağırarak çalıştığını doğrulayalım. src/main.js'yi açın ve şu adımları izleyin:

4.1. C# Eklentisini yükleme

Bunu dosyanın en üstüne diğer require deyimlerinizle ekleyin:

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

4.2. Test İşlevi Oluşturma

Bu işlevi dosyanızın herhangi bir yerine ekleyin (require deyimlerinden sonra):

const callPhiSilica = async () => {
  console.log('Summarizing with Phi Silica: ')
  const result = await csAddon.Addon.summarizeText("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);
};

4.3. İşlevi Çağırma

Uygulama başlatıldığında API'yi test etmek için işlevin sonuna createWindow() şu satırı ekleyin:

callPhiSilica();

Uygulamayı çalıştırdığınızda özet konsola yazdırılır. Buradan eklentiyi uygulamanızla istediğiniz şekilde tümleştirebilirsiniz. Bunun bir ön yükleme betiği aracılığıyla işleyici işlemine açıklanması, IPC işleyicilerinden çağrılması veya doğrudan ana işlemde kullanılması olabilir.

5. Adım: Gerekli Özelliği Ekleme

Phi Silica API'sini kullanabilmeniz için önce uygulama bildiriminizde gerekli özelliği bildirmeniz gerekir. Aç Package.appxmanifest ve systemAIModels özelliğini <Capabilities> bölümüne ekleyin:

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

İpucu

Farklı Windows API'leri farklı özellikler gerektirir. Hangi özelliklerin gerekli olduğunu görmek için HER zaman API belgelerini gözden geçirin. Yaygın olanlar microphone, webcam, location ve bluetooth'dir.

6. Adım: Hata Ayıklama Kimliğini Güncelleştirme

Manifestoda belirtilen varlıkları (uygulama simgeleri gibi) veya Package.appxmanifest'yi her değiştirdiğinizde, uygulamanızın hata ayıklama kimliğini güncelleştirmeniz gerekir. Koş!

npx winapp node add-electron-debug-identity

Bu komut:

  1. Package.appxmanifest öğesini okuyarak uygulama ayrıntılarını ve özelliklerini alır
  2. electron.exe Geçici bir kimlikle kaydınızı gerçekleştirir node_modules
  3. Tam MSIX paketlemesi olmadan kimlik gerektiren API'leri test etmenizi sağlar

Uyarı

Bu komut, kurulum kılavuzuna postinstall eklediğimiz betiğin bir parçasıdır, bu nedenle komutundan sonra npm installotomatik olarak çalışır. Bununla birlikte, her seferinde el ile çalıştırmanız gerekir:

  • Değiştir Package.appxmanifest (yetenekleri, kimliği veya özellikleri değiştirme)
  • Uygulama varlıklarını (simgeler, logolar vb.) güncelleştirme
  • Bağımlılıkları yeniden yükleme veya güncelleştirme

Şimdi uygulamanızı çalıştırın:

npm start

Konsol çıkışını kontrol edin- Phi Silika özetinin yazdırıldığını görmeniz gerekir!

⚠️ Bilinen Sorun: Uygulama Kilitlenmeleri veya Boş Pencere (genişletmek için tıklayın)

Bilinen bir Windows hatası, Electron uygulamalarının seyrek paketleme yönteminde başlangıçta çökmesine veya web içeriğini göstermemesine neden olabilir. Sorun Windows düzeltildi ancak henüz tüm cihazlara yayılmadı.

Geçici çözüm için bkz. geliştirme ortamı kurulumu .

Sonraki Adımlar

Tebrikler! Windows yapay zeka API'lerini çağıran yerel bir eklentiyi başarıyla oluşturdunuz! 🎉

Artık şunu yapmaya hazırsınız:

Veya diğer kılavuzları keşfedin:

Ek Kaynaklar