Azure OpenAI ChatGPTのAPIをPythonから使用してみた - GPT-4モデル版

本記事では2023年4月よりAzure OpenAIで利用可能になったGPT-4についての概要と、申請から実際に使用するまでの手順を解説します。

概要

以前の記事でAzure OpenAI APIを用いてChatGPT(GPT3.5-Turbo)を使用する方法について紹介しました。
blog.jbs.co.jp

Azure OpenAIでは4月からGPT-4が使用できるようになっています。
利用申請の方法から、実際にAPIを使用してチャットを行うまでの手順をご紹介します。

本記事は2023年4月時点の情報で書かれています。
最新サービスであるため、情報が他のサービスよりも高い頻度でアップデートされる点にご注意ください。

Azure OpenAIにおけるGPT-4

Azure OpenAIでは以下の2種類のモデルがデプロイできます。

  • gpt-4 (8k)
  • gpt-4-32k

それぞれ送信できるトークン(文字数)上限に違いがあり、前者が8000トークン、後者が32000トークンまでの処理が可能です。

learn.microsoft.com

価格については以下の通りです。 同じChatGPTモデルのGPT-3.5 Turboが、プロンプト・完了いずれも1000トークンあたり約0.27円です。通常のGPT-4でもおおむね15~30倍程度の料金が発生することが分かります。

モデル名 プロンプト (1,000 トークンあたり) 完了 (1,000 トークンあたり)
gpt-4 ¥3.976 ¥7.951
gpt-4-32k ¥7.951 ¥15.901

azure.microsoft.com

手順

GPT-4 利用申請

前提条件としてAzure OpenAIの利用申請を行い、リソースを作成しておく必要があります。

Azure OpenAI自体の利用申請については、以下のDocsをご参照ください。
learn.microsoft.com

GPT-4を使うためには、Azure OpenAIの申請とは別に利用申請が必要になります。
以下のリンクより利用申請を行います。
https://aka.ms/oai/get-gpt4

デプロイ済みAzure OpenAIのサブスクリプションIDや組織名などが必要になります。
アプリケーションIDについては、Azure OpenAI承認時のメールに記載されていなければ入力しなくても大丈夫です。

Azure OpenAIの申請については数日程度で利用できるケースも増えてきましたが、GPT-4については2023年4月時点で承認までかなり時間がかかるようです。
自分の場合は申請から10日ほどで承認されましたが、社内では20日過ぎて承認されていないケースもありました。

GPT-4 デプロイ

申請が完了すると、Cognitive Services Getting Supportチームから承認のメールが届きます。
この状態になればOpenAI Studioの一覧からGPT-4系モデルがデプロイできるようになります。

デプロイについてはGPT-3.5モデルやその他モデルの手順と変わりないので、詳細は割愛します。

デプロイ後は、Azure OpenAI Studio上からGPT-4でチャットを行える状態になります。

パッケージの導入

PythonからGPT-4を使用するためにはOpenAIのパッケージを最新版にしておく必要があります。
以下のコマンドで、現時点で最新版のパッケージに更新します。

pip install openai==0.27.4

リクエストの送信

プログラム側でapiの詳細情報を設定します。
注意点としては、api_versionのコードを最新の状態にしておく必要があります。

import openai
openai.api_type = "azure"
openai.api_key = API_KEY
openai.api_base = RESOURCE_ENDPOINT
openai.api_version = "2023-03-15-preview"

前回の記事ではCompletionメソッドを使用しましたが、GPT-4ではCompletionメソッドでリクエストを送信することができません。
ChatCompletionメソッドを使用します。

ChatCompletionメソッドでは、プロンプトをmessagesに定義します。
前回はim_startやim_endを1つのstring型文字列に配置しましたが、本メソッドでは代わりにlist内にロール・コンテンツを定義したdictを配置します。
ロールは同じくsystem, user, assistantの3種類で構成します。

(chat1,chat2にはユーザーの文章を、res1にはchat1に対するGPT-4からのレスポンスの文章が入る想定でサンプルプログラムを書いています)

system_prompt = "あなたは優秀なAIアシスタントです。"
chat1 = ""
res1   = ""
chat2 = ""

response = openai.ChatCompletion.create(
  engine="gpt-4-model",
    messages=[
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": chat1},
        {"role": "assistant", "content": res1},
        {"role": "user", "content": chat2},        
    ],
    max_tokens=500,
    temperature=0
)

おわりに

非常に高い精度を持つ最新技術のGPT-4を、Azureベースで利用できるようになりました。
チャット系に限らず、文章要約などの他のタスクや埋め込みモデルの活用など、さまざまなビジネスの発展が今後起こることが想定されます。
最新情報がアップデートされ次第、またこちらのBlogで配信していきますので、どうぞよろしくお願いいたします。

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

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

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

担当記事一覧