Freigeben über


Erste Schritte mit Phi Silika im Windows App SDK

Wichtig

Im neuesten experimentellen Kanal-Release für das Windows App SDK verfügbar.

Der experimentelle Kanal des Windows App SDK enthält APIs und Features in frühen Entwicklungsphasen. Alle APIs im experimentellen Kanal unterliegen umfangreichen Überarbeitungen und Breaking Changes und können jederzeit aus nachfolgenden Versionen entfernt werden. Die Verwendung experimenteller Features wird in Produktionsumgebungen nicht unterstützt. Apps, die sie verwenden, können im Microsoft Store nicht veröffentlicht werden.

  • Phi Silica ist in China nicht verfügbar.
  • Nicht gepackte Apps werden nicht unterstützt.

Phi Silica ist ein lokales Sprachmodell, das Sie mit dem Windows App SDK in Ihre Windows-Apps integrieren können.

Als leistungsstärkstes lokales Sprachmodell von Microsoft ist Phi Silika für Effizienz und Leistung auf Windows Copilot+ PCs optimiert und bietet weiterhin viele der Funktionen in großen Sprachmodellen (LLMs).

Diese Optimierungsstufe ist exklusiv für das Modell im Windows App SDK und steht in anderen Versionen von Phi nicht zur Verfügung.

API-Details sind der API-Referenz für Phi Silica im Windows App SDK zu entnehmen.

Details zur Inhaltsmoderation finden Sie unter Inhaltssicherheit mit generativen KI-APIs.

Tipp

Senden Sie Ihr Feedback zu diesen APIs und deren Funktionalität, indem Sie ein neues Issue im GitHub-Repository des Windows App SDK erstellen (mit Phi Silica im Titel) oder indem Sie auf ein vorhandenes Issue antworten.

Voraussetzungen

Verwenden des Windows App SDK zum Integrieren von Phi Silica in Ihre Windows-App

Mit einem lokalen Phi Silica-Sprachmodell und dem Windows App SDK können Sie Textantworten für Benutzeraufforderungen generieren.

Generieren einer vollständigen Antwort

In diesem Beispiel wird gezeigt, wie Sie eine Antwort auf eine F&A-Eingabeaufforderung generieren, bei der die vollständige Antwort generiert wird, bevor das Ergebnis zurückgegeben wird.

  1. Stellen Sie sicher, dass das Sprachmodell verfügbar ist, indem Sie die IsAvailable-Methode aufrufen und auf eine erfolgreich Rückgabe der MakeAvailableAsync-Methode warten.

  2. Sobald das Sprachmodell verfügbar ist, erstellen Sie ein LanguageModel-Objekt und verweisen darauf.

  3. Senden Sie mit der GenerateResponseAsync-Methode einen Zeichenfolgenprompt an das Modell, mit dem das vollständige Ergebnis zurückgegeben wird.

using Microsoft.Windows.AI.Generative; 
 
 
if (!LanguageModel.IsAvailable()) 
{ 
   var op = await LanguageModel.MakeAvailableAsync(); 
} 
 
using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
string prompt = "Provide the molecular formula for glucose."; 
 
var result = await languageModel.GenerateResponseAsync(prompt); 
 
Console.WriteLine(result.Response); 
using namespace winrt::Microsoft::Windows::AI::Generative;

if (!LanguageModel::IsAvailable()) 
{
    auto op = LanguageModel::MakeAvailableAsync().get();
}

auto languageModel = LanguageModel::CreateAsync().get();

std::string prompt = "Provide the molecular formula for glucose.";

auto result = languageModel.GenerateResponseAsync(prompt).get();

std::cout << result.Response() << std::endl;

Die von diesem Beispiel generierte Antwort lautet:

The molecular formula for glucose is C6H12O6.

Generieren einer vollständigen Antwort

Unsere API verfügt über integrierte Inhaltsmoderation, die Sie anpassen können. Dieses Beispiel zeigt, wie Sie eigene Schwellenwerte für die interne Inhaltsmoderation angeben. Erfahren Sie mehr über Inhaltsmoderation mit Windows Copilot Runtime.

  1. Erstellen Sie ein LanguageModel-Objekt, das auf das lokale Sprachmodell verweist. *Im vorherigen Codeausschnitt wurde bereits eine Überprüfung durchgeführt, um sicherzustellen, dass das Phi Silica-Sprachmodell auf dem Gerät des Benutzers verfügbar ist.
  2. Erstellen Sie ein ContentFilterOptions-Objekt, und geben Sie die bevorzugten Werte an.
  3. Senden Sie mit der GenerateResponseAsync-Methode und ContentFilterOptions als einen der Parameter einen Zeichenfolgenprompt an das Modell.
