次の方法で共有


.NET を使用して AI モデルに接続してプロンプトを表示する

このクイック スタートでは、OpenAI または Azure OpenAI モデルに接続してプロンプトを表示する .NET コンソール チャット アプリを作成する方法について説明します。 アプリは Microsoft.Extensions.AI ライブラリを使用するため、特定の SDK ではなく AI 抽象化を使用してコードを記述できます。 AI 抽象化を使用すると、最小限のコード変更で基になる AI モデルを変更できます。

Note

Microsoft.Extensions.AI ライブラリは現在プレビュー段階です。

前提条件

前提条件

Note

Semantic Kernel を使用して、この記事のタスクを実行することもできます。 セマンティック カーネルは、AI エージェントを構築し、最新の AI モデルを .NET アプリに統合できる軽量のオープンソース SDK です。

サンプル リポジトリをクローンする

前のセクションの手順を使用して独自のアプリを作成することも、すべてのクイックスタートの完成したサンプル アプリを含む GitHub リポジトリを複製することもできます。 Azure OpenAI を使用する予定の場合、サンプル リポジトリは、Azure OpenAI リソースをプロビジョニングできる Azure Developer CLI テンプレートとしても構成されます。

git clone https://github.com/dotnet/ai-samples.git

アプリを作成する

AI モデルに接続する .NET コンソール アプリを作成するには、次の手順を実行します。

  1. コンピューター上の空のディレクトリで、 dotnet new コマンドを使用して新しいコンソール アプリを作成します。

    dotnet new console -o ExtensionsAI
    
  2. ディレクトリをアプリ フォルダーに変更します。

    cd ExtensionsAI
    
  3. 必要なパッケージをインストールします。

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  4. Visual Studio Code または任意のエディターでアプリを開く

    code .
    

AI サービスを作成する

サンプルの GitHub リポジトリは、Azure Developer CLI (azd) テンプレートとして構成されています。azd がこれを使用して、Azure OpenAI サービスとモデルをプロビジョニングできます。

  1. ターミナルまたはコマンド プロンプトから、サンプル リポジトリの src\quickstarts\azure-openai ディレクトリに移動します。

  2. azd up コマンドを実行して、Azure OpenAI リソースをプロビジョニングします。 Azure OpenAI サービスの作成とモデルのデプロイには数分かかる場合があります。

    azd up
    

    azd また、Azure OpenAI エンドポイントやモデル名など、サンプル アプリに必要なユーザー シークレットも構成します。

Configure the app

  1. ターミナルまたはコマンド プロンプトから .NET projet のルートに移動します。

  2. 次のコマンドを実行して、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 モデルへの要求を送受信します。

  1. 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())
            .AsChatClient(deployment);
    

    Note

    DefaultAzureCredential は、ローカル ツールから認証資格情報を検索します。 azd テンプレートを使用して Azure OpenAI リソースをプロビジョニングしない場合は、Visual Studio または Azure CLI へのサインインに使用したアカウントにAzure AI Developer ロールを割り当てる必要があります。 詳細については、「 .NET を使用した Azure AI サービスへの認証を参照してください。

    using Microsoft.Extensions.AI;
    using Microsoft.Extensions.Configuration;
    using OpenAI;
    
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string model = config["ModelName"];
    string key = config["OpenAIKey"];
    
    // Create the IChatClient
    IChatClient client =
        new OpenAIClient(key).AsChatClient(model);
    
  2. benefits.md ファイルの内容を読み取り、それを使用してモデルのプロンプトを作成します。 プロンプトは、ファイル テキストの内容を要約するようにモデルに指示します。

    // Create and print out the prompt
    string prompt = $"""
        summarize the the following text in 20 words or less:
        {File.ReadAllText("benefits.md")}
        """;
    
    Console.WriteLine($"user >>> {prompt}");
    
  3. InvokePromptAsync関数を呼び出して、応答を生成するプロンプトをモデルに送信します。

    // Submit the prompt and print out the response
    ChatCompletion response = await client.CompleteAsync(prompt, new ChatOptions { MaxOutputTokens = 400 });
    Console.WriteLine($"assistant >>> {response}");
    
  4. dotnet run コマンドを使用してアプリを実行します。

    dotnet run
    

    アプリは、AI モデルから完了応答を出力します。 benefits.md ファイルのテキスト コンテンツまたは概要の長さをカスタマイズして、応答の違いを確認します。

リソースをクリーンアップする

サンプル アプリケーションやリソースが不要になったら、対応するデプロイとすべてのリソースを削除します。

azd down

次のステップ