企業利用ならChatGPTよりおすすめ！Azure OpenAI ServiceにおけるAI活用の始め方

:::note warn
本記事は2023/3/22時点の情報で作成しています。
Azure OpenAI Serviceは将来的に動作や仕様が変更される可能性があります。
:::

# はじめに
AgVenture Lab 森永です。
昨年12月ごろから話題になったChatGPTを使っていたところ、2023年1月にAzure OpenAI Serviceが一般提供を開始というニュースを耳にしました。
本記事では、そのAzure OpenAI Serviceの概要・始め方・利用方法についてまとめてみました。

# 目次
1. [Azure OpenAI Serviceとは?](#1azure-openai-serviceとは)
   1. [特徴](#11特徴) 
   1. [利用モデル](#12モデル) 
      1. [GPT-3](#121gpt-3) 
      1. [Codex](#122codex)
      1. [Embeddings](#123embeddings)
   1. [料金](#13料金) 
1. [Azure OpenAI Serviceの始め方](#2azure-openai-serviceの始め方) 
   1. [前提](#21前提) 
   1. [利用申請](#22利用申請) 
   1. [Azure OpenAI Serviceのリソース作成](#23azure-openai-serviceのリソース作成) 
   1. [モデルのデプロイ](#24モデルのデプロイ) 
1. [Azure OpenAI Serviceの利用方法(Azure OpenAI Studio)](#3azure-openai-serviceの利用方法azure-openai-studio)
   1. [Azure OpenAI Service|プレイグラウンド画面への移動](#31azure-openai-serviceプレイグラウンド画面への移動) 
   1. [ChatGPTプレイグラウンドの使い方](#32chatgptプレイグラウンドの使い方) 
      1. [ChatGPTプレイグラウンド画面構成](#321chatgptプレイグラウンド画面構成) 
      1. [Chat sessionについて](#322chat-sessionについて) 
      1. [パラメーターについて](#323パラメーターについて) 
      1. [Assistant setupについて](#324assistant-setupについて) 
   1. [GPT-3プレイグラウンドの使い方](#33gpt-3プレイグラウンドの使い方) 
      1. [GPT-3プレイグラウンド画面構成](#331gpt-3プレイグラウンド画面構成) 
      1. [Sessionについて(GPT-3モデル)](#332sessionについてgpt3モデル) 
      1. [パラメーターについて](#333パラメーターについて) 
      1. [Sessionについて(CodeXモデル)](#334sessionについてcodexモデル) 
1. [Azure OpenAI Serviceの利用方法(Web API)](#4azure-openai-serviceの利用方法web-api)
   1. [サンプルコードの取得](#41サンプルコードの取得) 
   1. [APIキーの取得](#42apiキーの取得) 
   1. [REST API経由での利用](#43rest-api経由での利用) 
1. [Azure OpenAI Service vs ChatGPT(実際に使ってみた感想)](#5azure-openai-service-vs-chatgpt実際に使ってみた感想)
1. [まとめ](#6まとめ)

# 1.Azure OpenAI Serviceとは?
[Azure OpenAI Service](https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/)は[Azure Cognitive Services](https://learn.microsoft.com/ja-jp/azure/cognitive-services/)のうちの一つに分類されており、Open AIが開発した自然言語モデルGPT-3(chatGPT含む)、コーディング支援に特化したモデルCodeX、埋め込みモデルEmbeddingsといった事前学習済みのAIモデルを、Web APIやAzure OpenAI StudioというWebユーザインターフェース経由で利用できるサービスです。

## 1.1.特徴
大きな特徴としては、

- Azureの[ロールベースアクセス制御（RBAC）](https://learn.microsoft.com/ja-jp/azure/role-based-access-control/overview)が適用可能
- [プライベートエンドポイント](https://learn.microsoft.com/ja-jp/azure/private-link/private-endpoint-overview)経由でのアクセスが可能

といった、エンタープライズレベルのセキュリティ機能が備わっていることです。<br>
また、[Azure OpenAI Serviceにおけるデータの扱い](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/data-privacy?context=%2Fazure%2Fcognitive-services%2Fopenai%2Fcontext%2Fcontext)について見たところ、

- ユーザの入力データはMicrosoft社が準備した、全ユーザ共通で利用されるAIモデルの学習に利用されることはない
- ユーザが独自にAIモデルの構築・利用を行いたい場合の専用AIモデルが準備されている

といった特徴もあるようです。

以上のように特徴だけを見てもAzure OpenAI Serviceは、

<INS>**企業が安全・安心に業務で利用することができるAIサービス**<INS>

という印象を覚えます。

## 1.2.モデル
### 1.2.1.GPT-3
[GPT-3](https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/concepts/models#gpt-3-models)は自然言語の理解と生成を行うことができるモデルです。
GPT-3の中でも性能別に４つのモデルDavinci、Curie、Babbage、Adaが準備されています(性能はDavinci > Curie > Babbage > Ada)。
また、Davinciに関してはユーザによるAIモデルの微調整(ファインチューニング)に対応したモデルもあります。

加えて、3月10日からAzure OpenAI Serviceでも[chatGPT](https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/concepts/models#chatgpt-gpt-35-turbo)の利用が可能となりました。
chatGPTとは、GPT-3をより会話形式でユーザとやりとりができるように調整されたもので、過去のユーザとのやりとりを考慮した上で応答してくれるAIモデルです。

:::note info
3月21日よりGPT-4のパブリックプレビューが開始となりました。Azure OpenAI Serviceは後述の[2.2.2.利用申請](#22利用申請) の通り、事前に利用申請の承認が必要ですが、GPT-4は別途[こちらのフォーム](https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xURjE4QlhVUERGQ1NXOTlNT0w1NldTWjJCMSQlQCN0PWcu)での登録が必要なようです。
:::

### 1.2.2.CodeX
[CodeX](https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/concepts/models#codex-models)は自然言語とGitHub上のパブリックコードの両方を使ってトレーニングされた、コーディング支援に特化したAIモデルです。
CodeXでも性能別に2つのモデルDavinci、Cushmanが準備されています。
またGPT-3同様、Davinciに関してはユーザによるAIモデルの微調整(ファインチューニング)に対応したモデルもあります。

### 1.2.3.Embeddings
[Embeddings](https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/concepts/models#embeddings-models)とはテキストやソースコードをベクトル(数値のリスト)に変換することで、検索・分類・類似性の検出を得意としたAIモデルです。
今まではテキストの検索、コードの検索、テキストの類似性と目的別にモデルが用意され、さらに各モデル性能別に４つのモデルDavinci、Curie、Babbage、Adaが準備されていましたが非推奨となり、現在は全てを行える最新のモデルがあります。

## 1.3.料金
Azure OpenAI Serviceには以下のような3つの課金要素が存在します。
- AIモデル入出力トークン(※トークン:AIが自然言語処理にて認識する最小単位)
- ファインチューニング対応モデルのホスティング(1時間あたり)
- ファインチューニング対応モデルの微調整(1時間あたり)

料金はモデルごとに細かく分かれております。
詳細は[Azure OpenAI Serviceの料金表](https://azure.microsoft.com/en-gb/pricing/details/cognitive-services/openai-service/)をご覧ください。

# 2.Azure OpenAI Serviceの始め方

## 2.1.前提
- Azureのサブスクリプションを作成している
- Azureのリソースグループを作成している

## 2.2.利用申請
現在、Azure OpenAI Serviceは一般提供が開始されていますが、実際に利用するには事前申請が必要です。
まずは以下のリンク先のフォームから利用申請を行いましょう。
- [利用申請フォーム](https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUOFA5Qk1UWDRBMjg0WFhPMkIzTzhKQ1dWNyQlQCN0PWcu)

:::note info
利用申請フォーム内にアクセス許可を得たいAIモデルを選択する設問があります。画像生成モデルDALL-Eは他モデルとチェックボックスが分かれており、同時にチェックを入れてしまうと承認までに時間がかかる可能性があるようなので、ご注意ください。
:::

## 2.3.Azure OpenAI Serviceのリソース作成
利用申請が承認されるとメールにて連絡がきます。
承認後は[Azure Portal](https://portal.azure.com/#home)にて作業をやっていきます。

まずは、Azure Portal上部の検索バーにて「**Azure OpenAI**」と入力するとサービスがヒットするので、こちらを選択します。
![リソース作成1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/7bd6d3e7-fb17-3b17-1f48-654cd926b61e.png)

「Cognitive Services|Azure OpenAI」画面に遷移するので、画面上部の「**作成**」を押下します。
![リソース作成2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/5141dcb5-2c40-e552-2af5-269bb6149b69.png)

リソース作成画面に遷移するので、必須情報の入力・選択を行なった後、「**確認と作成**」ボタンを押下します。

:::note info
リージョンによって、利用できるAIモデルが異なります。予めどのAIモデルを使うかを決めてから、リソースを作成しましょう。AIモデルと利用可能リージョンの一覧表については、以下のリンク先をご覧ください。
[AIモデルと利用可能リージョンの一覧表](https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/concepts/models#model-summary-table-and-region-availability)
:::

![リソース作成3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/6deab70e-dc66-7ee2-42db-70598727e013.png)


「Cognitive Services|Azure OpenAI」画面に遷移し、先ほど作成したリソース名が表示されたら完了です。
![リソース作成4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/2fc80340-0d71-d84c-282d-5ff3ccb65ecf.png)

## 2.4.モデルのデプロイ
リソース作成が完了したので、ここからは利用するモデルをデプロイしていきます。

まずは、先ほど作成したリソースを選択します。
![モデルデプロイ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/6bcb73f4-af19-dd54-c75a-f74d4a0ae222.png)

リソースを選択すると以下のような画面に遷移するので、画面左側の「**モデルのデプロイ**」ボタン、または画面中央の「**デプロイ**」ボタンを押下します。
![モデルデプロイ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/b64d2162-2622-04d0-d1bf-3b6f8ae11d8a.png)

「モデル デプロイ」画面に遷移するので、画面上部の「**作成**」ボタンを押下します。
![モデルデプロイ3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/fe8e7714-2142-c8f0-4c43-d47ea65b7aed.png)

画面右側に「モデル デプロイの作成」画面が表示されるので、モデル デプロイ名を入力し、モデルを選択したのちに「**保存**」ボタンを押下します。
![モデルデプロイ4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/ed18d745-d43f-7aa7-5a85-f8613fe4e25d.png)

「モデル デプロイ」画面に遷移し、先ほど作成したモデル デプロイ名が表示されたら完了です。
![モデルデプロイ5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/e3cb6a56-e1d0-83e2-7987-2216be7a622a.png)

# 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に移動する**」ボタンを押下します。
![利用方法1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/224b577d-43d0-8ca0-8bb7-68b5163f2fbb.png)

「Azure OpenAI Studio」画面に遷移するので、GPT-3またはCodeXを利用する場合は「**GPT-3プレイグラウンド**」ボタン、chatGPTを利用する場合は「**ChatGPTプレイグラウンド**」ボタンを押下します。
![利用方法2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/b0f786a0-9d68-3406-c247-a39540c4960e.png)

## 3.2.ChatGPTプレイグラウンドの使い方
### 3.2.1.ChatGPTプレイグラウンド画面構成
ChatGPTプレイグラウンド画面は「Assistant setup」、「Chat session」、「パラメーター」の３つの領域で構成されています。
![chatGPT1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/89612ada-bfda-3b2f-d7f7-cec0ca04d657.png)

### 3.2.2.Chat sessionについて
Chat sessionは文字通り、AIとチャットをやりとりする領域です。
使い方はシンプルで、下部のテキストエリアにAIに聞きたいことを入力し、「**送信**」ボタンを押下するだけです。
試しにAIにアジャイル開発手法について聞いてみたところ...
![chatGPT2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/94ccaf4c-60e5-337c-b860-a2e4b0e4316a.png)

以下のように、アジャイル開発手法の概要・特徴に加え、メリットとデメリットまで回答してくれました。
ざっと内容を見たところ、そこまで大きな違和感は覚えません。
![chatGPT3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/916cef2f-ba63-0d53-1359-80a6b29b3266.png)

### 3.2.3.パラメーターについて
パラメーターの領域では、AIとチャットをやりとりする際のパラメーターを設定することができます。
- Max response 
  - 応答で生成されるトークンの上限値です。
    試しにMax responseを先ほどの半分である400に設定し、同じ質問をしてみたところ、アジャイル開発手法のメリット・デメリットが省略され、よりコンパクトな回答が得られました。
![chatGPT5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/0db2a658-13fd-ad09-804d-b1bf34b3ea53.png)

- 温度(Temperature)
  - 応答のランダム度合いを制御するパラメータです。0に近づけるほど、より回答が決定的になります。
    試しに温度を0に設定し、同一のチャットで同じ質問を2回繰り返したところ、2回とも同じ回答が得られました。
![chatGPT6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/7bd9a3d0-350d-c203-c8fc-312e07e837e4.png)

- Top P
   - 核サンプリングと呼ばれる、温度によるサンプリングの代替パラメータであり、上記の温度同様にどれだけ回答を決定的にするかを制御するパラメーターのようです。
    試しに温度はデフォルトの0.7のまま、Top Pを0に設定し、同一のチャットで同じ質問を2回繰り返したところ、2回とも同じ回答が得られました。
![chatGPT8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/6a7a25d0-e095-d4d1-ade5-b1725263d98a.png)

- Stop sequence
   -  余分な応答を防ぐため、文やリストの末尾など、必要なタイミングで応答を停止するために設定するパラメーターです。
      まずは比較用に、Stop sequenceなしで質問します。
![chatGPT9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/6bd63cca-0533-0323-eb61-c8784876a60f.png)
   - 次にStop sequenceに"。"を設定して同じ質問をします。すると確かに1回目に比べて早いタイミングで応答が終了しました。
     ![chatGPT10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/d243d6ee-588a-54ba-bb41-7e247d980338.png)

- Past messages included
  -  chatGPTは会話形式のため、ユーザとのやりとりを考慮した上でAIが応答します。
     Past messages includedはそのユーザとの過去のやりとりをどこまで考慮するかを制御するパラメーターで、Past messages includedを4とした場合、ユーザの質問2つとそれに対応するAIの応答2つを考慮した上でユーザの要求に応答するようです。
     ただし、こちらのパラメーターを大きく設定すると使用トークンが増え、料金も高くなってしまうので注意が必要です。

### 3.2.4.Assistant setupについて
Assistant setupは、AIモデルの応答方法の指示を行う画面です。
まずは比較用に、応答方法について何も指示しなかった場合の応答です。
![chatGPT12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/80e4472d-4efb-b205-cadd-2e8b501cc7ab.png)

Assistant setup上部のプルダウンリストにサンプルがいくつか準備されていますが、明示的に指示を行う場合はSystem messsageにて指示を入力し、「Save changes」ボタンを押下します。
![chatGPT13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/502333c9-98cb-bab3-272b-156aaaf8768f.png)

応答方法の指示を変更した場合、チャットのセッションが新しくなるので、以下のような画面が表示されたら「Continue」ボタンを押下します。
![chatGPT14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/78d19e2a-646a-6b68-83ea-f21c02a26472.png)

応答方法の指示を何もしなかった場合と同じ質問をすると、頑張って箇条書きを増やす形で回答してくれました。
![chatGPT15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/4363ea72-04e7-b2f8-6a43-eb1a624e562f.png)

「few-shotexamples」にてユーザーとAIモデルのやりとりの例を書くことで、よりAIモデルが意図した通りに応答するよう調整ができるようです。

以下は、サンプルの「シェイクスピア風の文体で話す」を選択した場合のAssistant setup画面です。
「few-shotexamples」の「User」には「夕食への招待を断る短文を書いてください」と言う指示が、「Assistant」には理想の回答が入力されています。
![chatGPT16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/d60709bc-8183-b393-458f-be796c76487e.png)

## 3.3.GPT-3プレイグラウンドの使い方
GPT-3モデルとCodeXモデルは、GPT-3プレイグラウンドで利用できます。
まずは[3.1.Azure OpenAI Service|プレイグラウンド画面への移動](#31azure-openai-serviceプレイグラウンド画面への移動) を参考に、GPT-3プレイグラウンドへ移動しましょう。

### 3.3.1.GPT-3プレイグラウンド画面構成
GPT-3プレイグラウンド画面は以下のように2つの領域で構成されています。左側がChatGPTプレイグラウンドでいう「Chat session」の領域に相当し(以下、「Session」)、右側が「パラメーター」領域となります。
![GPT3_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/cad82307-3456-1087-2477-5ddc0256b112.png)

### 3.3.2.Sessionについて(GPT-3モデル)
左上のプルダウンリストにて利用するモデルを選択できます。まずはGPT-3モデルを使ってみます。
GPT-3モデルはchatGPTと異なり会話形式でなく、1問1答形式となります。
使い方はシンプルで、下部のテキストエリアにAIに頼みたいことを入力し、「**生成**」ボタンを押下するだけです。
試しにAIに[スクラムガイド](https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Japanese.pdf)に記載している「スクラムの定義」の要約を依頼してみました。
![GPT3_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/b1bee009-9e2e-69b0-ffe4-28ba4ec3b6a8.png)

以下の緑のハイライト部分がAIモデルの回答になります。元の文章が約600字程度でしたが、約250字程度に要約してくれました。
![GPT3_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/ac55fb13-4fec-78f7-6c6c-0fe3d28a8ada.png)

### 3.3.3.パラメーターについて
chatGPTプレイグラウンド同様、AIとチャットをやりとりする際のパラメーターを設定することができます。
- 温度
  - 応答のランダム度合いを制御するパラメータです。0に近づけるほど、より回答が決定的になります。
    chatGPTプレイグラウンドの温度と同等。

- 最大長(トークン)
  - 応答で生成されるトークンの上限値です。
    chatGPTプレイグラウンドのMax responseと同等。

- シーケンスの停止
  - 余分な応答を防ぐため、文やリストの末尾など、必要なタイミングでモデル応答を停止するために設定するパラメーターです。
    chatGPTプレイグラウンドのStop sequenceと同等。

- 上位の確率
  - 温度によるサンプリングの代替パラメーターです。
    chatGPTプレイグラウンドのTop Pと同等。

- 頻度のペナルティ/プレゼンス ペナルティ
  - 頻度のペナルティ/プレゼンス ペナルティはどちらも同じ単語を繰り返し使うかどうかを制御するパラメーターです。
  正の値を指定すると、ペナルティが課せられ、より同じ単語を使わない傾向になります。
  頻度のペナルティは**これまでのテキストに出現した頻度に基づいて**ペナルティを課すことで制御します。
  一方、プレゼンス ペナルティは頻度を考慮せず、**これまでのテキストに出現したか否かに基づいて**ペナルティを課すことで制御します。
  それではパラメータを変えることで応答がどう変化するのか、実際に試したいと思います。
  まずは比較対象として、頻度のペナルティ/プレゼンス ペナルティ共に0とした場合の応答です。
![chatGPT17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/0e4e0b48-b3ba-4767-81d7-6c8cd17a48ff.png)
  同じ単語を繰り返し使うかを制御していないので、複数回使用されている単語がいくつか見受けられます。
  特に「開発プロジェクト」という単語は6回も使われています(ソフトウェア開発プロジェクト含む)。<br>
  続いて、頻度のペナルティを２に設定し、先ほどと同じ質問をしてみます。
![chatGPT18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/93917d57-2304-01e1-841b-8b6b0d043f6d.png)
  繰り返し使われている単語は「イテレーション」という単語が2回のみと、確かに繰り返し使われる単語を数も回数も減っています。<br>
  次に、プレゼンス ペナルティを２に設定し、同じ質問をしてみます。
![chatGPT19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/9efc3fc9-9c02-6560-e5ac-975df3aff761.png)
  こちらも繰り返し使われている単語は「顧客」という単語が3回のみと、繰り返し使われる単語を数も回数も減っていることが分かります。<br>
  最後に、頻度のペナルティ/プレゼンス ペナルティ共に２と設定し、同じ質問をしてみます。
![chatGPT20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/a763d0a6-e906-5cf4-7aa1-412d487ce403.png)
  迭代と中国語を使用しているのはさておき、繰り返し使われている単語はなくなりました。

- ベスト
  - AIモデル側がユーザーへの応答前に生成する結果の数を制御するパラメーターです。生成した結果の中から最良の回答をユーザーに返します。

- 応答前のテキスト・応答後のテキスト
  - AIモデルの応答前および応答後に挿入する定型文を設定するパラメータです。
    試しに応答前に「改行+ここから回答」、応答後に「改行+ここまで回答」と設定すると、以下のような回答が得られます。![GPT3_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/a2c17023-50f4-7b83-1230-e13496feafbe.png)

### 3.3.4.Sessionについて(CodeXモデル)
GPT3プレイグラウンド画面にてCodeXモデルを利用する場合、Session領域の下部に利用言語を選択できます。
![CodeX1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/56c5a5c3-c996-47ec-7cce-e3020a0e5ebd.png)

CodeXの場合、自然言語はコメントの形で記述します。
試しに「JavaScriptにて文字列を反転する方法」と入力して「生成」ボタンを押下すると、きちんと自然言語→コードの変換をしてくれました。
![CodeX2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/a442fb58-28fc-1a58-fdd5-22b9850dff5f.png)

他にもコードを記述し、その内容を教えてくださいという形でもきちんと回答してくれました。
![CodeX3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/dd8426c3-f99d-9b4a-eab5-eea5cbc734ca.png)

# 4.Azure OpenAI Serviceの利用方法(Web API)
Web APIを経由したAzure OpenAI Serviceの利用方法について、GPT-3モデルをREST APIで利用するケースを例にまとめます。
## 4.1.サンプルコードの取得
プレイグラウンド画面の「コードの表示」を押下します。
![WebAPI_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/a1b44d9e-a2bb-6478-5be4-0f0c88980f2f.png)

以下のようにサンプルコードが表示されるので、右上のプルダウンリストから「json」を選択し、URLと本文をコピーします。
![WebAPI_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/55986fb5-e1d4-19fb-f27c-e085b3fc2d4d.png)

## 4.2.APIキーの取得
先程のサンプルコード下部にも表示されていましたが、APIキーが必要です。
APIキーは、「Azure OpenAIリソース」画面→「キーとエンドポイント」画面にて取得できます(キーが複数ある場合はどちらでも可)。
![WebAPI_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/185b045a-94a2-02b6-2706-568eeb668ae4.png)


## 4.3.REST API経由での利用
今回は普段から利用している、Visual Studio Codeの拡張機能「[REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client)」を用います。
まずはVisual Studio CodeにREST Clientをインストールします。
![WebAPI_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/e20aeb5a-7b22-cea0-536d-b749d7e2e19b.png)

次に新規ファイルを作成し、「任意のファイル名.http」で保存してください。
そして、サンプルコードにてコピーしたURLと本文、APIキーを元にファイルの内容を以下のフォーマットに修正します。

```
POST サンプルコードにてコピーしたURL
content-type: application/json
api-key: APIキー

サンプルコードにてコピーした本文
```

最後に「prompt」にAIに聞きたいことを入力した上でファイルを保存して、左上に「Send Request」を押下してください。
![WebAPI_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/94290000-3918-a085-1c63-07be4206d763.png)

成功すると、以下のような結果が返ってきます。
![WebAPI_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957144/25da1336-f498-0835-adbf-065631847fb9.png)

# 5.Azure OpenAI Service vs ChatGPT(実際に使ってみた感想)
Azure OpenAI ServiceとChatGPTの両方を利用した私が、ざっくりとAzure OpenAI ServiceとChatGPTを比較してみました。

- セキュリティについて
ユーザーが入力したデータのみに関していうと、ChatGPTもAPI(有料)ならデフォルトで、Webブラウザ利用の場合も申請すればAIの学習に利用されることはありません。
しかし、Azure OpenAI Serviceには[1.1.特徴](#11特徴) でも述べたように、エンタープライズレベルのセキュリティ機能も備わっています。
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トークン)となります。

以上のことから、

<INS>**「個人で気軽にAIを利用するならChatGPT」**<INS>

<INS>**「企業で安心して本格的にAIを利用するならAzure OpenAI Service」**<INS>

といった印象を私は覚えました。

# 6.まとめ
本記事では、Azure OpenAI Serviceの概要から利用方法までをまとめました。
これでセキュリティを担保した上で、様々なAIを活用できると思うので、ぜひ、Azure OpenAI Serviceを試してみてください。