using Microsoft.Windows.AI.Generative; 

using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
string prompt = "Provide the molecular formula for glucose."; 

ContentFilterOptions filterOptions = new ContentFilterOptions();
filterOptions.PromptMinSeverityLevelToBlock.ViolentContentSeverity = SeverityLevel.Medium;
filterOptions.ResponseMinSeverityLevelToBlock.ViolentContentSeverity = SeverityLevel.Medium;
 
// var result = await languageModel.GenerateResponseAsync(null, prompt, filterOptions); 
 
Console.WriteLine(result.Response);
using namespace winrt::Microsoft::Windows::AI::Generative;

auto languageModel = LanguageModel::CreateAsync().get();

std::string prompt = "Provide the molecular formula for glucose.";

ContentFilterOptions contentFilter = ContentFilterOptions(); 
contentFilter.PromptMinSeverityLevelToBlock().ViolentContentSeverity(SeverityLevel::Medium); 
contentFilter.ResponseMinSeverityLevelToBlock().ViolentContentSeverity(SeverityLevel::Medium); 

// auto result = languageModel.GenerateResponseAsync(nullptr, prompt, filterOptions).get();

std::cout << result.Response() << std::endl;

Generieren eines Datenstroms mit teilweisen Antworten

In diesem Beispiel wird gezeigt, wie eine Antwort auf eine F&A-Eingabeaufforderung generiert wird, in der die Antwort als Datenstrom von Teilergebnissen zurückgegeben wird.

  1. Erstellen Sie ein LanguageModel-Objekt, das auf das lokale Sprachmodell verweist. *Im vorherigen Codeausschnitt wurde bereits eine Überprüfung durchgeführt, um sicherzustellen, dass das Phi Silica-Sprachmodell auf dem Gerät des Benutzers verfügbar ist.

  2. Rufen Sie die LanguageModelResponse asynchron in einem Aufruf von GenerateResponseWithProgressAsync ab. Schreiben Sie in die Konsole, während die Antwort generiert wird.

using Microsoft.Windows.AI.Generative; 

using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
string prompt = "Provide the molecular formula for glucose."; 
 
AsyncOperationProgressHandler<LanguageModelResponse, string> 
progressHandler = (asyncInfo, delta) => 
{ 
    Console.WriteLine($"Progress: {delta}"); 
    Console.WriteLine($"Response so far: {asyncInfo.GetResults().Response()}"); 
 }; 
 
var asyncOp = languageModel.GenerateResponseWithProgressAsync(prompt); 
 
asyncOp.Progress = progressHandler; 
 
var result = await asyncOp;  
 
Console.WriteLine(result.Response);
using namespace winrt::Microsoft::Windows::AI::Generative;

auto languageModel = LanguageModel::CreateAsync().get();

std::string prompt = "Provide the molecular formula for glucose.";

AsyncOperationProgressHandler<LanguageModelResponse, std::string> progressHandler = 
    [](const IAsyncOperationWithProgress<LanguageModelResponse, std::string>& asyncInfo, const std::string& delta) 
    { 
        std::cout << "Progress: " << delta << std::endl; 
        std::cout << "Response so far: " << asyncInfo.GetResults().Response() << std::endl; 
    };

auto asyncOp = languageModel.GenerateResponseWithProgressAsync(prompt);

asyncOp.Progress(progressHandler); 

auto result = asyncOp.get();

std::cout << result.Response() << std::endl;

Anwenden vordefinierter Textformate für konsistentere Antworten in Ihrer App

