環境
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?