Compartilhar via


Introdução ao Phi Silica no SDK do Aplicativo Windows

Importante

Disponível na versão de lançamento mais recente do canal experimental do SDK do Aplicativo do Windows.

O canal experimental do SDK do Aplicativo do Windows inclui APIs e recursos em estágios iniciais de desenvolvimento. Todas as APIs no canal experimental estão sujeitas a extensas revisões e alterações interruptivas, podendo ser removidas de versões subsequentes a qualquer momento. Não há suporte para recursos experimentais para uso em ambientes de produção e aplicativos que os usam não podem ser publicados na Microsoft Store.

  • Phi Silica não está disponível na China continental.
  • Não há suporte para aplicativos independentes.

O Phi Silica é um modelo de linguagem local que você pode integrar aos seus aplicativos do Windows usando o Windows App SDK.

Sendo o modelo de linguagem local ajustado para NPU mais poderoso da Microsoft, o Phi Silica é otimizado para eficiência e desempenho em dispositivos PCs Windows Copilot+, ao mesmo tempo em que oferece muitos dos recursos encontrados em LLMs (Modelos de Linguagem Grande).

Esse nível de otimização é exclusivo para o modelo dentro do SDK do Aplicativo Windows e não está disponível em outras versões do Phi.

Para obter detalhes da API, consulte a referência de API para Phi Silica no SDK de Aplicativo do Windows.

Para obter detalhes de moderação de conteúdo, consulte Segurança de conteúdo com APIs de IA generativa.

Dica

Forneça feedback sobre essas APIs e suas funcionalidades criando um novo problema no repositório GitHub do SDK do Aplicativo Windows (inclua Phi Silica no título) ou respondendo a um problema existente.

Pré-requisitos

Usar o SDK do Aplicativo Windows para integrar o Phi Silica ao seu aplicativo Windows

Com um modelo de linguagem Phi Silica local e o SDK do Aplicativo Windows, você pode gerar respostas de texto para solicitações do usuário.

Gerar uma resposta completa

Este exemplo mostra como gerar uma resposta a uma solicitação de P e R em que a resposta completa é gerada antes que o resultado seja retornado.

  1. Verifique se o modelo de idioma está disponível chamando o método IsAvailable e aguardando que o método MakeAvailableAsync retorne com êxito.

  2. Depois que o modelo de idioma estiver disponível, crie um objeto LanguageModel para referenciá-lo.

  3. Envie um prompt de cadeia de caracteres para o modelo usando o método GenerateResponseAsync, que retorna o resultado 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;

A resposta gerada por este exemplo é:

The molecular formula for glucose is C6H12O6.

Gerar uma resposta completa

Nossa API tem moderação de conteúdo interna, que é personalizável. Este exemplo mostra como especificar seus próprios limites para a moderação de conteúdo interno. Saiba mais sobre Moderação de Conteúdo com o Windows Copilot Runtime.

  1. Crie um objeto LanguageModel para fazer referência ao modelo de idioma local. *Uma verificação já foi executada para garantir que o modelo de linguagem Phi Silica esteja disponível no dispositivo do usuário no snippet anterior.
  2. Crie um objeto ContentFilterOptions e especifique seus valores preferenciais.
  3. Envie um prompt de cadeia de caracteres para o modelo usando o método GenerateResponseAsync com o ContentFilterOptions como um dos parâmetros.
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;

Gerar um fluxo de respostas parciais

Este exemplo mostra como gerar uma resposta a uma solicitação P e R em que a resposta é retornada como um stream de resultados parciais.

  1. Crie um objeto LanguageModel para fazer referência ao modelo de idioma local. *Uma verificação já foi executada para garantir que o modelo de linguagem Phi Silica esteja disponível no dispositivo do usuário no snippet anterior.

  2. Recupere de forma assíncrona o LanguageModelResponse em uma chamada para GenerateResponseWithProgressAsync. Escreva-o no console à medida que a resposta é gerada.

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;

Aplicar formatos de texto predefinidos para respostas mais consistentes em seu aplicativo

O Phi Silica inclui a capacidade de predefine formatos de resposta de texto para uso em seu aplicativo. A predefinição de um formato de texto pode fornecer resultados de resposta mais consistentes com as seguintes opções:

  • Texto para Tabela: converta a resposta da solicitação em formato de tabela.
  • Resumir: retorne um resumo com base no texto da solicitação.
  • Reescrever: reformular o texto do prompt para adicionar clareza e expressar a resposta de uma maneira mais fácil de entender.
  1. Crie um objeto LanguageModel para fazer referência ao modelo de idioma local. *Uma verificação já foi executada para garantir que o modelo de linguagem Phi Silica esteja disponível no dispositivo do usuário no snippet anterior.

  2. Crie um objeto LanguageModelOptions e especifique o formato de texto predefinido a ser usado atribuindo uma enum LanguageModelSkill ao campo Skill do objeto LanguageModelOptions. Os valores a seguir estão disponíveis para a enumeração LanguageModelSkill.

    Enum Descrição
    LanguageModelSkill.General Valor padrão, sem formatação predefinida aplicada.
    LanguageModelSkill.TextToTable Converta o texto do prompt em uma tabela, se aplicável.
    LanguageModelSkill.Summarize Retorne um resumo com base no texto do prompt.
    LanguageModelSkill.Rewrite Reescreva a resposta de texto do prompt para melhorar a clareza e a compreensão.
  3. Em seguida, recuperamos de forma assíncrona o LanguageModelResponse em uma chamada para GenerateResponseWithProgressAsync e o escrevemos no console à medida que a resposta é gerada.

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;

IA responsável

A Phi Silica fornece aos desenvolvedores um modelo poderoso e confiável para criar aplicativos com experiências de IA seguras e protegidas. As etapas a seguir foram tomadas para garantir que a Phi Silica seja confiável, segura e construída de forma responsável. Recomendamos revisar as práticas recomendadas descritas em Desenvolvimento de IA Generativa Responsável no Windows ao implementar recursos de IA em seu aplicativo.

  • Testes e avaliação minuciosos da qualidade do modelo para identificar e mitigar potenciais riscos.
  • Implantação incremental de lançamentos experimentais do Phi Silica. Após o lançamento experimental final do Phi Silica, o lançamento será expandido para aplicativos assinados para garantir que as varreduras de malware tenham sido aplicadas a aplicativos com recursos de modelo local.
  • O Phi Silica fornece um modelo de IA localizado que inclui uma API de Moderação de Conteúdo de Texto. Essa API identifica e filtra conteúdo potencialmente prejudicial na entrada e na saída gerada por IA. O modelo local de moderação de conteúdo de texto baseia-se no modelo de Segurança de Conteúdo de IA do Azure para moderação de conteúdo e fornece desempenho semelhante. Consulte Moderação de Conteúdo de Texto com o Windows Copilot Runtime para obter uma descrição das opções de filtro de nível de severidade e um exemplo de código que demonstra como implementar essas opções.

Importante

Nenhum sistema de segurança de conteúdo é infalível, e erros ocasionais podem ocorrer. Por isso recomendamos a integração de ferramentas e práticas suplementares de IA Responsável (RAI). Para mais detalhes, consulte Desenvolvimento responsável de IA generativa no Windows.