このクイック スタートでは、OpenAI または Azure OpenAI モデルに接続してプロンプトを表示する .NET コンソール チャット アプリを作成する方法について説明します。 アプリは Microsoft.Extensions.AI ライブラリを使用するため、特定の SDK ではなく AI 抽象化を使用してコードを記述できます。 AI 抽象化を使用すると、最小限のコード変更で基になる AI モデルを変更できます。
[前提条件]
- .NET 8.0 SDK 以降 - .NET 8.0 SDKをインストールします。
- このサンプルを実行できるように、OpenAI の API キー。
[前提条件]
- .NET 8.0 SDK 以降 - .NET 8 SDKをインストールします。
- Azure サブスクリプション。無料で作成できます。
- Azure Developer CLI (省略可能) - Azure Developer CLIをインストールまたは更新します。
注
セマンティック カーネルを使用して、この記事のタスクを実行することもできます。 セマンティック カーネルは、AI エージェントを構築し、最新の AI モデルを .NET アプリに統合できる軽量のオープンソース SDK です。
アプリを作成する
AI モデルに接続する .NET コンソール アプリを作成するには、次の手順を実行します。
コンピューター上の空のディレクトリで、
dotnet newコマンドを使用して新しいコンソール アプリを作成します。dotnet new console -o ExtensionsAIディレクトリをアプリ フォルダーに変更します。
cd ExtensionsAI必要なパッケージをインストールします。
dotnet add package Azure.AI.OpenAI dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsdotnet add package OpenAI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsVisual Studio Code または任意のエディターでアプリを開きます。
AI サービスを作成する
Azure OpenAI サービスとモデルをプロビジョニングするには、 Azure OpenAI サービス リソースの作成とデプロイ に関する記事の手順を完了します。
ターミナルまたはコマンド プロンプトから、プロジェクト ディレクトリのルートに移動します。
次のコマンドを実行して、サンプル アプリの Azure OpenAI エンドポイントとモデル名を構成します。
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME <your-Azure-OpenAI-model-name> dotnet user-secrets set AZURE_OPENAI_API_KEY <your-Azure-OpenAI-key>
アプリを設定する
ターミナルまたはコマンド プロンプトから .NET プロジェクトのルートに移動します。
次のコマンドを実行して、OpenAI API キーをサンプル アプリのシークレットとして構成します。
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-OpenAI-key> dotnet user-secrets set ModelName <your-OpenAI-model-name>
アプリ コードを追加する
アプリは、Microsoft.Extensions.AI パッケージを使用して、AI モデルへの要求を送受信します。
benefits.md ファイルをプロジェクト ディレクトリにコピーします。 このファイルを出力ディレクトリにコピーするようにプロジェクトを構成します。 Visual Studio を使用している場合は、ソリューション エクスプローラーでファイルを右クリックし、[ プロパティ] を選択し、[ 出力ディレクトリにコピー ] を [新しい場合はコピー] に設定します。
Program.csファイルに、AI モデルに接続して認証するための次のコードを追加します。using Microsoft.Extensions.Configuration; using Microsoft.Extensions.AI; using Azure.AI.OpenAI; using Azure.Identity; var config = new ConfigurationBuilder() .AddUserSecrets<Program>() .Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_GPT_NAME"]; IChatClient client = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .GetChatClient(deployment) .AsIChatClient();注
DefaultAzureCredential は、ローカル ツールから認証資格情報を検索します。
azdテンプレートを使用して Azure OpenAI リソースをプロビジョニングしない場合は、Visual Studio または Azure CLI へのサインインに使用したアカウントに、Azure AI Developerロールを割り当てる必要があります。 詳細については、「.NET を使用して Azure AI サービスに対する認証をする」を参照してください。using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; using OpenAI; IConfigurationRoot config = new ConfigurationBuilder() .AddUserSecrets<Program>() .Build(); string? model = config["ModelName"]; string? key = config["OpenAIKey"]; IChatClient client = new OpenAIClient(key).GetChatClient(model).AsIChatClient();benefits.mdファイルの内容を読み取るコードを追加し、モデルのプロンプトを作成します。 プロンプトは、ファイルのテキスト コンテンツを 20 語以下で要約するようにモデルに指示します。string text = File.ReadAllText("benefits.md"); string prompt = $""" Summarize the the following text in 20 words or less: {text} """;GetResponseAsyncメソッドを呼び出して、応答を生成するプロンプトをモデルに送信します。// Submit the prompt and print out the response. ChatResponse response = await client.GetResponseAsync( prompt, new ChatOptions { MaxOutputTokens = 400 }); Console.WriteLine(response);アプリを実行します。
dotnet runアプリはAIモデルからの完了応答を出力します。
benefits.mdファイルのテキスト コンテンツまたは概要の長さをカスタマイズして、応答の違いを確認します。
リソースをクリーンアップする
不要になった場合は、Azure OpenAI リソースと GPT-4 モデルのデプロイを削除します。
- Azure Portalで、Azure OpenAI リソースに移動します。
- Azure OpenAI リソースを選択し、[削除] を選択します。
次のステップ
.NET