Kom igång med Phi Silica i Windows App SDK
Viktig
Tillgänglig i den senaste experimentella kanalen version av Windows App SDK.
Windows App SDK:s experimentella kanal innehåller API:er och funktioner i tidiga utvecklingsstadier. Alla API:er i den experimentella kanalen är föremål för omfattande revisioner och icke-bakåtkompatibla ändringar och kan när som helst tas bort från efterföljande versioner. Experimentella funktioner stöds inte för användning i produktionsmiljöer och appar som använder dem kan inte publiceras till Microsoft Store.
- Phi Silica är inte tillgängligt på kinas fastland.
- Fristående appar stöds inte.
Phi Silica är en lokal språkmodell som du kan integrera i dina Windows-appar med hjälp av Windows App SDK.
Som Microsofts mest kraftfulla NPU-anpassade lokala språkmodell är Phi Silica optimerad för effektivitet och prestanda på Windows Copilot+-datorer samtidigt som många av funktionerna som finns i stora språkmodeller (LLM) fortfarande erbjuds.
Den här optimeringsnivån är exklusiv för modellen i Windows App SDK och är inte tillgänglig i andra versioner av Phi.
För API-detaljer, se API-referensen för Phi Silica i Windows App SDK.
Information om innehållsmodereringfinns i Innehållssäkerhet med generativa AI-API:er.
Tips
Ge feedback om dessa API:er och deras funktioner genom att skapa en nya i GitHub-lagringsplatsen för Windows App SDK (inkludera Phi Silica- i rubriken) eller genom att svara på ett befintligt problem.
Förutsättningar
- En Copilot+ PC som innehåller en Qualcomm Snapdragon® X-processor.
- Arm64EC (emuleringskompatibel) stöds inte för närvarande.
- Windows 11 Insider Preview Build 26120.3073 (Dev- och Beta-kanaler) eller senare måste installeras på enheten.
Använda Windows App SDK för att integrera Phi Silica i din Windows-app
Med en lokal Phi Silica-språkmodell och Windows App SDK kan du generera textsvar till användarfrågor.
Generera ett fullständigt svar
Detta exempel visar hur du skapar ett svar på en Q&A-prompt där det fullständiga svaret genereras innan resultatet skickas tillbaka.
Kontrollera att språkmodellen är tillgänglig genom att anropa
IsAvailable
-metoden och vänta tillsMakeAvailableAsync
-metoden returnerar framgångsrikt.När språkmodellen är tillgänglig skapar du ett
LanguageModel
objekt som refererar till den.Skicka en strängprompt till modellen med hjälp av metoden
GenerateResponseAsync
, som returnerar det fullständiga resultatet.
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;
Svaret som genereras av det här exemplet är:
The molecular formula for glucose is C6H12O6.
Generera ett fullständigt svar
Vårt API har inbyggd innehållsmoderering som är anpassningsbar. Det här exemplet visar hur du anger dina egna tröskelvärden för den interna innehållsmodereringen. Läs mer om innehållsmoderering med Windows Copilot Runtime.
- Skapa ett
LanguageModel
objekt som refererar till den lokala språkmodellen. *En kontroll har redan utförts för att säkerställa att språkmodellen Phi Silica är tillgänglig på användarens enhet i föregående kodfragment. - Skapa ett
ContentFilterOptions
objekt och ange önskade värden. - Skicka en strängprompt till modellen med hjälp av metoden
GenerateResponseAsync
medContentFilterOptions
som en av parametrarna.
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;
Generera en ström med partiella svar
Det här exemplet visar hur du genererar ett svar på en Q-&A-fråga där svaret returneras som en ström med partiella resultat.
Skapa ett
LanguageModel
objekt som refererar till den lokala språkmodellen. *En kontroll har redan utförts för att säkerställa att språkmodellen Phi Silica är tillgänglig på användarens enhet i föregående kodfragment.Asynkront hämta
LanguageModelResponse
i ett anrop tillGenerateResponseWithProgressAsync
. Skriv det till konsolen när svaret genereras.
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;
Använda fördefinierade textformat för mer konsekventa svar i din app
Phi Silica innehåller möjligheten att fördefiniera textsvarsformat för användning i din app. Fördefinierade textformat kan ge mer konsekventa svarsresultat med följande alternativ:
- text till tabell: Konvertera promptsvaret till ett tabellformat.
- Sammanfatta: Returnera en sammanfattning baserat på prompttexten.
- Skriv om: Omformulera prompttexten för att öka tydligheten och uttrycka svaret på ett enklare sätt.
Skapa ett
LanguageModel
objekt som refererar till den lokala språkmodellen. *En kontroll har redan utförts för att säkerställa att språkmodellen Phi Silica är tillgänglig på användarens enhet i föregående kodfragment.Skapa ett
LanguageModelOptions
-objekt och ange det fördefinierade textformatet som ska användas genom att tilldela enLanguageModelSkill
-uppräkning till Skill-fältet iLanguageModelOptions
-objektet. Följande värden är tillgängliga för uppräkningenLanguageModelSkill
.Enum Beskrivning LanguageModelSkill.General
Standardvärde, ingen fördefinierad formatering tillämpas. LanguageModelSkill.TextToTable
Konvertera prompttext till en tabell om det är tillämpligt. LanguageModelSkill.Summarize
Returnera en sammanfattning baserat på prompttexten. LanguageModelSkill.Rewrite
Skriv om prompttextsvaret för att förbättra tydligheten och förståelsen. Sedan hämtar vi asynkront LanguageModelResponse- i ett anrop till GenerateResponseWithProgressAsync och skriver den till konsolen när svaret genereras.
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;
Ansvarsfull AI
Phi Silica ger utvecklare en kraftfull, tillförlitlig modell för att skapa appar med säkra och säkra AI-upplevelser. Följande steg har vidtagits för att säkerställa att Phi Silica är tillförlitligt, säkert och byggt på ett ansvarsfullt sätt. Vi rekommenderar att du granskar de metodtips som beskrivs i Ansvarsfull generativ AI-utveckling i Windows när du implementerar AI-funktioner i din app.
- Noggrann testning och utvärdering av modellkvaliteten för att identifiera och minimera potentiella risker.
- Experimentella versioner av Phi Silica rullas ut inkrementellt. Efter den sista experimentella versionen av Phi Silica utökas distributionen till signerade appar för att säkerställa att skanningar av skadlig kod har tillämpats på program med lokala modellfunktioner.
- Phi Silica tillhandahåller en lokaliserad AI-modell som innehåller ett API för textinnehållsmoderering. Det här API:et identifierar och filtrerar potentiellt skadligt innehåll i både indata och AI-genererade utdata. Den lokala textinnehållsmodereringsmodellen baseras på Azure AI Content Safety modell för innehållsmoderering och ger liknande prestanda. Se textinnehållsmoderering med Windows Copilot Runtime för en beskrivning av filteralternativ på allvarlighetsgrad och ett kodexempel som visar hur du implementerar dessa alternativ.
Viktig
Inget system för innehållssäkerhet är ofelbart och ibland kan fel uppstå, så vi rekommenderar att du integrerar ytterligare verktyg och metoder för ansvarsfull AI (RAI). Mer information finns i Ansvarsfull generativ AI-utveckling i Windows.