.NET で AI を使用してイメージを生成する
このクイックスタートでは、テキスト プロンプトに基づいて画像を生成するように特別に設計された OpenAI または Azure OpenAI DALLe AI モデルを使用して画像を生成する、.NET コンソール アプリを作成する方法を学習します。
前提条件
- .NET 8.0 SDK 以降 - .NET 8.0 SDKをインストールします。
- このサンプルを実行できるようにするための OpenAI の API キー。
前提条件
- .NET 8.0 SDK 以降 - .NET 8 SDKをインストールします。
- Azure サブスクリプション。無料で作成できます。
- Azure OpenAI サービスにアクセスします。
- Azure Developer CLI (省略可能) - Azure Developer CLIをインストールまたは更新します。
メモ
セマンティック カーネルを使用して、この記事のタスクを実行することもできます。 セマンティック カーネルは、AI エージェントを構築し、最新の AI モデルを .NET アプリに統合できる軽量のオープンソース SDK です。
サンプル リポジトリをクローンする
前のセクションの手順を使用して独自のアプリを作成することも、すべてのクイックスタートの完成したサンプル アプリを含む GitHub リポジトリを複製することもできます。 Azure OpenAI を使用する予定の場合、サンプル リポジトリは、Azure OpenAI リソースをプロビジョニングできる Azure Developer CLI テンプレートとしても構成されます。
git clone https://github.com/dotnet/ai-samples.git
アプリを作成する
AI モデルに接続する .NET コンソール アプリを作成するには、次の手順を実行します。
コンピューター上の空のディレクトリで、
dotnet new
コマンドを使用して新しいコンソール アプリを作成します。dotnet new console -o ImagesAI
ディレクトリをアプリ フォルダーに移動します。
cd ImagesAI
必要なパッケージをインストールします。
dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
Visual Studio Code または任意のエディターでアプリを開きます。
code .
AI サービスを作成する
- Azure Developer CLI
- Azure CLI
- Azure Portal
サンプルの GitHub リポジトリは、Azure Developer CLI (azd
) テンプレートとして構成されています。azd
がこれを使用して、Azure OpenAI サービスとモデルをプロビジョニングできます。
ターミナルまたはコマンド プロンプトから、サンプル リポジトリの
src\quickstarts\azure-openai
ディレクトリに移動します。azd up
コマンドを実行して、Azure OpenAI リソースをプロビジョニングします。 Azure OpenAI サービスの作成とモデルのデプロイには数分かかる場合があります。azd up
azd
また、Azure OpenAI エンドポイントやモデル名など、サンプル アプリに必要なユーザー シークレットも構成します。
Configure the app
ターミナルまたはコマンド プロンプトから .NET プロジェクトのルートに移動します。
次のコマンドを実行して、OpenAI API キーをサンプル アプリのシークレットとして構成します。
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key> dotnet user-secrets set ModelName <your-openai-model-name>
アプリ コードを追加する
Program.cs ファイルに次のコードを追加して、AI モデルに接続して認証します。
using Microsoft.Extensions.Configuration; using OpenAI.Images; using System.ClientModel; using Azure.AI.OpenAI; using Azure.Identity; // Retrieve the local secrets saved during the Azure deployment. If you skipped the deployment // because you already have an Azure OpenAI available, edit the following lines to use your information, // e.g. string openAIEndpoint = "https://cog-demo123.openai.azure.com/"; var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_DALLE_NAME"]; // Create the Azure OpenAI ImageClient ImageClient client = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .GetImageClient(deployment); // Generate the image GeneratedImage generatedImage = await client.GenerateImageAsync(""" A postal card with an happy hiker waving and a beautiful mountain in the background. There is a trail visible in the foreground. The postal card has text in red saying: 'You are invited for a hike!' """, new ImageGenerationOptions { Size = GeneratedImageSize.W1024xH1024 }); Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
メモ
DefaultAzureCredential は、ローカル ツールから認証資格情報を検索します。
azd
テンプレートを使用して Azure OpenAI リソースをプロビジョニングしない場合は、Visual Studio または Azure CLI へのサインインに使用したアカウントに、Azure AI Developer
ロールを割り当てる必要があります。 詳細については、.NET を使用して Azure AI サービスを認証する方法に関するページを参照してください。// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using Microsoft.Extensions.Configuration; using OpenAI.Images; // Retrieve the local secrets that were set from the command line, using: // dotnet user-secrets init // dotnet user-secrets set OpenAIKey <your-openai-key> var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string key = config["OpenAIKey"]; string modelName = config["ModelName"]; // Create the OpenAI ImageClient ImageClient client = new(modelName, key); // Generate the image GeneratedImage generatedImage = await client.GenerateImageAsync(""" A postal card with a happy hiker waving and a beautiful mountain in the background. There is a trail visible in the foreground. The postal card has text in red saying: 'You are invited for a hike!' """, new ImageGenerationOptions { Size = GeneratedImageSize.W1024xH1024 }); Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
上記のコードでは次の操作が行われます。
- プロジェクト ユーザー シークレットから重要な構成値を読み取り、AI モデルに接続します
ImageClient
を作成して AI モデルに接続します- 目的のイメージを説明するプロンプトをモデルに送信します
- 生成されたイメージの URL をコンソール出力に出力します
dotnet run
コマンドを使用してアプリを実行します。dotnet run
コンソール出力のイメージ URL に移動して、生成されたイメージを表示します。 プロンプトのテキスト コンテンツをカスタマイズして、新しいイメージを作成したり、元のイメージを変更したりします。
リソースをクリーンアップする
サンプル アプリケーションやリソースが不要になったら、対応するデプロイとすべてのリソースを削除します。
azd down
次のステップ
.NET