Udostępnij za pośrednictwem


Rozpocznij pracę z Phi Silica w Windows App SDK

Ważny

Dostępne w najnowszej wersji eksperymentalnego kanału zestawu SDK aplikacji systemu Windows.

Eksperymentalny kanał zestawu SDK aplikacji systemu Windows obejmuje interfejsy API i funkcje we wczesnych etapach programowania. Wszystkie interfejsy API w kanale eksperymentalnym podlegają rozległym zmianom i zmianom wprowadzającym niezgodności i mogą zostać usunięte w kolejnych wydaniach w dowolnym momencie. Funkcje eksperymentalne nie są obsługiwane w środowiskach produkcyjnych i aplikacjach, które ich używają, nie mogą być publikowane w sklepie Microsoft Store.

  • Krzemionka Phi nie jest dostępna w Chinach kontynentalnych.
  • Aplikacje samodzielne nie są obsługiwane.

Silica Phi to lokalny model językowy, który można zintegrować z aplikacjami systemu Windows przy użyciu zestawu SDK aplikacji systemu Windows .

Jako najbardziej zaawansowany lokalny model języka dostrojony pod kątem NPU firmy Microsoft, Phi Silica jest zoptymalizowana pod kątem efektywności i wydajności na komputerach z Windows Copilot+ PC, a jednocześnie oferuje wiele funkcji dostępnych w dużych modelach językowych (LLM).

Ten poziom optymalizacji jest wyłączny dla modelu w zestawie SDK aplikacji systemu Windows i nie jest dostępny w innych wersjach narzędzia Phi.

Aby uzyskać szczegółowe informacje o interfejsie API , zobacz interfejs API ref for Phi Silica w zestawie SDK aplikacji systemu Windows.

Aby uzyskać szczegółowe informacje na temat moderowania treści , zobacz Bezpieczeństwo treści z generatywnymi interfejsami API AI.

Napiwek

Prześlij opinię na temat tych interfejsów API i ich funkcjonalności, tworząc nowe zgłoszenie w repozytorium GitHub zestawu SDK aplikacji systemu Windows (w tym Phi Silica w tytule) lub odpowiadając na istniejące zgłoszenie.

Warunki wstępne

Integrowanie silicy phi z aplikacją systemu Windows przy użyciu zestawu SDK aplikacji systemu Windows

Za pomocą lokalnego modelu języka Silica Phi i zestawu SDK aplikacji systemu Windows można wygenerować odpowiedzi tekstowe na monity użytkownika.

Generowanie pełnej odpowiedzi

W tym przykładzie pokazano, jak wygenerować odpowiedź na monit Q&A, gdzie pełna odpowiedź jest wygenerowana przed zwróceniem wyniku.

  1. Upewnij się, że model językowy jest dostępny, wywołując metodę IsAvailable i czekając na pomyślny zwrot z metody MakeAvailableAsync.

  2. Po udostępnieniu modelu językowego utwórz obiekt LanguageModel, aby się do niego odwoływać.

  3. Prześlij do modelu ciąg znaków przy użyciu metody GenerateResponseAsync zwracającej pełny wynik.

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;

Odpowiedź wygenerowana w tym przykładzie to:

The molecular formula for glucose is C6H12O6.

Generowanie pełnej odpowiedzi

Nasz interfejs API ma wbudowaną moderację zawartości, która jest dostosowywalna. W tym przykładzie pokazano, jak określić własne progi dla wewnętrznego moderowania zawartości. Dowiedz się więcej o moderowaniu zawartości za pomocą środowiska uruchomieniowego Windows Copilot.

  1. Utwórz obiekt LanguageModel, aby odwoływać się do lokalnego modelu językowego. *Sprawdzanie zostało już wykonane, aby upewnić się, że model języka Phi Silica jest dostępny na urządzeniu użytkownika w poprzednim fragmencie kodu.
  2. Utwórz obiekt ContentFilterOptions i określ preferowane wartości.
  3. Prześlij do modelu tekstowy monit przy użyciu metody GenerateResponseAsync z ContentFilterOptions jako jednym z parametrów.
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;

Generowanie strumienia częściowych odpowiedzi

W tym przykładzie pokazano, jak wygenerować odpowiedź na monit&, w którym odpowiedź jest zwracana strumieniowo jako częściowe wyniki.

  1. Utwórz obiekt LanguageModel, aby odwoływać się do lokalnego modelu językowego. *Sprawdzanie zostało już wykonane, aby upewnić się, że model języka Phi Silica jest dostępny na urządzeniu użytkownika w poprzednim fragmencie kodu.

  2. Asynchronicznie pobierz LanguageModelResponse podczas wywołania do GenerateResponseWithProgressAsync. Zapisz go w konsoli w miarę generowania odpowiedzi.

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;

