GPT-4 Turbo: Azure OpenAI Service 新モデルの概要と使用方法

OpenAI DevDayで公開された新モデルのうち、Azure OpenAI Service上でGPT-4 Turboなどが使用可能になりました。

本記事ではGPT-4 Turboなどの概要と使用方法について解説します。

概要

11月7日のOpenAI DevDayでGPT-4 Turboやvisionモデル、DALL・E 3やWhisper v3などの最新モデルが発表されました。

11月18日より、Azure OpenAI Service上でGPT-4 Turboなどの一部モデルが利用可能になったため、本記事ではAzure OpenAIベースで最新のChatGPTモデルについて解説します。

ChatGPT 1106モデル概要

今回Azure OpenAI ServiceでリリースされたのはGPT-4 Turbo (1106-preview)GPT-3.5 Turbo 1106の2つのモデルです。

OpenAI DevDayでは他にも画像を入力できるマルチモーダルのvision-previewが発表されていますが、こちらのモデルは年末までのプレビューが予告されています。

blogs.microsoft.com

既存のモデルとの違いとしては以下の点があげられます。

  • トレーニングデータ(GPT-4 Turboのみ)
  • 入力可能なトークン数
  • 料金体系
  • クォーター制限

APIの重要な変更については後半で解説します。

トレーニングデータ

今回リリースされたGPT-4 Turboは2023年4月までのデータを使用して作られているため、2021年9月以降の情報を回答する可能性があります。

もう一方のGPT-3.5 Turbo 1106モデルは、これまでと同じく2021年9月までのデータによって作成されています。

入力可能なトークン数

入力可能なトークン数は次の通りです。

Model トークン数
GPT-4 Turbo (1106-preview) Input:128,000
Output:4,096
GPT-4 8K 8,192
GPT-4 32K 32,768
Model トークン数
GPT-3.5 Turbo 1106 Input:16,385
Output:4,096
GPT-3.5-Turbo 4K 4,096
GPT-3.5-Turbo 16K 16,384

1106モデルは累計ではなく入力・出力トークン数がそれぞれ決まっています。いずれのモデルも既存のモデルより入力できるトークン数が多くなっています。

特にGPT-4 Turboは日本語に換算して約10万字、文庫本1冊程度の文章を一度に入力することができるようになりました。

ただしAzure OpenAI Studio上で使用する場合、現状では従来のGPT-4モデルと同じ8,192tokenしか入力できませんでした。

料金体系

APIの料金は次の通りで、いずれも既存のモデルより低いコストで利用できます。

Model Input (1000 token) Output (1000 token)
GPT-4 Turbo (1106-preview) $0.01 $0.03
GPT-4 8K $0.03 $0.06
GPT-4 32K $0.06 $0.12
Model Input (1000 token) Output (1000 token)
GPT-3.5 Turbo 1106 $0.001 $0.002
GPT-3.5-Turbo 4K $0.0015 $0.002
GPT-3.5-Turbo 16K $0.003 $0.004

クォーター制限

2023年11月21日現在、GPT-4 Turbo 1106モデルについては使用可能なリージョンが限られているのみではなく、上限のクォータ数が異なっています。

GPT-4 Turbo (1106-preview) リージョン クォーター上限
Australia East, Canada East, East US 2, France Central, UK South, West US 80K
South India, Norway East, Sweden Central 150K

その他GPT-4 Turboの詳細は以下の記事をご参照ください。

techcommunity.microsoft.com

デプロイ方法

Azure OpenAI Studio上ではGPT-4 Turboという選択肢はなく、GPT-4を選択してモデルのバージョンを1106に選択することでGPT-4 Turboをデプロイします。

デプロイが完了すると次のような表記になります。モデル名のところでgpt-4-turbo表記が使用されないため、任意で決定するデプロイ名で分かりやすいようにturboの表記を追加しています。

クォーター数については、GPT-4とGPT-4 Turboで分けて管理されるようです。

APIの重要な変更

今回の記事では以下2点をご紹介します。

  • JSON Mode
  • seed値による出力固定

1106モデルが利用可能なリージョンは制限されているため、今回はAustralia Eastリージョンで検証を行いました。

最新のopenaiライブラリについて

1106モデルのアップデートとは別ですが、Pythonのopenaiライブラリに変更がありました。今回の記事では最新の1.3.3バージョンを使用します。

pip install openai==1.3.3

これまでのJBS TechBlogの記事で使用した0.28バージョンと関数の使用方法が大きく変更されました。1.3でのリクエストは次のようになります。

