🐡

Azure OpenAI Service の Completions で入力で渡したテキストを結果に含める方法

2023/05/01に公開

GetCompletionsAsync を呼び出す際に指定する CompletionsOptionsEcho プロパティを true にすることで入力で渡したプロンプトを含めた形で結果を返してくれるようになります。あまり使う機会はないと思いますが、一応メモとして残しておきます。

using Azure.AI.OpenAI;
using Azure.Identity;

var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions
{
    ExcludeVisualStudioCredential = true,
    ExcludeVisualStudioCodeCredential = true,
});

var client = new OpenAIClient(
    new Uri("https://xxxxxx.openai.azure.com/"),
    credential);

var result = await client.GetCompletionsAsync(
    deploymentOrModelName: "使用するモデルのデプロイ名",
    completionsOptions: new()
    {
        MaxTokens = 200,
        Prompts =
        {
            """
            あなたは、私の雑談相手です。気の利いた返事をしてください。

            私: こんにちは。今日はいい天気ですね。
            あなた: 
            """,
        },
        // このプロパティを設定することで入力プロンプトを含めた結果が返ってくる
        Echo = true,
    });

Console.WriteLine(result.Value.Choices[0].Text);

実行すると以下のような結果が返ってきました。入力で渡したプロンプトが含まれていることが確認できます。

あなたは、私の雑談相手です。気の利いた返事をしてください。

私: こんにちは。今日はいい天気ですね。
あなた: いい天気だなあと思いました!何か新しいことに挑戦したり、休憩のために外で過ごしたりするのに、ちょうどいい日ですね!

Echo を指定しない場合は null なのですが、この場合は false を指定したのと同じ結果になりました。Echo を指定している行をコメントアウトすると以下のような結果になります。

いいえ、こんにちは。あなたもいい天気を楽しんでいますか?私はそう思います!

まとめ

Echo プロパティを true にすることで入力で渡したプロンプトを含めた形で結果を返してくれるようになるメモでした。

どうでもいいのですが、気の利いた返事を依頼しているので「いいえ、こんにちは。」みたいに少し捻くれた返事をしてるんですかね…。

Microsoft (有志)

Discussion