Azure OpenAI Service の GPT-4 まわりの話を個人的にまとめてみる【2024/1/11時点】

## はじめに
記事執筆時点で Azure OpenAI Service の GPT-4関連の API を扱おうとした場合、いくつかの種類があって、個人的に情報を整理したいと思いました。そのようなモチベーションで書いた記事です。

主に扱うのは、GPT-4 の中でも以下の内容です。

- gpt-4 (0613)
- gpt-4 (vision-preview)
- GPT-4 Turbo with Vision Preview

## SwedenCentral で GPT-4 のモデルをデプロイしてみる
GPT-4 の特定の機能は、記事執筆時点では特定のリージョンでのみ利用可能です。

そのような中で本記事では、記事執筆時点で「GPT-4 Turbo with Vision」を扱えるリージョン（※1）の 1つ「SwedenCentral」でモデルのデプロイを試しつつ GPT-4　の情報を見ていきます。
※1 SwitzerlandNorth、 SwedenCentral、 WestUS、 AustraliaEast のいずれか

●クイックスタート: Azure Open AI Service で画像とビデオに GPT-4 Turbo with Vision を使用する - Azure OpenAI | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/gpt-v-quickstart?tabs=image&pivots=programming-language-studio#prerequisites

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/56c53dfa-60ca-e761-9950-e0f026a9437a.png)

### 「SwedenCentral」で選べる GPT-4　のベースモデル・モデルバージョン
SwedenCentral で GPT-4　を選んだ場合、選べる選択肢を確認してみます。

まず、ベースモデルは「gpt-4」「gpt-4-32k」の 2つがが選択できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/123c0238-6d2a-5854-1bef-f1abfec6945c.png)

#### ベースモデル「gpt-4」のモデルバージョン
ベースモデルで「gpt-4」を選択した場合に選べるモデルバージョンを確認してみます。

自動更新以外では、以下のように「1106-Preview」「0613」「vision-preview」を選択できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/91823107-5f83-39e2-457a-002c2903e9e7.png)

#### gpt-4-32k のモデルバージョン
次にベースモデルで「gpt-4-32k」を選択した場合に選べるモデルバージョンを確認してみます。

この場合、自動更新以外では、以下のように「0613」のみ選択できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/c35d4262-a2b0-d81a-7a96-ab9de6795de3.png)

### モデルのデプロイを試してみる GPT-4 のモデル
上記の選択肢がありますが、今回モデルのデプロイを試してみる GPT-4 のモデルを選びます。
具体的には、以下の組み合わせ 3つを選んでみました。

- 試す GPT-4 のモデル
   - モデル名: gpt-4、モデル バージョン: 0613
   - モデル名: gpt-4、モデル バージョン: 1106-Preview
   - モデル名: gpt-4、モデル バージョン: vision-preview

#### デプロイしてみる
実際に 3種類のモデルをデプロイしてみた結果は以下となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/365b8310-4511-b68d-e88d-702a8ca53efa.png)

### 上記の GPT-4 のモデルの補足
上記の 3通りの組み合わせを選んでみましたが、ここで、モデル バージョンが「0613」「1106-Preview」「vision-preview」と 3種類あるので、それについて少し情報を補足します。

#### モデルの違い1
下記のとおり、「0613」と「1106-Preview」「vision-preview」とを比較すると、扱えるトークンの長さやトレーニングデータがいつ時点のものか、という点が異なっています。

●Azure OpenAI Service モデル - Azure OpenAI | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/concepts/models
●Azure OpenAI Service モデル - Azure OpenAI | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/concepts/models#model-summary-table-and-region-availability

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/38ad490d-14aa-2da1-2661-7cc7234097c9.png)

#### モデルの違い2
さらに機能面の違いについて、それが書かれている記事を掲載してみます。

ざっくりと「モデル バージョン: 1106-Preview」についての特長を、いくつかキーワードベースで書き出してみると、以下となるようです。

- 「モデル バージョン: 1106-Preview」
    - JSON mode
    - reproducible outputs
    - parallel function calling

