Phi 二氧化硅入门

重要

皮硅在中国不可用。

Phi 二氧化铁是一种本地语言模型,你可以使用 Windows AI Foundry 集成到 Windows 应用中。

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

此级别的优化仅适用于 Windows 应用 SDK 中的模型,在其他版本的 Phi 中不可用。 有关 API 的详细信息,请参阅:

重要

下面是 Windows AI 功能和当前支持的 Windows 应用 SDK 版本列表。

版本 1.8 实验版(1.8.0-experimental1) - 对象擦除Phi 硅Phi 硅的LoRA微调对话摘要(文本智能)

个人预览版 - 语义搜索

版本 1.7.1 (1.7.250401001) - 所有其他 API

这些 API 仅在已收到 5 月 7 日更新的 Windows 预览体验计划预览版(WIP)设备上正常运行。 5 月 28 日至 29 日,可选更新将发布到非 WIP 设备,随后将进行 6 月 10 日的更新。 此更新将附带 Windows AI API 正常运行所需的 AI 模型。 这些更新还要求任何使用 Windows AI API 的应用在运行时获得包身份之前,无法使用这些 API。

集成 Phi Silica

使用本地 Phi 硅语言模型,可以生成对用户提示的文本响应。 首先,请确保设备上提供先决条件和模型,如 Windows AI API 入门中所述。

指定所需的命名空间

若要使用 Phi 硅,请确保使用所需的命名空间:

using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Text;
#include "winrt/Microsoft.Windows.AI.Text.h"
using namespace Microsoft::Windows::AI;
using namespace Microsoft::Windows::AI::Text;

生成响应

此示例演示如何使用自定义内容审查生成对 Q&A 提示的响应(请参阅 Windows AI Foundry 的内容审查)。

  1. 通过调用 GetReadyState 方法并等待 EnsureReadyAsync 方法成功返回,确保语言模型可用。

  2. 语言模型可用后,创建 一个 LanguageModel 对象来引用它。

  3. 使用 GenerateResponseAsync 方法将字符串提示提交到模型,该方法返回完整的结果。

if (LanguageModel.GetReadyState() == AIFeatureReadyState.EnsureNeeded) 
{ 
   var op = await LanguageModel.EnsureReadyAsync(); 
} 

using LanguageModel languageModel = await LanguageModel.CreateAsync();

string prompt = "Provide the molecular formula for glucose.";

LanguageModelOptions options = new LanguageModelOptions();
ContentFilterOptions filterOptions = new ContentFilterOptions();
filterOptions.PromptMaxAllowedSeverityLevel.Violent = SeverityLevel.Minimum;
options.ContentFilterOptions = filterOptions;

var result = await languageModel.GenerateResponseAsync(prompt, options);
 
Console.WriteLine(result.Text);
if (LanguageModel::GetReadyState() == AIFeatureReadyState::NotReady)
{
    auto op = LanguageModel::EnsureReadyAsync().get();
}

auto languageModel = LanguageModel::CreateAsync().get();

const winrt::hstring prompt = L"Provide the molecular formula for glucose.";

LanguageModelResponseResult result = languageModel.GenerateResponseAsync(prompt).get();
std::cout << result.Text().c_str() << std::endl;

此示例生成的响应为:

C6H12O6

文本智能技能

Phi 硅包括内置文本转换功能(称为文本智能技能),这些功能可以通过使用本地语言模型的预定义格式提供结构化、简洁和用户友好的响应。

支持的技能包括:

  • 文本到表格:将提示响应转换为结构化表格式(如果适用)。
  • 摘要:返回提示文本的简明摘要。
  • 重写:重新编写提示响应以提高清晰度和可读性。

以下步骤介绍如何使用文本智能技能。

  1. 创建 LanguageModel 对象
    此对象引用本地 Phi 硅语言模型(请记得确认设备上的 Phi 硅模型可用)。

  2. 实例化特定于技能的对象
    根据要应用的技能选择适当的类,并将 LanguageModel 实例作为参数传递。

  3. 调用方法以执行技能
    每个技能都会公开一个异步方法,该方法处理输入并返回格式化的结果。

  4. 处理响应
    结果将作为类型化对象返回,你可以根据需要打印或记录该对象。

此示例演示了文本摘要技能。

  1. 创建 LanguageModel 实例 (languageModel)。
  2. LanguageModel 传递给 TextSummarizer 构造函数。
  3. 将一些文本传递给 SummarizeAsync 方法并打印结果。
using namespace Microsoft.Windows.AI.Text;

using LanguageModel languageModel = await LanguageModel.CreateAsync();

var textSummarizer = new TextSummarizer(languageModel);
string text = @"This is a large amount of text I want to have summarized.";
var result = await textSummarizer.SummarizeAsync(text);

Console.WriteLine(result.Text); 
using namespace Microsoft::Windows::AI::Text;

auto languageModel = LanguageModel::CreateAsync().get();
auto textSummarizer = TextSummarizer(languageModel);
std::string prompt = "This is a large amount of text I want to have summarized.";
auto result = textSummarizer.SummarizeAsync(prompt);

std::wcout << result.get().Text() << std::endl;

负责任的 AI

我们已使用以下步骤的组合来确保这些映像 API 可信、安全且负责任地生成。 我们建议在应用中实施 AI 功能时,参阅 Windows 上负责任的生成式 AI 开发中描述的最佳做法。

另请参阅