Windows 应用 SDK中的 Phi 硅入门

提示

通过在 Windows 应用 SDK GitHub 存储库中创建新问题来提供有关这些 API 及其功能的反馈。 (请确保在标题中包含 Phi 硅

Phi 硅是一种本地语言模型,你将能够使用 Windows 应用 SDK 集成到 Windows 应用中。

作为Microsoft最强大的 NPU 优化本地语言模型,Phi 硅针对 Windows Copilot+ PC 设备上的效率和性能进行了优化,同时仍提供大型语言模型(LLM)中发现的许多功能。

此级别的优化仅适用于Windows 应用 SDK中的模型,在其他版本的 Phi 中不可用。

有关 API 详细信息,请参阅 Windows 应用 SDK 中的 Phi 硅 API ref。

重要

此功能尚不可用。 预计它将在即将发布的Windows 应用 SDK实验频道发布中交付。

Windows 应用 SDK 试验通道包括早期开发阶段中的 API 和功能。 试验通道中的所有 API 都可能经过大量修订和中断性变更,并且随时可从后续版本中删除。 不支持在生产环境中使用这些通道,并且无法将使用试验功能的应用发布到 Microsoft Store。

先决条件

使用 Windows 应用 SDK将 Phi 二氧化铁集成到 Windows 应用中

借助本地 Phi Silica 语言模型和 Windows 应用 SDK,可以生成对用户提示的文本响应。

生成完整的响应

此示例演示如何生成对问答提示的响应,在返回结果之前生成完整响应。

  1. 首先,调用 IsAvailable 方法并等待 MakeAvailableAsync 方法成功返回,确保语言模型可用。
  2. 一旦语言模型可用,将创建一个 LanguageModel 对象来引用该模型。
  3. 最后,使用 GenerateResponseAsync 方法向该模型提交字符串提示,该函数将返回完整结果。
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;

此示例生成的响应为:

The molecular formula for glucose is C6H12O6.

生成部分响应流

此示例演示如何生成对问答提示的响应,其中响应作为部分结果流返回。

  1. 首先,创建一个 LanguageModel 对象来引用本地语言模型(我们已经在前面的代码片段中检查了语言模型是否存在)。
  2. 然后,在对 GenerateResponseWithProgressAsync 的调用中异步检索 LanguageModelResponse,并在生成响应时将其写入控制台。
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;

负责任 AI

Phi Silica 为开发人员提供了一个强大的可信模型,用于构建具有安全 AI 体验的应用。 已采取以下步骤来确保 Phi 硅是可信的、安全的和负责任的构建(我们还建议查看 Windows 上负责任的生成 AI 开发中介绍的最佳做法)。

  • 对模型质量进行全面的测试和评估,以识别和缓解潜在风险。
  • 创建 Phi 硅 模型卡,该卡片 描述模型的强度和限制,并提供有关预期用途的明确性。
  • Phi Silica 实验版将逐步推出。 在最终的 Phi Silica 试验版本发布之后,还会将该版本扩展到已签名应用,以确保恶意软件扫描已应用于具有本地模型功能的应用。
  • 通过“设置”中的“功能访问管理器”提供客户控制,让用户能够为系统、用户、应用关闭设备上的模型。
  • 提供本地 AI 模型,用于识别和筛选 Phi 硅的输入输出和 AI 生成的输出中的有害内容帐篷模式。 此本地模式帐篷模式ration 模型基于 Azure AI 内容安全模型进行文本审查,并提供类似的性能。

重要

没有任何内容安全系统无法实现,偶尔会发生错误,因此我们建议集成补充负责任的 AI(RAI)工具和做法。 有关详细信息,请参阅 Windows 上的负责任的生成 AI 开发。

其他资源

使用 Windows 应用 SDK 和 WinRT API 访问文件和文件夹