以下で記事を列挙します。

●Models - OpenAI API
　https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/db335053-0142-ac28-d427-025c40e585aa.png)

●New models and developer products announced at DevDay
　https://openai.com/blog/new-models-and-developer-products-announced-at-devday

●GPT-4 Turbo with Vision モデルを使用する方法 - Azure OpenAI Service | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/gpt-with-vision

●Azure OpenAI Service で関数呼び出しを使用する方法 - Azure OpenAI Service | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/function-calling?tabs=python

●Azure OpenAI Serviceで JSON モードを使用する方法 - Azure OpenAI | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/json-mode?tabs=python

●Azure OpenAI Service を使用して再現可能な出力を生成する方法 - Azure OpenAI | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/reproducible-output?tabs=pyton

●Azure OpenAI Service で GPT-4 Turbo with Vision を使う
　https://zenn.dev/microsoft/articles/cd3060cbcf0303

●Azure OpenAIでJSON Modeを使う！
　https://zenn.dev/microsoft/articles/azure-openai-jsom-mode

#### モデルの違い3： 価格
GPT-4 のモデル バージョン「0613」「1106-Preview」「vision-preview」の 3種類について、「SwedenCentral」で利用する場合の価格は以下となっているようです。

●Azure OpenAI Service - 価格 | Microsoft Azure
　https://azure.microsoft.com/ja-jp/pricing/details/cognitive-services/openai-service/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/86a9e6d0-7964-1b7b-2a72-eba89042042b.png)

### サポートされているプログラミング言語
Azure OpenAI Service でサポートされているプログラミング言語の情報を見てみます。

●Azure OpenAI Service でサポートされているプログラミング言語 - Azure AI services | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/supported-languages

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/d9167dc7-bd8c-1c11-84e0-94d102522ab9.png)

上記のとおり、5種類のプログラミング言語がサポートされているようです。

その中で、例えば「JavaScript」「Python」の「ソース コード、Package、例」の各項目のリンクを見てみると、以下のページのリンクになっていました。

#### JavaScript

●azure-sdk-for-js/sdk/openai/openai at main · Azure/azure-sdk-for-js
　https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/openai/openai

●@azure/openai - npm
　https://www.npmjs.com/package/@azure/openai

●azure-sdk-for-js/sdk/openai/openai/samples at main · Azure/azure-sdk-for-js
　https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/openai/openai/samples/

#### Python

●openai/openai-python: The official Python library for the OpenAI API
　https://github.com/openai/openai-python

●openai · PyPI
　https://pypi.org/project/openai/

●Python を使用して OpenAI エンドポイントと Azure OpenAI Service エンドポイントを切り替える方法 - Azure OpenAI Service | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/switching-endpoints

## おわりに
Azure OpenAI Service の GPT-4 についての情報を見ていこうとした場合に、個人的にごちゃごちゃしていた感じがしたので、それを自分の中で整理する意味で記事に書きだしてみました。

この後は、実際の API経由でモデルを使ったお試しをやっていこうと思います。

### GPｔ−4 以外で試してみたいこと
今回扱った GPｔ−4 以外で、Azure OpenAI Service の以下も試していきたいと思っています。

#### DALL-E-3 による画像生成（記事執筆時点では、リージョン SwedenCentral　のみ）
●クイックスタート: Azure OpenAI Service を使用して画像を生成する - Azure OpenAI | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/dall-e-quickstart?tabs=dalle3%2Ccommand-line&pivots=programming-language-studio

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/99a6b61f-12eb-86b3-3556-d511f2cf4f2c.png)

#### Whisper による音声のテキスト化（記事執筆時点では、リージョン 米国中北部・西ヨーロッパ のみ）

●Azure OpenAI Service を使った音声テキスト変換 - Azure OpenAI | Microsoft Learn
　https://learn.microsoft.com/ja-jp/azure/ai-services/openai/whisper-quickstart?tabs=command-line&pivots=rest-api

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/aeac96b0-249d-e39f-6ad3-4e5f64aee570.png)