本記事は2023/3/22時点の情報で作成しています。
Azure OpenAI Serviceは将来的に動作や仕様が変更される可能性があります。
はじめに
AgVenture Lab 森永です。
昨年12月ごろから話題になったChatGPTを使っていたところ、2023年1月にAzure OpenAI Serviceが一般提供を開始というニュースを耳にしました。
本記事では、そのAzure OpenAI Serviceの概要・始め方・利用方法についてまとめてみました。
目次
- Azure OpenAI Serviceとは?
- Azure OpenAI Serviceの始め方
- Azure OpenAI Serviceの利用方法(Azure OpenAI Studio)
- Azure OpenAI Serviceの利用方法(Web API)
- Azure OpenAI Service vs ChatGPT(実際に使ってみた感想)
- まとめ
1.Azure OpenAI Serviceとは?
Azure OpenAI ServiceはAzure Cognitive Servicesのうちの一つに分類されており、Open AIが開発した自然言語モデルGPT-3(chatGPT含む)、コーディング支援に特化したモデルCodeX、埋め込みモデルEmbeddingsといった事前学習済みのAIモデルを、Web APIやAzure OpenAI StudioというWebユーザインターフェース経由で利用できるサービスです。
1.1.特徴
大きな特徴としては、
- Azureのロールベースアクセス制御(RBAC)が適用可能
- プライベートエンドポイント経由でのアクセスが可能
といった、エンタープライズレベルのセキュリティ機能が備わっていることです。
また、Azure OpenAI Serviceにおけるデータの扱いについて見たところ、
- ユーザの入力データはMicrosoft社が準備した、全ユーザ共通で利用されるAIモデルの学習に利用されることはない
- ユーザが独自にAIモデルの構築・利用を行いたい場合の専用AIモデルが準備されている
といった特徴もあるようです。
以上のように特徴だけを見てもAzure OpenAI Serviceは、
企業が安全・安心に業務で利用することができるAIサービス
という印象を覚えます。
1.2.モデル
1.2.1.GPT-3
GPT-3は自然言語の理解と生成を行うことができるモデルです。
GPT-3の中でも性能別に4つのモデルDavinci、Curie、Babbage、Adaが準備されています(性能はDavinci > Curie > Babbage > Ada)。
また、Davinciに関してはユーザによるAIモデルの微調整(ファインチューニング)に対応したモデルもあります。
加えて、3月10日からAzure OpenAI ServiceでもchatGPTの利用が可能となりました。
chatGPTとは、GPT-3をより会話形式でユーザとやりとりができるように調整されたもので、過去のユーザとのやりとりを考慮した上で応答してくれるAIモデルです。
3月21日よりGPT-4のパブリックプレビューが開始となりました。Azure OpenAI Serviceは後述の2.2.2.利用申請 の通り、事前に利用申請の承認が必要ですが、GPT-4は別途こちらのフォームでの登録が必要なようです。
1.2.2.CodeX
CodeXは自然言語とGitHub上のパブリックコードの両方を使ってトレーニングされた、コーディング支援に特化したAIモデルです。
CodeXでも性能別に2つのモデルDavinci、Cushmanが準備されています。
またGPT-3同様、Davinciに関してはユーザによるAIモデルの微調整(ファインチューニング)に対応したモデルもあります。
1.2.3.Embeddings
Embeddingsとはテキストやソースコードをベクトル(数値のリスト)に変換することで、検索・分類・類似性の検出を得意としたAIモデルです。
今まではテキストの検索、コードの検索、テキストの類似性と目的別にモデルが用意され、さらに各モデル性能別に4つのモデルDavinci、Curie、Babbage、Adaが準備されていましたが非推奨となり、現在は全てを行える最新のモデルがあります。
1.3.料金
Azure OpenAI Serviceには以下のような3つの課金要素が存在します。
- AIモデル入出力トークン(※トークン:AIが自然言語処理にて認識する最小単位)
- ファインチューニング対応モデルのホスティング(1時間あたり)
- ファインチューニング対応モデルの微調整(1時間あたり)
料金はモデルごとに細かく分かれております。
詳細はAzure OpenAI Serviceの料金表をご覧ください。
2.Azure OpenAI Serviceの始め方
2.1.前提
- Azureのサブスクリプションを作成している
- Azureのリソースグループを作成している
2.2.利用申請
現在、Azure OpenAI Serviceは一般提供が開始されていますが、実際に利用するには事前申請が必要です。
まずは以下のリンク先のフォームから利用申請を行いましょう。
利用申請フォーム内にアクセス許可を得たいAIモデルを選択する設問があります。画像生成モデルDALL-Eは他モデルとチェックボックスが分かれており、同時にチェックを入れてしまうと承認までに時間がかかる可能性があるようなので、ご注意ください。
2.3.Azure OpenAI Serviceのリソース作成
利用申請が承認されるとメールにて連絡がきます。
承認後はAzure Portalにて作業をやっていきます。
まずは、Azure Portal上部の検索バーにて「Azure OpenAI」と入力するとサービスがヒットするので、こちらを選択します。
「Cognitive Services|Azure OpenAI」画面に遷移するので、画面上部の「作成」を押下します。
リソース作成画面に遷移するので、必須情報の入力・選択を行なった後、「確認と作成」ボタンを押下します。
リージョンによって、利用できるAIモデルが異なります。予めどのAIモデルを使うかを決めてから、リソースを作成しましょう。AIモデルと利用可能リージョンの一覧表については、以下のリンク先をご覧ください。
AIモデルと利用可能リージョンの一覧表
「Cognitive Services|Azure OpenAI」画面に遷移し、先ほど作成したリソース名が表示されたら完了です。
2.4.モデルのデプロイ
リソース作成が完了したので、ここからは利用するモデルをデプロイしていきます。
リソースを選択すると以下のような画面に遷移するので、画面左側の「モデルのデプロイ」ボタン、または画面中央の「デプロイ」ボタンを押下します。
「モデル デプロイ」画面に遷移するので、画面上部の「作成」ボタンを押下します。
画面右側に「モデル デプロイの作成」画面が表示されるので、モデル デプロイ名を入力し、モデルを選択したのちに「保存」ボタンを押下します。
「モデル デプロイ」画面に遷移し、先ほど作成したモデル デプロイ名が表示されたら完了です。
3.Azure OpenAI Serviceの利用方法(Azure OpenAI Studio)
それでは実際にAzure OpenAI Serviceを使っていきたいと思います。
利用方法は、主に「Web API経由の利用」と「Azure OpenAI Studioでの利用」の2つがあります。
まずは簡単に利用できるAzure OpenAI Studioにて、chatGPT、GPT-3、CodeXの3つのAIモデルの利用を試していきます。
3.1.Azure OpenAI Service|プレイグラウンド画面への移動
まず、「モデル デプロイ」画面上部の「Azure OpenAI Studioに移動する」ボタンを押下します。
「Azure OpenAI Studio」画面に遷移するので、GPT-3またはCodeXを利用する場合は「GPT-3プレイグラウンド」ボタン、chatGPTを利用する場合は「ChatGPTプレイグラウンド」ボタンを押下します。
3.2.ChatGPTプレイグラウンドの使い方
3.2.1.ChatGPTプレイグラウンド画面構成
ChatGPTプレイグラウンド画面は「Assistant setup」、「Chat session」、「パラメーター」の3つの領域で構成されています。
3.2.2.Chat sessionについて
Chat sessionは文字通り、AIとチャットをやりとりする領域です。
使い方はシンプルで、下部のテキストエリアにAIに聞きたいことを入力し、「送信」ボタンを押下するだけです。
試しにAIにアジャイル開発手法について聞いてみたところ...
以下のように、アジャイル開発手法の概要・特徴に加え、メリットとデメリットまで回答してくれました。
ざっと内容を見たところ、そこまで大きな違和感は覚えません。
3.2.3.パラメーターについて
パラメーターの領域では、AIとチャットをやりとりする際のパラメーターを設定することができます。
-
Max response
-
温度(Temperature)
-
Top P
-
Stop sequence
-
Past messages included
- chatGPTは会話形式のため、ユーザとのやりとりを考慮した上でAIが応答します。
Past messages includedはそのユーザとの過去のやりとりをどこまで考慮するかを制御するパラメーターで、Past messages includedを4とした場合、ユーザの質問2つとそれに対応するAIの応答2つを考慮した上でユーザの要求に応答するようです。
ただし、こちらのパラメーターを大きく設定すると使用トークンが増え、料金も高くなってしまうので注意が必要です。
- chatGPTは会話形式のため、ユーザとのやりとりを考慮した上でAIが応答します。
3.2.4.Assistant setupについて
Assistant setupは、AIモデルの応答方法の指示を行う画面です。
まずは比較用に、応答方法について何も指示しなかった場合の応答です。
Assistant setup上部のプルダウンリストにサンプルがいくつか準備されていますが、明示的に指示を行う場合はSystem messsageにて指示を入力し、「Save changes」ボタンを押下します。
応答方法の指示を変更した場合、チャットのセッションが新しくなるので、以下のような画面が表示されたら「Continue」ボタンを押下します。
応答方法の指示を何もしなかった場合と同じ質問をすると、頑張って箇条書きを増やす形で回答してくれました。
「few-shotexamples」にてユーザーとAIモデルのやりとりの例を書くことで、よりAIモデルが意図した通りに応答するよう調整ができるようです。
以下は、サンプルの「シェイクスピア風の文体で話す」を選択した場合のAssistant setup画面です。
「few-shotexamples」の「User」には「夕食への招待を断る短文を書いてください」と言う指示が、「Assistant」には理想の回答が入力されています。
3.3.GPT-3プレイグラウンドの使い方
GPT-3モデルとCodeXモデルは、GPT-3プレイグラウンドで利用できます。
まずは3.1.Azure OpenAI Service|プレイグラウンド画面への移動 を参考に、GPT-3プレイグラウンドへ移動しましょう。
3.3.1.GPT-3プレイグラウンド画面構成
GPT-3プレイグラウンド画面は以下のように2つの領域で構成されています。左側がChatGPTプレイグラウンドでいう「Chat session」の領域に相当し(以下、「Session」)、右側が「パラメーター」領域となります。
3.3.2.Sessionについて(GPT-3モデル)
左上のプルダウンリストにて利用するモデルを選択できます。まずはGPT-3モデルを使ってみます。
GPT-3モデルはchatGPTと異なり会話形式でなく、1問1答形式となります。
使い方はシンプルで、下部のテキストエリアにAIに頼みたいことを入力し、「生成」ボタンを押下するだけです。
試しにAIにスクラムガイドに記載している「スクラムの定義」の要約を依頼してみました。
以下の緑のハイライト部分がAIモデルの回答になります。元の文章が約600字程度でしたが、約250字程度に要約してくれました。
3.3.3.パラメーターについて
chatGPTプレイグラウンド同様、AIとチャットをやりとりする際のパラメーターを設定することができます。
-
温度
- 応答のランダム度合いを制御するパラメータです。0に近づけるほど、より回答が決定的になります。
chatGPTプレイグラウンドの温度と同等。
- 応答のランダム度合いを制御するパラメータです。0に近づけるほど、より回答が決定的になります。
-
最大長(トークン)
- 応答で生成されるトークンの上限値です。
chatGPTプレイグラウンドのMax responseと同等。
- 応答で生成されるトークンの上限値です。
-
シーケンスの停止
- 余分な応答を防ぐため、文やリストの末尾など、必要なタイミングでモデル応答を停止するために設定するパラメーターです。
chatGPTプレイグラウンドのStop sequenceと同等。
- 余分な応答を防ぐため、文やリストの末尾など、必要なタイミングでモデル応答を停止するために設定するパラメーターです。
-
上位の確率
- 温度によるサンプリングの代替パラメーターです。
chatGPTプレイグラウンドのTop Pと同等。
- 温度によるサンプリングの代替パラメーターです。
-
頻度のペナルティ/プレゼンス ペナルティ
- 頻度のペナルティ/プレゼンス ペナルティはどちらも同じ単語を繰り返し使うかどうかを制御するパラメーターです。
正の値を指定すると、ペナルティが課せられ、より同じ単語を使わない傾向になります。
頻度のペナルティはこれまでのテキストに出現した頻度に基づいてペナルティを課すことで制御します。
一方、プレゼンス ペナルティは頻度を考慮せず、これまでのテキストに出現したか否かに基づいてペナルティを課すことで制御します。
それではパラメータを変えることで応答がどう変化するのか、実際に試したいと思います。
まずは比較対象として、頻度のペナルティ/プレゼンス ペナルティ共に0とした場合の応答です。
同じ単語を繰り返し使うかを制御していないので、複数回使用されている単語がいくつか見受けられます。
特に「開発プロジェクト」という単語は6回も使われています(ソフトウェア開発プロジェクト含む)。
続いて、頻度のペナルティを2に設定し、先ほどと同じ質問をしてみます。
繰り返し使われている単語は「イテレーション」という単語が2回のみと、確かに繰り返し使われる単語を数も回数も減っています。
次に、プレゼンス ペナルティを2に設定し、同じ質問をしてみます。
こちらも繰り返し使われている単語は「顧客」という単語が3回のみと、繰り返し使われる単語を数も回数も減っていることが分かります。
最後に、頻度のペナルティ/プレゼンス ペナルティ共に2と設定し、同じ質問をしてみます。
迭代と中国語を使用しているのはさておき、繰り返し使われている単語はなくなりました。
- 頻度のペナルティ/プレゼンス ペナルティはどちらも同じ単語を繰り返し使うかどうかを制御するパラメーターです。
-
ベスト
- AIモデル側がユーザーへの応答前に生成する結果の数を制御するパラメーターです。生成した結果の中から最良の回答をユーザーに返します。
-
応答前のテキスト・応答後のテキスト
3.3.4.Sessionについて(CodeXモデル)
GPT3プレイグラウンド画面にてCodeXモデルを利用する場合、Session領域の下部に利用言語を選択できます。
CodeXの場合、自然言語はコメントの形で記述します。
試しに「JavaScriptにて文字列を反転する方法」と入力して「生成」ボタンを押下すると、きちんと自然言語→コードの変換をしてくれました。
他にもコードを記述し、その内容を教えてくださいという形でもきちんと回答してくれました。
4.Azure OpenAI Serviceの利用方法(Web API)
Web APIを経由したAzure OpenAI Serviceの利用方法について、GPT-3モデルをREST APIで利用するケースを例にまとめます。
4.1.サンプルコードの取得
以下のようにサンプルコードが表示されるので、右上のプルダウンリストから「json」を選択し、URLと本文をコピーします。
4.2.APIキーの取得
先程のサンプルコード下部にも表示されていましたが、APIキーが必要です。
APIキーは、「Azure OpenAIリソース」画面→「キーとエンドポイント」画面にて取得できます(キーが複数ある場合はどちらでも可)。
4.3.REST API経由での利用
今回は普段から利用している、Visual Studio Codeの拡張機能「REST Client」を用います。
まずはVisual Studio CodeにREST Clientをインストールします。
次に新規ファイルを作成し、「任意のファイル名.http」で保存してください。
そして、サンプルコードにてコピーしたURLと本文、APIキーを元にファイルの内容を以下のフォーマットに修正します。
POST サンプルコードにてコピーしたURL
content-type: application/json
api-key: APIキー
サンプルコードにてコピーした本文
最後に「prompt」にAIに聞きたいことを入力した上でファイルを保存して、左上に「Send Request」を押下してください。
5.Azure OpenAI Service vs ChatGPT(実際に使ってみた感想)
Azure OpenAI ServiceとChatGPTの両方を利用した私が、ざっくりとAzure OpenAI ServiceとChatGPTを比較してみました。
-
セキュリティについて
ユーザーが入力したデータのみに関していうと、ChatGPTもAPI(有料)ならデフォルトで、Webブラウザ利用の場合も申請すればAIの学習に利用されることはありません。
しかし、Azure OpenAI Serviceには1.1.特徴 でも述べたように、エンタープライズレベルのセキュリティ機能も備わっています。
AIを利用する際にセキュリティ面で不安があるのならば、Azure OpenAI Serviceの利用がいいかもしれません。 -
応用性について
Azure OpenAI ServiceではChatGPT以外にも様々なAIモデルを利用できます。
また、その中にはユーザが独自にAIモデルの構築・利用を行いたい場合の専用AIモデルもあるので、専用のAIモデルを構築・利用することで、より作業効率化が図れるのではないでしょうか。 -
コストについて
Azure OpenAI Serviceの利用とChatGPTのWebブラウザ利用を比較した場合、前者は最初からコストが発生しますが、後者は無料で利用開始することができます。
ただし、Azure OpenAI Serviceの利用とChatGPTのAPI利用を比較した場合、基本的にコストは同一($0.002/1000トークン)となります。
以上のことから、
「個人で気軽にAIを利用するならChatGPT」
「企業で安心して本格的にAIを利用するならAzure OpenAI Service」
といった印象を私は覚えました。
6.まとめ
本記事では、Azure OpenAI Serviceの概要から利用方法までをまとめました。
これでセキュリティを担保した上で、様々なAIを活用できると思うので、ぜひ、Azure OpenAI Serviceを試してみてください。