Sdílet prostřednictvím


Začněte s Phi Silica ve Windows App SDK

Důležitý

K dispozici v nejnovější experimentální verzi Windows App SDK.

Experimentální kanál sady Windows App SDK zahrnuje rozhraní API a funkce v počátečních fázích vývoje. Všechna rozhraní API v experimentálním kanálu podléhají rozsáhlým revizem a zásadním změnám a je možné je kdykoli odebrat z následujících verzí. Experimentální funkce nejsou podporovány pro použití v produkčních prostředích a aplikacích, které je používají, nelze publikovat do Microsoft Storu.

  • Phi Silica není k dispozici v Číně.
  • Rozbalené aplikace se nepodporují.

Phi Silica je místní jazykový model, který můžete integrovat do svých aplikací pro Windows pomocí sady Windows App SDK.

Vzhledem k tomu, že Phi Silica je nejvýkonnější místní jazykový model NPU od Microsoftu, je optimalizován pro efektivitu a výkon na zařízeních s Windows Copilot+ a zároveň nabízí mnoho schopností podobných těm, které jsou k dispozici v rozsáhlých jazykových modelech (LLM).

Tato úroveň optimalizace je exkluzivní pro model v sadě Windows App SDK a není dostupná v jiných verzích Phi.

Podrobnosti o rozhraní APInajdete v referenční příručce API pro Phi Silica v sadě Windows App SDK.

Podrobnosti o moderování obsahu najdete v tématu Bezpečnost obsahu pomocí rozhraní API pro generování umělé inteligence.

Spropitné

Poskytněte zpětnou vazbu k těmto rozhraním API a jejich funkcím vytvořením nového problému v úložišti GitHub sady Windows App SDK (včetně Phi Silica v názvu) nebo reagováním na existující problém.

Požadavky

Použití sady Windows App SDK k integraci Phi Silica do aplikace pro Windows

S místním jazykovým modelem Phi Silica a sadou Windows App SDK můžete generovat textové odpovědi na výzvy uživatelů.

Vygenerování úplné odpovědi

Tento příklad ukazuje, jak vygenerovat odpověď na výzvu „Q&A“, kde se úplná odpověď vygeneruje před tím, než je výsledek vrácen.

  1. Ujistěte se, že jazykový model je dostupný, zavoláním metody IsAvailable a čekáním na úspěšné vrácení metody MakeAvailableAsync.

  2. Jakmile je jazykový model k dispozici, vytvořte objekt LanguageModel, na který chcete odkazovat.

  3. Pomocí metody GenerateResponseAsync odešlete do modelu výzvu k zadání řetězce, který vrátí úplný výsledek.

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;

Odpověď vygenerovaná v tomto příkladu je:

The molecular formula for glucose is C6H12O6.

Vygenerování úplné odpovědi

Naše rozhraní API má integrované moderování obsahu, které je přizpůsobitelné. Tento příklad ukazuje, jak zadat vlastní prahové hodnoty pro interní moderování obsahu. Zjistěte více o moderování obsahu v prostředí Windows Copilot Runtime.

  1. Vytvořte objekt LanguageModel, který bude odkazovat na místní jazykový model. *Kontrola již byla provedena, aby byl v zařízení uživatele v předchozím fragmentu kódu k dispozici jazykový model Phi Silica.
  2. Vytvořte objekt ContentFilterOptions a zadejte upřednostňované hodnoty.
  3. Odešle do modelu výzvu k zadání řetězce pomocí metody GenerateResponseAsync s ContentFilterOptions jako jeden z parametrů.
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;

Generování proudu částečných odpovědí

Tento příklad ukazuje, jak vygenerovat odpověď na podnět Q&A, kdy je odpověď vrácena jako proud částečných výsledků.

  1. Vytvořte objekt LanguageModel, který bude odkazovat na místní jazykový model. *Kontrola již byla provedena, aby byl v zařízení uživatele v předchozím fragmentu kódu k dispozici jazykový model Phi Silica.

  2. Asynchronně načti LanguageModelResponse při volání GenerateResponseWithProgressAsync. Napište ji do konzoly při vygenerování odpovědi.

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;

Použití předdefinovaných formátů textu pro konzistentnější odpovědi v aplikaci

Phi Silica zahrnuje možnost předdefinovat formáty textové odpovědi pro použití ve vaší aplikaci. Předdefinování textového formátu může poskytovat konzistentnější výsledky odpovědí s následujícími možnostmi:

  • Text na tabulku: Převést odpověď na výzvu do formátu tabulky.
  • Souhrn: Vrátí souhrn na základě textu zadání.
  • Přepsat: Přeformulujte text výzvy, aby byl jasnější a odpověď byla vyjádřena srozumitelnějším způsobem.
  1. Vytvořte objekt LanguageModel, který bude odkazovat na místní jazykový model. *Kontrola již byla provedena, aby byl v zařízení uživatele v předchozím fragmentu kódu k dispozici jazykový model Phi Silica.

  2. Vytvořte objekt LanguageModelOptions a zadejte předdefinovaný textový formát, který se má použít přiřazením výčtu LanguageModelSkill k poli Dovednost objektu LanguageModelOptions. Pro výčet LanguageModelSkill jsou k dispozici následující hodnoty.

    Enum Popis
    LanguageModelSkill.General Výchozí hodnota bez předdefinovaného formátování.
    LanguageModelSkill.TextToTable Pokud je to možné, převeďte text výzvy na tabulku.
    LanguageModelSkill.Summarize Vrátí souhrn dle textu výzvy.
    LanguageModelSkill.Rewrite Přepište textovou odpověď výzvy, abyste zlepšili srozumitelnost a porozumění.
  3. Potom asynchronně načteme LanguageModelResponse ve volání GenerateResponseWithProgressAsync a zapíšeme ji do konzoly při generování odpovědi.

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;

Zodpovědná AI

Phi Silica poskytuje vývojářům výkonný a důvěryhodný model pro vytváření aplikací se bezpečnými a zabezpečenými prostředími AI. Následující kroky byly provedeny k zajištění důvěryhodnosti, zabezpečení a zodpovědného vytváření Phi Silica. Při implementaci funkcí AI ve vaší aplikaci doporučujeme projít si osvědčené postupy popsané v zodpovědném vývoji umělé inteligence ve Windows.

  • Důkladné testování a vyhodnocení kvality modelu za účelem identifikace a zmírnění potenciálních rizik.
  • Postupné uvolňování experimentálních verzí Phi Silica. Po finální experimentální verzi Phi Silica se zavedení rozšíří na podepsané aplikace, aby se zajistilo, že se na aplikace s možnostmi místního modelu použijí kontroly malwaru.
  • Phi Silica poskytuje lokalizovaný model AI, který obsahuje rozhraní API moderování obsahu textu. Toto rozhraní API identifikuje a filtruje potenciálně škodlivý obsah ve vstupním i vygenerovaném výstupu AI. Model moderování obsahu místního textu je založený na modelu Azure AI Content Safety pro moderování obsahu a poskytuje podobný výkon. Podívejte se na Text Content Moderation s Windows Copilot Runtime pro popis možností filtru podle úrovně závažnosti a ukázkový kód demonstrující implementaci těchto možností.

Důležitý

Žádný systém bezpečnosti obsahu není neomylný a může docházet k občasným chybám, proto doporučujeme integrovat doplňkové nástroje a postupy z oblasti zodpovědné umělé inteligence (RAI). Další podrobnosti najdete v tématu Zodpovědný vývoj generativní umělé inteligence ve Windows.