Condividi tramite


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

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.

  1. Verificare che il modello linguistico sia disponibile chiamando il metodo IsAvailable e attendendo che il metodo MakeAvailableAsync venga restituito correttamente.

  2. Quando il modello linguistico è disponibile, creare un oggetto LanguageModel per farvi riferimento.

  3. 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.

  1. 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.
  2. Creare un oggetto ContentFilterOptions e specificare i valori preferiti.
  3. Inviare una richiesta di stringa al modello usando il metodo GenerateResponseAsync con il ContentFilterOptions 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.

  1. 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.

  2. Recuperare in modo asincrono il LanguageModelResponse in una chiamata a GenerateResponseWithProgressAsync. 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.
  1. 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.

  2. Creare un oggetto LanguageModelOptions e specificare il formato di testo predefinito da utilizzare assegnando un'enumerazione LanguageModelSkill al campo Skill dell'oggetto LanguageModelOptions. Per l'enumerazione LanguageModelSkill 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.
  3. 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.