Introduzione a Phi Silica nel SDK per app di Windows
Importante
Disponibile nell'ultimo rilascio del canale sperimentale di Windows App SDK.
Il canale sperimentale di Windows App SDK include API e funzionalità nelle fasi iniziali dello sviluppo. Tutte le API nel canale sperimentale sono soggette a revisioni estese e modifiche di rilievo e possono essere rimosse dalle versioni successive in qualsiasi momento. Le funzionalità sperimentali non sono supportate per l'uso in ambienti di produzione e le app che le usano non possono essere pubblicate in Microsoft Store.
- Phi Silica non è disponibile in Cina.
- Le app non in pacchetto non sono supportate.
Phi Silica è un modello linguistico locale che è possibile integrare nelle app di Windows usando Windows App SDK.
Poiché il modello di linguaggio locale ottimizzato per NPU più potente di Microsoft, Phi Silica è ottimizzato per l'efficienza e le prestazioni nei pc Windows Copilot+ e offre ancora molte delle funzionalità disponibili nei modelli di linguaggio di grandi dimensioni(LLMs).
Questo livello di ottimizzazione è esclusivo per il modello all'interno del SDK per app di Windows e non è disponibile in altre versioni di Phi.
Per i dettagli dell'API , vedere il Riferimento API per Phi Silica nel Windows App SDK.
Per informazioni dettagliate sulla moderazione del contenuto , vedere Sicurezza dei contenuti con le API di intelligenza artificiale generativa.
Suggerimento
Inviare commenti e suggerimenti su queste API e le relative funzionalità creando un nuovo problema nel repository GitHub di Windows App SDK (includere Phi Silica nel titolo) o rispondendo a un problema esistente .
Prerequisiti
-
PC CoPilot+ contenente un processore Qualcomm Snapdragon® X Elite.
- Arm64EC (compatibile con emulazione) non è attualmente supportato.
- Windows 11 Insider Preview Build 26120.3073 (Dev and Beta Channels) o versione successiva devono essere installati sul tuo dispositivo.
Usa il SDK per app di Windows per integrare Phi Silica nella tua app di Windows
Con un modello linguistico Phi Silica locale e il SDK per app di Windows è possibile generare risposte di testo alle richieste degli utenti.
Generare una risposta completa
In questo esempio viene illustrato come generare una risposta a una richiesta di domande e risposte in cui viene generata la risposta completa prima che venga restituito il risultato.
Verificare che il modello linguistico sia disponibile chiamando il metodo
IsAvailable
e attendendo che il metodoMakeAvailableAsync
venga restituito correttamente.Quando il modello linguistico è disponibile, creare un oggetto
LanguageModel
per farvi riferimento.Inviare una richiesta di stringa al modello usando il metodo
GenerateResponseAsync
, che restituisce il risultato completo.
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;
La risposta generata da questo esempio è:
The molecular formula for glucose is C6H12O6.
Generare una risposta completa
L'API ha creato la moderazione del contenuto che è personalizzabile. In questo esempio viene illustrato come specificare soglie personalizzate per la moderazione del contenuto interno. Altre informazioni sulla moderazione del contenuto di con Windows Copilot Runtime.
- Creare un oggetto
LanguageModel
per fare riferimento al modello linguistico locale. *È già stato eseguito un controllo per assicurarsi che il modello linguistico Phi Silica sia disponibile nel dispositivo dell'utente nel frammento di codice precedente. - Creare un oggetto
ContentFilterOptions
e specificare i valori preferiti. - Inviare una richiesta di stringa al modello usando il metodo
GenerateResponseAsync
con ilContentFilterOptions
come uno dei parametri.
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;
Generare un flusso di risposte parziali
In questo esempio viene illustrato come generare una risposta a una richiesta di domande e risposte in cui la risposta viene restituita come flusso di risultati parziali.
Creare un oggetto
LanguageModel
per fare riferimento al modello linguistico locale. *È già stato eseguito un controllo per assicurarsi che il modello linguistico Phi Silica sia disponibile nel dispositivo dell'utente nel frammento di codice precedente.Recuperare in modo asincrono il
LanguageModelResponse
in una chiamata aGenerateResponseWithProgressAsync
. Scriverlo nella console quando viene generata la risposta.
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;
Applicare formati di testo predefiniti per risposte più coerenti nell'app
Phi Silica include la possibilità di predefinire formati di risposte testuali da usare nella tua app. La configurazione predefinita di un formato di testo può fornire risultati di risposta più coerenti con le opzioni seguenti:
- Testo in tabella: Convertire la risposta della richiesta in formato tabella.
- Riepiloga: Fornisci un riepilogo in base al testo della richiesta.
- Riscrivere: riformula il testo del prompt per aggiungere chiarezza ed esprimere la risposta in modo più semplice.
Creare un oggetto
LanguageModel
per fare riferimento al modello linguistico locale. *È già stato eseguito un controllo per assicurarsi che il modello linguistico Phi Silica sia disponibile nel dispositivo dell'utente nel frammento di codice precedente.Creare un oggetto
LanguageModelOptions
e specificare il formato di testo predefinito da utilizzare assegnando un'enumerazioneLanguageModelSkill
al campo Skill dell'oggettoLanguageModelOptions
. Per l'enumerazioneLanguageModelSkill
sono disponibili i valori seguenti.Enumerazione Descrizione LanguageModelSkill.General
Valore predefinito, nessuna formattazione predefinita applicata. LanguageModelSkill.TextToTable
Convertire il testo del prompt in una tabella, se applicabile. LanguageModelSkill.Summarize
Restituisci un riepilogo basato sul testo del prompt. LanguageModelSkill.Rewrite
Riscrivere il testo di risposta alla richiesta per migliorare la chiarezza e la comprensione. Viene quindi recuperato in modo asincrono LanguageModelResponse in una chiamata a GenerateResponseWithProgressAsync e lo si scrive nella console quando viene generata la risposta.
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;
Intelligenza artificiale responsabile
Phi Silica offre agli sviluppatori un modello potente e affidabile per la creazione di app con esperienze di intelligenza artificiale sicure e sicure. Sono stati eseguiti i passaggi seguenti per garantire che Phi Silica sia affidabile, sicuro e costruito in modo responsabile. È consigliabile esaminare le procedure consigliate descritte in Sviluppo di intelligenza artificiale generativa responsabile in Windows quando si implementano le funzionalità di intelligenza artificiale nell'app.
- Test approfonditi e valutazione della qualità del modello per identificare e mitigare i potenziali rischi.
- Implementazione incrementale delle versioni sperimentali di Phi Silica. Dopo la versione sperimentale finale di Phi Silica, l'implementazione si espanderà fino alle app firmate per assicurarsi che le analisi malware siano state applicate alle applicazioni con funzionalità del modello locale.
- Phi Silica fornisce un modello di intelligenza artificiale localizzato che include un'API di moderazione dei contenuti testuali. Questa API identifica e filtra il contenuto potenzialmente dannoso sia nell'output generato dall'input che nell'output generato dall'intelligenza artificiale. Il modello locale di moderazione dei contenuti testuali si basa sul modello Azure AI Content Safety per la moderazione dei contenuti e offre prestazioni simili. Per una descrizione delle opzioni di filtro per la gravità e un esempio di codice che illustra come implementare queste opzioni, vedere il punto Moderazione del contenuto di testo con Windows Copilot Runtime e il punto.
Importante
Nessun sistema di sicurezza dei contenuti è infallibile e possono verificarsi errori occasionali, pertanto è consigliabile integrare strumenti e procedure supplementari di intelligenza artificiale responsabile (RAI). Per altri dettagli, vedere Sviluppo di intelligenza artificiale generativa responsabile in Windows.
Contenuto correlato
- Moderazione dei contenuti con Windows Copilot Runtime
- Accedere a file e cartelle con Windows App SDK e API WinRT
- lo sviluppo di applicazioni e funzionalità di intelligenza artificiale generative responsabili in Windows
- Informazioni di riferimento per le API Phi Silica in Windows App SDK
- Windows App SDK
- Note sulla versione più recenti per il SDK per app di Windows