Stosowanie wstępnie zdefiniowanych formatów tekstu w celu uzyskania bardziej spójnych odpowiedzi w aplikacji

Silica Phi obejmuje możliwość wstępnie zdefiniowanych formatów odpowiedzi tekstowych do użycia w aplikacji. Wstępnie zdefiniowany format tekstu może zapewnić bardziej spójne wyniki odpowiedzi z następującymi opcjami:

  • Tekst na tabelę: przekonwertuj odpowiedź polecenia na format tabeli.
  • Summarize: Zwraca podsumowanie na podstawie tekstu zapytania.
  • Przepisz: Przekształć tekst polecenia, aby dodać jasność i wyrazić odpowiedź w bardziej zrozumiały sposób.
  1. Utwórz obiekt LanguageModel, aby odwoływać się do lokalnego modelu językowego. *Sprawdzanie zostało już wykonane, aby upewnić się, że model języka Phi Silica jest dostępny na urządzeniu użytkownika w poprzednim fragmencie kodu.

  2. Utwórz obiekt LanguageModelOptions i określ wstępnie zdefiniowany format tekstu do użycia, przypisując wyliczenie LanguageModelSkill do pola Umiejętności obiektu LanguageModelOptions. Następujące wartości są dostępne dla wyliczenia LanguageModelSkill.

    Wyliczenie Opis
    LanguageModelSkill.General Wartość domyślna, nie zastosowano wstępnie zdefiniowanego formatowania.
    LanguageModelSkill.TextToTable W razie potrzeby przekonwertuj tekst monitu na tabelę.
    LanguageModelSkill.Summarize Zwraca podsumowanie na podstawie tekstu polecenia.
    LanguageModelSkill.Rewrite Zapisz ponownie odpowiedź tekstową monitu, aby zwiększyć przejrzystość i zrozumienie.
  3. Następnie asynchronicznie pobieramy LanguageModelResponse w wywołaniu GenerateResponseWithProgressAsync i zapisujemy wynik na konsoli w miarę generowania odpowiedzi.

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;

Odpowiedzialne używanie sztucznej inteligencji

Silica Phi zapewnia deweloperom zaawansowany, godny zaufania model do tworzenia aplikacji z bezpiecznymi, bezpiecznymi środowiskami sztucznej inteligencji. Wykonano następujące kroki, aby upewnić się, że silica Phi jest wiarygodna, bezpieczna i zbudowana w odpowiedzialny sposób. Zalecamy zapoznanie się z najlepszymi praktykami opisanymi w odpowiedzialnym rozwojem sztucznej inteligencji dla systemu Windows podczas implementowania funkcji sztucznej inteligencji w aplikacji.

  • Dokładne testowanie i ocena jakości modelu w celu zidentyfikowania i ograniczenia potencjalnych zagrożeń.
  • Stopniowe wdrażanie eksperymentalnych wersji Phi Silica. Po ostatnim wydaniu eksperymentalnym Phi Silica wdrożenie rozszerzy się do podpisanych aplikacji, aby upewnić się, że skanowanie złośliwego oprogramowania zostało zastosowane do aplikacji z lokalnymi możliwościami modelu.
  • Silica Phi udostępnia zlokalizowany model sztucznej inteligencji, który zawiera API do moderowania treści tekstowej. Ten interfejs API identyfikuje i filtruje potencjalnie szkodliwą zawartość zarówno w danych wejściowych, jak i w danych wyjściowych generowanych przez sztuczną inteligencję. Lokalny model moderowania zawartości tekstu jest oparty na modelu bezpieczeństwa zawartości usługi Azure AI na potrzeby moderowania zawartości i zapewnia podobną wydajność. Zobacz moderowanie zawartości tekstu za pomocą środowiska uruchomieniowego Copilot systemu Windows, aby uzyskać opis opcji filtru na poziomie ważności i przykładowy kod pokazujący sposób implementacji tych opcji.

Ważny

Nie ma nieosiągalnego systemu bezpieczeństwa zawartości i mogą wystąpić sporadyczne błędy, dlatego zalecamy zintegrowanie dodatkowych narzędzi i praktyk dotyczących odpowiedzialnej sztucznej inteligencji (RAI). Aby uzyskać więcej informacji, zobacz Odpowiedzialne tworzenie sztucznej inteligencji w systemie Windows.