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
- Ein CoPilot+ PC mit einem Qualcomm Snapdragon® X-Prozessor.
- Arm64EC (Emulation Compatible) wird derzeit nicht unterstützt.
- Windows 11 Insider Preview Build 26120.3073 (Dev- und Beta-Kanäle) oder höher muss auf Ihrem Gerät installiert sein.
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.
Stellen Sie sicher, dass das Sprachmodell verfügbar ist, indem Sie die
IsAvailable
-Methode aufrufen und auf eine erfolgreich Rückgabe derMakeAvailableAsync
-Methode warten.Sobald das Sprachmodell verfügbar ist, erstellen Sie ein
LanguageModel
-Objekt und verweisen darauf.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.
- 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. - Erstellen Sie ein
ContentFilterOptions
-Objekt, und geben Sie die bevorzugten Werte an. - Senden Sie mit der
GenerateResponseAsync
-Methode undContentFilterOptions
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.
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.Rufen Sie die
LanguageModelResponse
asynchron in einem Aufruf vonGenerateResponseWithProgressAsync
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.
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.Erstellen Sie ein
LanguageModelOptions
-Objekt, und geben Sie das vordefinierte Textformat an, das verwendet werden soll. Weisen Sie hierfür eineLanguageModelSkill
-Enumeration dem Feld „Skill“ desLanguageModelOptions
-Objekts zu. Die folgenden Werte sind für dasLanguageModelSkill
-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. 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.
Zugehöriger Inhalt
- Inhaltsmoderation mit Windows Copilot Runtime
- Zugreifen auf Dateien und Ordner mit Windows App SDK und WinRT-APIs
- Entwickeln von verantwortungsvollen generativen KI-Anwendungen und -Features unter Windows
- API-Referenz für Phi Silica-APIs im Windows App SDK
- Windows-App-SDK
- Neueste Versionshinweise für das Windows App SDK