Introdução ao Phi Silica no SDK do Aplicativo Windows
Importante
Disponível no canal experimental mais recente versão do SDK de Aplicativos Windows.
O canal experimental do SDK de Aplicativos 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 significativas e podem ser removidas em versões futuras a qualquer momento. Os recursos experimentais não são suportados para uso em ambientes de produção e os 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 autônomos.
Phi Silica é um modelo de idioma local que você pode integrar em seus aplicativos do Windows usando o SDK de aplicativos Windows.
Como o modelo de linguagem local otimizado para NPU mais poderoso da Microsoft, o Phi Silica é otimizado para eficiência e desempenho em dispositivos com Windows Copilot+, além de oferecer muitos dos recursos encontrados nos Modelos de Linguagem de Grande Escala (LLMs).
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 referência da API para Phi Silica noSDK do Aplicativo Windows.
Para obter detalhes de moderação de conteúdo, consulte Segurança de conteúdo com APIs de IA generativas.
Dica
Forneça feedback sobre estas APIs e a sua funcionalidade criando um novo problema no repositório GitHub do SDK de Aplicações Windows (inclua Phi Silica no título) ou respondendo a um problema existente.
Pré-requisitos
- Um Copilot+ PC contendo um processador Qualcomm Snapdragon® X.
- Arm64EC (Emulation Compatible) não é suportado atualmente.
- Windows 11 Insider Preview Build 26120.3073 (Canais Dev e Beta) ou posterior deve estar instalado no seu dispositivo.
Use o SDK do Aplicativo Windows para integrar o Phi Silica ao seu aplicativo do Windows
Com um modelo de idioma 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 um prompt Q&A onde a resposta completa é gerada antes que o resultado seja retornado.
Verifique se o modelo de idioma está disponível chamando o método
IsAvailable
e aguardando que o métodoMakeAvailableAsync
retorne com êxito.Quando o modelo de linguagem estiver disponível, crie um objeto
LanguageModel
para fazer referência a ele.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 incorporou moderação de conteúdo que é personalizável. Este exemplo mostra como especificar seus próprios limites para a moderação de conteúdo interno. Saiba mais sobre a Moderação de Conteúdo com o Windows Copilot Runtime.
- Crie um objeto
LanguageModel
para fazer referência ao modelo de idioma local. *Uma verificação já foi realizada para garantir que o modelo de linguagem Phi Silica esteja disponível no dispositivo do usuário no trecho anterior. - Crie um objeto
ContentFilterOptions
e especifique seus valores preferidos. - Envie um prompt de cadeia de caracteres para o modelo usando o método
GenerateResponseAsync
com oContentFilterOptions
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 um prompt Q&A onde a resposta é retornada como um fluxo de resultados parciais.
Crie um objeto
LanguageModel
para fazer referência ao modelo de idioma local. *Uma verificação já foi realizada para garantir que o modelo de linguagem Phi Silica esteja disponível no dispositivo do usuário no trecho anterior.Recupere de forma assíncrona o
LanguageModelResponse
numa chamada paraGenerateResponseWithProgressAsync
. 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 predefinir 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 de prompt em um formato de tabela.
- Resumir: Devolver um resumo com base no texto do prompt.
- Reescreva: reformule o texto do prompt para adicionar clareza e expressar a resposta de uma forma mais facilmente compreensível.
Crie um objeto
LanguageModel
para fazer referência ao modelo de idioma local. *Uma verificação já foi realizada para garantir que o modelo de linguagem Phi Silica esteja disponível no dispositivo do usuário no trecho anterior.Crie um objeto
LanguageModelOptions
e especifique o formato de texto predefinido a ser usado atribuindo um enumLanguageModelSkill
ao campo Skill do objetoLanguageModelOptions
. Os seguintes valores estão disponíveis para oLanguageModelSkill
enum.Enum Descrição LanguageModelSkill.General
Valor padrão, nenhuma formatação predefinida aplicada. LanguageModelSkill.TextToTable
Converta o texto do prompt em uma tabela, se aplicável. LanguageModelSkill.Summarize
Fornecer um resumo com base no texto do pedido. LanguageModelSkill.Rewrite
Reescreva a resposta de texto imediata para melhorar a clareza e a compreensão. Em seguida, recuperamos de forma assíncrona o LanguageModelResponse numa chamada para GenerateResponseWithProgressAsync e escrevemo-lo 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
O Phi Silica fornece aos desenvolvedores um modelo poderoso e confiável para criar aplicativos com experiências de IA seguras e protegidas. As seguintes medidas foram tomadas para garantir que a Phi Silica seja confiável, segura e construída de forma responsável. Recomendamos rever 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 riscos potenciais.
- Lançamento incremental de versões experimentais de Phi Silica. Após a versão experimental final do Phi Silica, a implantação se expandirá para aplicativos assinados para garantir que as verificações 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. Esta API identifica e filtra conteúdo potencialmente nocivo tanto na entrada como na saída gerada por IA. O modelo de moderação de conteúdo de texto local é baseado no modelo de Segurança de Conteúdo do Azure AI para moderação de conteúdo e oferece desempenho semelhante. Consulte Moderação de Conteúdo de Texto com o Tempo de Execução do Copiloto do Windows para obter uma descrição das opções de filtro de nível de gravidade e um exemplo de código que demonstra como implementar estas 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 obter mais detalhes, consulte Desenvolvimento Responsável da IA Generativa no Windows.
Conteúdo relacionado
- Moderação de Conteúdo com o Runtime do Copilot para Windows
- acessar arquivos e pastas com o SDK do Windows App e APIs do WinRT
- Desenvolvendo aplicativos e recursos de IA generativa responsável no Windows
- referência de API para APIs de Phi Silica no SDK de Aplicações Windows
- SDK do Aplicativo Windows
- Notas de versão mais recentes para o SDK de Aplicações Windows