Azure.AI.OpenAI パッケージで OpenAI と Azure OpenAI Service に繋ぐときの違い
.NET で OpenAI を使うときのクラスライブラリとして Azure.AI.OpenAI パッケージがあります。
OpenAI と Azure OpenAI Service は Web API は互換性があるので、このパッケージを使ってどちらにも接続できます。
ただ、少し引数が違うので OpenAI の場合と Azure の場合でそれぞれどうやるのかということをメモしておこうと思います。
共通事項
NuGet から Azure.AI.OpenAI パッケージをインストールします。
2023/05/13 時点ではプレビューになっているのでプレビューパッケージを検索対象にしておくことを忘れないでください。
OpenAI
OpenAI に繋ぐときは、OpenAI のから API キーを払い出しておく必要があります。
あとは、呼び出すモデルの名前を取得しておいてください。
まとめると OpenAI を使うときは、以下の 2 つの情報を用意しておけば OK です。
- API キー
- 呼び出したいモデルの名前
この情報を使って実際にモデルを呼び出して結果を受け取るコードは以下のようになります。
using Azure.AI.OpenAI;
// API キーだけを渡せば OK
var client = new OpenAIClient(openAIApiKey: "sk-K......9o");
Azure.Response<Completions> result = await client.GetCompletionsAsync(
// モデル名
deploymentOrModelName: "text-davinci-003",
// 色々設定
completionsOptions: new()
{
MaxTokens = 200,
Temperature = 0.3f,
Prompts =
{
"お腹空いたのでお勧めの肉料理を教えて。",
}
});
// 結果を受け取って出力
Console.WriteLine(result.Value.Choices[0].Text);
Azure OpenAI Service
Azure OpenAI Service に繋ぐときは、最初に Azure で Azure OpenAI Service のリソースを作成しておく必要があります。
Azure OpenAI Service を作成したら、使用したいモデルをデプロイしておきます。デプロイ時に、モデルのデプロイ名が指定できるので、この名前を覚えておいてください。そして、API キーとエンドポイントを取得しておきます。
まとめると Azure OpenAI Service を使うときは以下の 3 つの情報を用意しておけば OK です。
- Azure OpenAI Service のエンドポイント (https://リソース名.openai.azure.com/)
- API キー
- デプロイしたモデルのデプロイ名
この情報を使って実際にモデルを呼び出して結果を受け取るコードは以下のようになります。
using Azure;
using Azure.AI.OpenAI;
// OpenAIClient 作成時にエンドポイントとキーを与える
var client = new OpenAIClient(new Uri("https://リソース名.openai.azure.com/"),
new AzureKeyCredential("...API キー..."));
Azure.Response<Completions> result = await client.GetCompletionsAsync(
deploymentOrModelName: "モデルのデプロイ名",
completionsOptions: new()
{
MaxTokens = 200,
Temperature = 0.3f,
Prompts =
{
"お腹空いたのでお勧めの肉料理を教えて。",
}
});
Console.WriteLine(result.Value.Choices[0].Text);
この他に Azure OpenAI Service では API キーではなくマネージド ID という Azure AD で認証をするような方法もあります。
詳しくは Azure OpenAI Service でマネージド ID を使う に書いたのでそちらを参照してください。
API キーよりセキュアな感じになるのと、API キーをどうやって管理するのかといったことも考えなくてよくなるのでお勧めです。
まとめ
Azure.AI.OpenAI パッケージを使って OpenAI と Azure OpenAI Service に繋ぐ方法を紹介しました。
基本的には OpenAI では API キーとモデル名の 2 つ、Azure の方はエンドポイント、API キー、モデルデプロイ名の 3 つが必要という違いがあります。
そこさえクリアしてしまえば、後は同じように使うことが出来るので是非 .NET で OpenAI 系の API を呼ぶときには Azure.AI.OpenAI パッケージを使ってみてください。
Discussion