Aan de slag met Phi Silicium in de Windows App SDK
Belangrijk
Beschikbaar in de nieuwste experimentele kanaal versie van de Windows App SDK.
Het experimentele kanaal van de Windows App SDK bevat API's en functies in een vroeg stadium van ontwikkeling. Alle API's in het experimentele kanaal zijn onderhevig aan uitgebreide revisies en ingrijpende veranderingen en kunnen op elk moment worden verwijderd uit toekomstige releases. Experimentele functies worden niet ondersteund voor gebruik in productieomgevingen en apps die deze gebruiken, kunnen niet worden gepubliceerd naar de Microsoft Store.
- PhiSilium is niet beschikbaar op het vasteland van China.
- Zelfstandige apps worden niet ondersteund.
Phi Silicium is een lokaal taalmodel dat u kunt integreren in uw Windows-apps met behulp van de Windows App SDK.
Omdat het krachtigste NPU-afgestemde lokale taalmodel van Microsoft is, is PhiSilium geoptimaliseerd voor efficiëntie en prestaties op Windows Copilot+ pc-apparaten, terwijl nog steeds veel van de mogelijkheden beschikbaar zijn in Grote taalmodellen (LLM's).
Dit optimalisatieniveau is exclusief voor het model in de Windows App SDK en is niet beschikbaar in andere versies van Phi.
Zie API-ref voor Phi Sdk in de Windows App SDKvoor API-details.
Zie voor moderatie van inhoud details, Inhoudsveiligheid met generatieve AI-API's.
Tip
Geef feedback over deze API's en hun functionaliteit door een nieuwe issue aan te maken in de GitHub-opslagplaats van de Windows App SDK (neem Phi Silica op in de titel) of door te reageren op een bestaande issue.
Voorwaarden
- Een Copilot+ PC met daarin een Qualcomm Snapdragon® X-processor.
- Arm64EC (Emulation Compatible) wordt momenteel niet ondersteund.
- Windows 11 Insider Preview build 26120.3073 (Dev and Beta Channels) of hoger moet zijn geïnstalleerd op uw apparaat.
De Windows App SDK gebruiken om Phi Silicium te integreren in uw Windows-app
Met een lokaal Phi Siliciumtaalmodel en de Windows App SDK kunt u tekstreacties genereren op gebruikersprompts.
Een volledig antwoord genereren
In dit voorbeeld ziet u hoe u een antwoord genereert op een Q-&Een prompt waarin het volledige antwoord wordt gegenereerd voordat het resultaat wordt geretourneerd.
Zorg ervoor dat het taalmodel beschikbaar is door de
IsAvailable
functie aan te roepen en te wachten totdat deMakeAvailableAsync
functie succesvol retourneert.Zodra het taalmodel beschikbaar is, maakt u een
LanguageModel
-object om ernaar te verwijzen.Verzend een tekenreeksprompt naar het model met behulp van de methode
GenerateResponseAsync
, waarmee het volledige resultaat wordt geretourneerd.
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;
Het antwoord dat in dit voorbeeld wordt gegenereerd, is:
The molecular formula for glucose is C6H12O6.
Een volledig antwoord genereren
Onze API heeft ingebouwde inhoudsbeheer die aanpasbaar is. In dit voorbeeld ziet u hoe u uw eigen drempelwaarden kunt opgeven voor het beheer van interne inhoud. Meer informatie over inhoudsbeheer met Windows Copilot Runtime.
- Maak een
LanguageModel
-object om te verwijzen naar het lokale taalmodel. *Er is al een controle uitgevoerd om ervoor te zorgen dat het Phi Silicium-taalmodel beschikbaar is op het apparaat van de gebruiker in het vorige codefragment. - Maak een
ContentFilterOptions
-object en geef de gewenste waarden op. - Verzend een tekenreeksprompt naar het model met behulp van de
GenerateResponseAsync
methode met deContentFilterOptions
als een van de parameters.
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;
Een stroom met gedeeltelijke antwoorden genereren
In dit voorbeeld ziet u hoe u een antwoord genereert op een Q&A-prompt waarin het antwoord wordt geretourneerd als een stroom met gedeeltelijke resultaten.
Maak een
LanguageModel
-object om te verwijzen naar het lokale taalmodel. *Er is al een controle uitgevoerd om ervoor te zorgen dat het Phi Silicium-taalmodel beschikbaar is op het apparaat van de gebruiker in het vorige codefragment.Haal de
LanguageModelResponse
asynchroon op in een aanroep naarGenerateResponseWithProgressAsync
. Schrijf deze naar de console terwijl het antwoord wordt gegenereerd.
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;
Vooraf gedefinieerde tekstindelingen toepassen voor consistentere antwoorden in uw app
PhiSilium bevat de mogelijkheid om vooraf gedefinieerde tekstantwoordindelingen te gebruiken in uw app. Het vooraf definiëren van een tekstindeling kan consistentere antwoordresultaten bieden met de volgende opties:
- Tekst naar tabel: converteer het promptantwoord naar een tabelindeling.
- Samenvatten: Geef een samenvatting op basis van de gegeven prompttekst.
- Herschrijf: Herformuleer de prompttekst om duidelijkheid toe te voegen en het antwoord op een gemakkelijker te begrijpen manier uit te drukken.
Maak een
LanguageModel
-object om te verwijzen naar het lokale taalmodel. *Er is al een controle uitgevoerd om ervoor te zorgen dat het Phi Silicium-taalmodel beschikbaar is op het apparaat van de gebruiker in het vorige codefragment.Maak een
LanguageModelOptions
-object en geef de vooraf gedefinieerde tekstindeling op die moet worden gebruikt door eenLanguageModelSkill
opsomming toe te wijzen aan het veld Vaardigheid van hetLanguageModelOptions
-object. De volgende waarden zijn beschikbaar voor deLanguageModelSkill
enum.Enumeratie Beschrijving LanguageModelSkill.General
Standaardwaarde, geen vooraf gedefinieerde opmaak toegepast. LanguageModelSkill.TextToTable
Converteer prompttekst naar een tabel, indien van toepassing. LanguageModelSkill.Summarize
Retourneert een samenvatting op basis van de prompttekst. LanguageModelSkill.Rewrite
Herschrijf het antwoord op de prompttekst zodat de duidelijkheid en het begrip verbeteren. Vervolgens halen we de LanguageModelResponse- asynchroon op in een aanroep naar GenerateResponseWithProgressAsync- en schrijven we deze naar de console wanneer het antwoord wordt gegenereerd.
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;
Verantwoorde AI
PhiSilium biedt ontwikkelaars een krachtig, betrouwbaar model voor het bouwen van apps met veilige, veilige AI-ervaringen. De volgende stappen zijn genomen om ervoor te zorgen dat Phi Silicium betrouwbaar, veilig en op verantwoorde wijze is gebouwd. We raden u aan de beste praktijken te bekijken die beschreven staan in Responsible Generatieve AI-ontwikkeling op Windows bij het implementeren van AI-functies in uw app.
- Grondig testen en evalueren van de modelkwaliteit om potentiële risico's te identificeren en te beperken.
- Geleidelijke uitrol van experimentele releases van Phi Silica. Na de definitieve experimentele release van Phi Silicium wordt de implementatie uitgebreid naar ondertekende apps om ervoor te zorgen dat malwarescans zijn toegepast op toepassingen met lokale modelmogelijkheden.
- PhiSilium biedt een gelokaliseerd AI-model dat een Text Content Moderation-API bevat. Deze API identificeert en filtert mogelijk schadelijke inhoud in zowel de invoer als de door AI gegenereerde uitvoer. Het lokale model voor inhoudsbeheer is gebaseerd op het Azure AI Content Safety--model voor inhoudsbeheer en biedt vergelijkbare prestaties. Zie Beheer van tekstinhoud met Windows Copilot Runtime voor een beschrijving van filteropties op ernstniveau en een codevoorbeeld waarin wordt gedemonstreerd hoe u deze opties implementeert.
Belangrijk
Geen inhoudsveiligheidssysteem is onfeilbaar en er kunnen incidentele fouten optreden, dus we raden u aan aanvullende responsible AI-tools en praktijken te integreren. Zie Verantwoordelijke Generatieve AI-ontwikkeling op Windowsvoor meer informatie.
Verwante inhoud
- inhoudsbeheer met Windows Copilot Runtime-
- Toegang tot bestanden en mappen met Windows App SDK en WinRT API's
- Ontwikkelen van verantwoorde generatieve AI-toepassingen en -functies op Windows
- API-ref voor PhiSilium-API's in de Windows App SDK-
- Windows App SDK
- meest recente releaseopmerkingen voor de Windows App SDK-