takataka430’s blog

.NET系を中心に勉強したことのまとめを書きます

Azure OpenAIのC# SDKを使ってOpenAI(Azureではない)にリクエストを投げる

環境

Azure.AI.OpenAI 1.0.0-beta.15
コンソールアプリ(.NET 6)

実装

まずはクライアントを作成します。

string key = "[OpenAIのAPIキー]";

OpenAIClient client = new(key);

次にモデルの指定やプロンプトの設定を行います。

string modelName = "[モデル名]";

var chatCompletionOptions = new ChatCompletionsOptions()
{
    Messages =
    {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("Hello")
    },
    DeploymentName = modelName, //デプロイ名っぽいプロパティですが、OpenAIの場合はモデル名を指定します。
};

Messagesには上記のコードに直接List型のオブジェクトを設定することはできません。その代わりに以下のように実装できます。

IList<ChatRequestMessage> messageList = new List<ChatRequestMessage>
{
    new ChatRequestSystemMessage("You are a helpful assistant."),
    new ChatRequestUserMessage("Hello")
};

foreach (var message in messageList)
{
    chatCompletionOptions.Messages.Add(message);
}

こちらのほうが使い勝手がよさそうですね。

最後にOpenAIにリクエストを送って結果を表示します。

var completionsResponse = await client.GetChatCompletionsAsync(chatCompletionOptions);
string completion = completionsResponse.Value.Choices[0].Message.Content;
Console.WriteLine($"Chatbot: {completion}");

全体のコードは以下のようになります。

using Azure.AI.OpenAI;

string key = "[OpenAIのAPIキー]";
string modelName = "[モデル名]";

OpenAIClient client = new(key);


var chatCompletionOptions = new ChatCompletionsOptions()
{
    DeploymentName = modelName,
};

IList<ChatRequestMessage> messageList = new List<ChatRequestMessage>
{
    new ChatRequestSystemMessage("You are a helpful assistant."),
    new ChatRequestUserMessage("Hello")
};

foreach (var message in messageList)
{
    chatCompletionOptions.Messages.Add(message);
}

var completionsResponse = await client.GetChatCompletionsAsync(chatCompletionOptions);
string completion = completionsResponse.Value.Choices[0].Message.Content;
Console.WriteLine($"Chatbot: {completion}");

実行すると以下の結果が得られます。

Chatbot: Hello! How can I assist you today?

参考URL

learn.microsoft.com