重要
Phi Silica API は、制限付きアクセス機能の一部です ( LimitedAccessFeatures クラスを参照)。 詳細については、またはロック解除トークンを要求するには、 LAF アクセス トークン要求フォームを使用してください。
Phi Silica は、Windows AI Foundry を使用して Windows アプリに統合できるローカル言語モデルです。
注
Phi Silica の機能は、中国では使用できません。
Microsoft の最も強力な NPU で調整されたローカル言語モデルとして、Phi Silica は Windows Copilot+ PC デバイスの効率とパフォーマンスを最適化しながら、大規模言語モデル (LLM) に含まれる多くの機能も提供します。
このレベルの最適化は、Windows App SDK 内のモデルに限定され、他のバージョンの Phi では使用できません。 API の詳細については、以下を参照してください。
Phi Silica を統合する
ローカルの Phi Silica 言語モデルを使用すると、ユーザー プロンプトに対するテキスト応答を生成できます。 まず、「 Windows AI API の概要」で説明されているように、デバイスで使用できる前提条件とモデルがあることを確認します。
必要な名前空間を指定する
Phi Silica を使用するには、必要な名前空間を使用していることを確認します。
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 を使用したコンテンツ モデレーション」を参照)。
GetReadyState メソッドを呼び出し、EnsureReadyAsync メソッドが正常に返されるのを待って、言語モデルを使用できることを確認します。
言語モデルが使用可能になったら、 LanguageModel オブジェクトを作成して参照します。
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 Silica には、ローカル言語モデルを使用した定義済みの書式設定を使用して、構造化された簡潔でわかりやすい応答を提供できる組み込みのテキスト変換機能 (テキスト インテリジェンス スキルと呼ばれます) が含まれています。
サポートされているスキルは次のとおりです。
- テキストからテーブルへ: プロンプト応答を構造化されたテーブル形式に変換します (該当する場合)。
- 要約: プロンプト テキストの簡潔な概要を返します。
- 書き換え: 明確さと読みやすさを向上させるために、プロンプトの応答を言い換える。
次の手順では、テキスト インテリジェンス スキルの使用方法について説明します。
LanguageModel オブジェクトを作成する
このオブジェクトは、ローカルの Phi Silica 言語モデルを参照します (Phi Silica モデルがデバイスで使用可能であることを確認してください)。スキル固有のオブジェクトをインスタンス化する
適用するスキルに基づいて適切なクラスを選択し、 LanguageModel インスタンスをパラメーターとして渡します。メソッドを呼び出してスキルを実行する
各スキルは、入力を処理し、書式設定された結果を返す非同期メソッドを公開します。応答を処理する
結果は型指定されたオブジェクトとして返され、必要に応じて印刷またはログに記録できます。
この例では、テキスト要約スキルを示します。
-
LanguageModel インスタンス (
languageModel) を作成します。 - その LanguageModel を TextSummarizer コンストラクターに渡します。
- 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 開発」で説明されているベスト プラクティスを確認することをお勧めします。