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
が発表されていますが、こちらのモデルは年末までのプレビューが予告されています。
既存のモデルとの違いとしては以下の点があげられます。
- トレーニングデータ(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の詳細は以下の記事をご参照ください。
デプロイ方法
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ビジネスがより広まっていくように思います。
今後も最新情報を追っていきたいと思いますので、よろしくお願いいたします。