from openai import AzureOpenAI

client = AzureOpenAI(
    api_key=API_KEY,
    azure_endpoint=RESOURCE_ENDPOINT,
    api_version="2023-09-01-preview"
)
model_gpt = "gpt-4-turbo"

response = client.chat.completions.create(
    model=model_gpt,
    messages=messages
)
print(response.choices[0].message)

JSON Mode

もともとfunction callingの機能が実装されていましたが、リクエストにresponse_format={"type":"json_object"}を使用し、かつメッセージ内に「JSON」の文字列を含ませることで、レスポンスのフォーマットをJSON形式に強制することができるようになります。

response = client.chat.completions.create(
  model=model_gpt,
  messages=[
    {"role": "system", "content":"あなたは親切なアシスタントです。"},
    {"role": "user", "content": "日本ビジネスシステムズの製品をJSON形式で3つ答えなさい。"} 
  ],
  response_format={"type":"json_object"}
)

レスポンスは次のようになりました。

(※以下の内容はAIが生成した内容であり、実際のJBSの事業内容とは異なります)

{
  "製品1": {
    "名前": "データウェアハウス・データマート構築サービス",
    "概要": "企業の膨大なデータを統合し、有効活用するためのシステム構築を支援。",
    "特徴": ["データ統合", "情報分析", "ユーザーニーズに合わせたカスタマイズ"]
  },
  "製品2": {
    "名前": "クラウドインテグレーションサービス",
    "概要": "クラウド環境への移行を支援し、シームレスなクラウドシステムを実現。",
    "特徴": ["クラウド移行", "システム統合", "コスト削減"]
  },
  "製品3": {
    "名前": "セキュリティソリューション",
    "概要": "企業の情報資産を守るための総合的なセキュリティ対策を提供。",
    "特徴": ["情報漏洩防止", "ウイルス対策", "アクセス管理"]
  }
}

seed値

今回のアップデートのモデルからseed値を指定することができるようになりました。

注意点として、この機能は必ず出力が固定できるというものではなく、あくまでモデルが同じ出力を出すように努力するものです。常に同じ値を返さないという点はOpenAI社のリファレンスでも明言されています。

messages=[
    {"role": "system", "content":"あなたは親切なAIアシスタントです。"},
    {"role": "assistant", "content": "始めまして!本日はよろしくお願いいたします。"},
    {"role": "user", "content": "あなたの名前は?"},
]

response1 = client.chat.completions.create(
    model=model_gpt,
    messages=messages,
    seed=123
)
response2 = client.chat.completions.create(
    model=model_gpt,
    messages=messages,
    seed=123
)
response3 = client.chat.completions.create(
    model=model_gpt,
    messages=messages,
    seed=123
)
response4 = client.chat.completions.create(
    model=model_gpt,
    messages=messages
)

以下が各種レスポンスの例になります。

seed値を合わせた1~3番目は回答が一致するケースが多かったですが、以下のように一致しない場合もありました。シードを指定しない4番目についてはいずれのケースでも回答が一致しませんでした。

私はAIアシスタントであり、特定の名前はありません。ただし、親しみを込めて何か名前を付けていただいても構いません。どうぞお好きなようにお呼びください。何かお手伝いできることはありますか?

私はAIアシスタントであり、特定の名前はありません。ただし、親しみを込めて何か名前を付けていただいても構いません。どうぞお好きなようにお呼びください。何かお手伝いできることはありますか?

私はプログラムされたAIで、特定の名前はありませんが、必要であれば「AIアシスタント」と呼んでいただければ幸いです。どのようにお手伝いしましょうか?

私はAIアシスタントで、特定の名前はありませんが、簡単に呼びやすい名前を付けていただいても構いませんよ!何かお手伝いできることはありますか?

おわりに

Azure OpenAI Serviceの最新モデルであるGPT-4 Turboをはじめとする1106モデルは、AIの応用範囲を広げてくれるものであると感じました。

他にもDALL·E 3の発表、Azure Cognitive SearchやAzure AI Speech上でのOpenAIモデルの活用など幅が広まっており、今後はAzureを使用したAIビジネスがより広まっていくように思います。

今後も最新情報を追っていきたいと思いますので、よろしくお願いいたします。

執筆担当者プロフィール
西野 佑基

西野 佑基(日本ビジネスシステムズ株式会社)

機械学習系ソリューション開発、業務Webアプリ開発、開発環境自動化などを担当。

担当記事一覧