ストア形式といえば、忘れ去れてている感がある Microsoft Store ですが、現状ではサン土木すで制限された UWP アプリの他にネイティブ Windows アプリを登録できます。
UWP アプリは、「UWP」は「ユニバーサル Windows プラットフォーム」の略で、iPhone の App Store や Android の Google Play で配布されているアプリのように、安全にダウンロード&インストールしたのち、安全にプログラムが実行される(ユーザーがアプリの権限を不許可にしたりして制限ができるなど)アプリのことです。Windows 8 からの Microsoft 肝いり企画だったわけですが、Mobile Windows の廃止により、その価値は激減しています。
Microsoft Store で「Line」を検索すると「LINE Desktop」がでてきます。このアプリは従来ならば UWP アプリで作るところですが、このアプリはネイティブの Windows アプリです。
判別が難しいのが難点なのですが、追加情報のところの「このアプリでは次のことができます」の中で「すべてのシステムリソースを使用する」となっていると、ネイティブな Windows アプリです。
一見すると、このアプリが Windows の秘密機能をあれこれやってキーロガーとか個人情報とかを抜きとるように見えますが(実際、できるんだけど)、実はそうではありません。ネイティブの Windows アプリなので「特に制限されてない」だけです。制限はされていませんが、一般的な Windows アプリと同様に、Administor 権限とか System 権限が必要なものは、それが使えるユーザー(管理ユーザー)でしか動きません。
一般的なスケジュール管理では、項目を追加・削除するボタンで操作をしますが、このスケジュール管理ツールでは自然言語を使って項目を操作します。「4/1 は休日にして」とか、「4/10 の項目を消して」という具合ですね。あらかじめ、スケジュールのデータを AI 側に保持させておいて、それに対して指示を出すので、正確に変更されるとは限らない!のが最大の欠点でありますが、まあ、チャットツールを作るときの良い練習にはなると思います。
Completion(入力候補)の API を使って1回だけ質問する場合はAIの答えを表示するだけで終了するのですが、チャットのようにAIとの会話を進める場合には、チャットの内容を保存しなければなりません。何故、保存しないとダメか?ってのは書籍に書いたので、ここでは、ChatHistory を使えば、AIとの会話を保存できます、とだけ言っておきます。いや、やっていることは、List に追加しているだけなんですが。
using Azure.AI.OpenAI;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel.Connectors.OpenAI;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
"test-x",
"https://sample-moonmile-openai.openai.azure.com/",
Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "");
var kernel = builder.Build();
ChatHistory を作る
Console.WriteLine("チャットの例");
// チャットの履歴をためておく
var history = new ChatHistory();
var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
"test-x",
"https://sample-moonmile-openai.openai.azure.com/",
Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "");
var kernel = builder.Build();
いわゆる DDL(create table の定義)から、ER 図を作成できる。テーブル作成自体は SQL Server Managerment Studio とか MySQL Workbeanch とかを使っても構わない。この手のツールでは、create table をダンプする機能があるので、それを使ってSQL文を書けばよい。あるいは、手書きでもかまわない。
「トランスサイエンス」という言葉がまさにこの映画にあてはまると思う。いや、アルビン・ワインバーグ – Wikipedia 自身もマンハッタン計画に加わっているので、まさにそれなのだろう。物理学者の世界では、どうしてもこの原爆を作ってしまったという「マンハッタン計画」を歴史上避けられない。おそらく、それはコンピュータを主とするソフトウェア開発者もあてはまる。私の場合は、二重にあてはまるのだが。