Windows アプリ SDK の Phi Silica
Windows アプリ SDK を使用して、Windows アプリを、現時点で最も強力な NPU チューニング ローカル言語モデルである Phi Silica を含むデバイス上の言語モデルに接続します。
Windows アプリ SDK には、これらのモデルにアクセスして、ローカルでのチャットの処理と生成、数学の解決、コード生成、テキストの推論などをできるようにする複数の人工知能 (AI) API が付属しています。
重要
Windows アプリ SDK の実験的チャネルには、開発の初期段階にある API と機能が含まれています。 実験用チャネル内のすべての API は、広範な変更と破壊的変更の対象となり、今後のリリースからいつでも削除される可能性があります。 これらは運用環境での使用ではサポートされていません。また、実験的機能を使用するアプリを Microsoft Store に公開することはできません。
前提条件
責任ある AI
Phi Silica は、安全で安全な AI エクスペリエンスを使用してアプリを構築するための強力で信頼できるモデルを開発者に提供します。 Phi Silica が信頼でき、安全で、責任を持って構築されていることを確認するために、次の手順が実行されています。
- モデルの品質を徹底的にテストおよび評価し、潜在的なリスクを特定して軽減します。
- モデルの長所と制限を記述し、目的の用途を明確にする Phi Silica モデル カードの作成。
- Phi Silica の実験リリースの段階的なロールアウト。 Phi Silica の最終実験リリース後、展開は署名済みアプリに拡大されます。これにより、ローカルモデル機能を備えたアプリケーションにマルウェア スキャンが確実に適用されるようにします。
- 設定の Capability Access Manager を通じてカスタム コントロールを提供し、ユーザーがシステム、ユーザー、またはアプリのデバイス上のモデルを無効にできるようにします。
Note
コンテンツ モデレーションは現在開発中です。
上記に加えて、「Windows での責任ある生成 AI アプリケーションと機能の開発」で説明されているベスト プラクティスを確認することをお勧めします。
Phi Silica と Windows アプリ SDK で何ができますか?
ローカルの Phi Silica 言語モデルと Windows アプリ SDK を使用すると、ユーザー プロンプトに対するテキスト応答を生成できます。
文字列プロンプトに基づいてひとつの完全な応答を取得する
この例では、結果が返される前に完全な応答が生成される、Q&A プロンプトに対する応答の生成方法を示します。
- まず、IsAvailable メソッドを呼び出し、MakeAvailableAsync メソッドが正常に返されるのを待って、言語モデルを使用できることを確認します。
- 言語モデルが使用できるようになったら、それを参照する LanguageModel オブジェクトを作成します。
- 最後に、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.
文字列プロンプトに基づいて部分的な結果のストリームを取得する
この例では、部分的な結果のストリームとして応答が返される、Q&A プロンプトに対する応答の生成方法を示します。
- まず、ローカル言語モデルを参照する LanguageModel オブジェクトを作成します (前のスニペットで、言語モデルの存在は既にチェックしています)。
- 次に、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;
その他のリソース
Windows App SDK と WinRT API を使用してファイルとフォルダーにアクセスする