Phi Silika bietet die Möglichkeit, Textantwortformate zur Nutzung in Ihrer App vorab zu definieren. Das Vordefinieren eines Textformats kann mit den folgenden Optionen zu konsistenteren Antwortergebnissen führen:

  • Text zu Tabelle: Wandeln Sie die Antwort auf die Aufforderung in ein Tabellenformat um.
  • Zusammenfassung: Geben Sie eine Zusammenfassung basierend auf dem Text der Eingabeaufforderung zurück.
  • Umschreiben: Der Prompttext wird klarer neu formuliert und die Antwort verständlicher ausgedrückt.
  1. Erstellen Sie ein LanguageModel-Objekt, das auf das lokale Sprachmodell verweist. *Im vorherigen Codeausschnitt wurde bereits eine Überprüfung durchgeführt, um sicherzustellen, dass das Phi Silica-Sprachmodell auf dem Gerät des Benutzers verfügbar ist.

  2. Erstellen Sie ein LanguageModelOptions-Objekt, und geben Sie das vordefinierte Textformat an, das verwendet werden soll. Weisen Sie hierfür eine LanguageModelSkill-Enumeration dem Feld „Skill“ des LanguageModelOptions-Objekts zu. Die folgenden Werte sind für das LanguageModelSkill-Enum verfügbar.

    Enum Beschreibung
    LanguageModelSkill.General Standardwert, keine vordefinierte Formatierung wird angewendet.
    LanguageModelSkill.TextToTable Prompttext ggf. in eine Tabelle konvertieren.
    LanguageModelSkill.Summarize Zusammenfassung basierend auf dem Prompttext zurückgeben.
    LanguageModelSkill.Rewrite Um Klarheit und Verständnis zu verbessern, schreiben Sie den Antworttext der Eingabeaufforderung um.
  3. Anschließend rufen wir LanguageModelResponse asynchron in einem Aufruf von GenerateResponseWithProgressAsync ab und schreiben sie in die Konsole, während die Antwort generiert wird.

using Microsoft.Windows.AI.Generative; 
 
using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
string prompt = "This is a large amount of text I want to have summarized.";

LanguageModelOptions options = new LanguageModelOptions {
    Skill = LanguageModelSkill.Summarize
};
 
var result = await languageModel.GenerateResponseAsync(options, prompt); 
 
Console.WriteLine(result.Response); 
using namespace winrt::Microsoft::Windows::AI::Generative;

auto languageModel = LanguageModel::CreateAsync().get();

std::string prompt = "This is a large amount of text I want to have summarized.";

LanguageModelOptions options = LanguageModelOptions();
options.Skill = LanguageModelSkill.Summarize;

auto result = languageModel.GenerateResponseAsync(options, prompt).get();

std::cout << result.Response() << std::endl;

Verantwortungsvolle KI

Phi Silica bietet Entwicklern ein leistungsstarkes, vertrauenswürdiges Modell zum Erstellen von Apps mit sicheren und geschützten KI-Erfahrungen. Die folgenden Schritte wurden unternommen, um sicherzustellen, dass Phi Silica vertrauenswürdig, sicher und verantwortungsvoll entwickelt wurde. Wir empfehlen, die in verantwortungsvolle Entwicklung generativer KI auf Windows beschriebenen Best Practices zu überprüfen, wenn Sie KI-Features in Ihrer App implementieren.

  • Umfassende Tests und Bewertungen der Modellqualität, um potenzielle Risiken zu identifizieren und zu mindern.
  • Inkrementelles Rollout von experimentellen Phi Silica-Versionen. Nach der finalen experimentellen Version von Phi Silica wird die Einführung auf signierte Apps ausgeweitet, um sicherzustellen, dass Malware-Scans auf Anwendungen mit lokalen Modellfähigkeiten angewendet wurden.
  • Phi Silica bietet ein lokalisiertes KI-Modell, das eine Textinhaltsmoderations-API enthält. Diese API identifiziert und filtert potenziell schädliche Inhalte sowohl in der Eingabe- als auch in der KI-generierten Ausgabe. Das lokale Modell zur Moderation von Textinhalten basiert auf dem Modell der Azure KI Inhaltssicherheit für die Inhaltsmoderation und bietet eine ähnliche Leistung. Unter Textinhaltsmoderation mit Windows Copilot Runtime finden Sie eine Beschreibung der Filteroptionen zum Schweregrad und ein Codebeispiel, das die Implementierung dieser Optionen veranschaulicht.

Wichtig

Es ist kein Sicherheitssystem für Inhalte unfehlbar, und gelegentliche Fehler können auftreten, daher empfehlen wir die Integration zusätzlicher Verantwortlicher KI -Tools und -Praktiken. Weitere Informationen finden Sie unter "Responsible Generative AI Development" unter Windows.