25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GPT4-V API 使い方 / OpenAI GPT-4V API / GPT-4V API

Last updated at Posted at 2023-11-07

OpenAI GPT-4VのAPIが利用可能になったとのことなので早速使ってみた。

2023/11/10 : Google colabを利用した動作方法を追記しました
2023/11/10 : requestsのinstallをしていない場合のエラー対応について追記しました
2023/11/07 : 最初の記事を投稿しました

入力画像の準備

今回は、ChatGPTのDALLE-3で作成した以下のねこの画像を使用した。
ファイル名: cat.png

ソースコード

ソースコード等は、GitHubにあげました。
フォルダ構成等はこれを参考にしてください!!

コード全容

import argparse

import base64
import requests

from settings.setting import API_KEY


def parse_args():
    parser = argparse.ArgumentParser()

    parser.add_argument('-i', '--image', type=str,)
    parser.add_argument('-p', '--prompt', type=str)
    return parser.parse_args()

# Function to encode the image
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')
    

def main(args: argparse.Namespace):
    # Getting the base64 string
    base64_image = encode_image(args.image)

    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {API_KEY}"
    }

    payload = {
        "model": "gpt-4-vision-preview",
        "messages": [
          {
            "role": "user",
            "content": [
              {
                "type": "text",
                "text": args.prompt,
              },
              {
                "type": "image_url",
                "image_url": {
                  "url": f"data:image/jpeg;base64,{base64_image}"
                }
              }
            ]
          }
        ],
        "max_tokens": 300
    }

    response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

    # print(response.json())
    print("*"*50)
    print(response['choices'][0]['message']['content'])
    print("*"*50)

if __name__ == "__main__":
    main(parse_args())

実行方法

python run.py -i Images/cat.png -p "What's in this image?"

出力

The image features a fluffy cat comfortably sleeping, nestled among what appears to be cozy knit blankets or sweaters. The setting suggests a tranquil and warm environment, possibly with sunlight filtering in to add to the peaceful ambiance. The overall composition evokes a sense of comfort and serenity.

The image features a fluffy cat comfortably sleeping, nestled among what appears to be cozy knit blankets or sweaters. The setting suggests a tranquil and warm environment, possibly with sunlight filtering in to add to the peaceful ambiance. The overall composition evokes a sense of comfort and serenity.

(和訳)

ふわふわの猫が、肌触りのよさそうなニットの毛布やセーターに囲まれて気持ちよさそうに眠っている。静かで暖かな環境であることがうかがえ、陽の光が差し込んで穏やかな雰囲気が増しているのかもしれない。全体的な構図は、安らぎと静けさを感じさせる。

ふわふわの猫が、肌触りのよさそうなニットの毛布やセーターに囲まれて気持ちよさそうに眠っている。静かで暖かな環境であることがうかがえ、陽の光が差し込んで穏やかな雰囲気が増しているのかもしれない。全体的な構図は、安らぎと静けさを感じさせる。

実行方法詳細

(後でGitHubを更新します。。。)
(1) レポジトリのclone

git clone https://github.com/taku-mikan/GPT

(2) 好きな画像をImages/ に移す (以下はcat.pngとして進める)

(3) settings/setting.pyのAPI_KEYを自分のAPIに変更する

API_KEY = "your_api_key"

の"your_api_key"の部分を自分のapiに置き換える

(4) 実行
-i の後に画像へのpath, -pの後に好きなプロンプトを入力し、実行

python run.py -i Images/cat.png -p "What's in this image?"

エラー対応 (1)

APIアクセスに関するサイトによると、(現在は?)1ドル以上の支払いをした人のみが使用可能である。とのこと。
これまでAPIをあまり使ったことない人の場合は、以下のようなエラーが生じる可能性がある。

{'error': {'message': 'The model `gpt-4-vision-preview` does not exist or you do not have access to it. Learn more: https://help.openai.com/en/articles/7102672-how-can-i-access-gpt-4.', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}

この場合は、APIアクセスに記載の通り、prepaid請求(使用料の事前購入)を行えば使用可能になるとのこと。

prepaid請求に関する説明はこちら
上記記事の手順を簡単に以下に示す。

  1. アカウント設定の請求概要に移動
    以下のようなページが出てくる
    prepaid_1.png

  2. 支払いを行う

    1. 画像中の緑色のボタン(Start Payment plan)をクリック
    2. 購入するクレジットの量を確定する。現在は、最低5ドル、最高50ドルまで選択可能
      1. 5ドルでもOK
    3. 購入ドルを確認し、購入

購入後、少し時間が経った後(請求のメールが送られてくるくらい)再度実行するとエラーを生じることなく動かすことができた...!!

※ クレジットは、支払いが生じた際、クレジットが残っていればクレジットから優先に使われるらしい。また、1年後に消えてしまい、返金されない点に注意が必要とのこと。詳細は確認してください。

エラー対応 (2)

requestsというパッケージをpip installする必要があります。
したがって、実行環境によっては以下のエラーが生じる可能性があります。

Traceback (most recent call last):
  File "run.py", line 4, in <module>
    import requests
ModuleNotFoundError: No module named 'requests

このエラーが生じた場合は、以下を実行してみてください。

pip install requests

これで解消すると思います!!

Google Colabを利用した使い方

前提

API KEYが含まれるため、もしかしたらめんどくさいやり方を書いてるかもしれませんが、
ご容赦ください....。

動かし方

(1) ファイルのダウンロード
GitHubからGPT_4V.ipynbをDownloadしてください(写真右上のボタンからDownload可能です)

!

(2) 自身のgoogle driveにDownloadしたファイルをuploadする
自身のGoogle DriveにDownloadしたファイルをアップロードする。ドライブを開いた後、ドラッグ&ドロップでアップロードできます!!

!

(3) uploadしたGPT_4V.ipynbをクリックして開く
自分の環境だと自動でcolabが開かれるのですが、人によっては、「colabで開く」が表示されたり、 そもそもcolabが表示されなくて変な記号の羅列が出るかもしれません。
「colabで開く」が出た方はそのまま開いてもらえれば大丈夫です。
変な記号の羅列が出た方は、colabをinstallする必要があります。
(以下開けたと仮定して進めます)

(4) colabの指示通り上から実行する
途中でAPI KEYを設定する部分があり、これを設定しないとエラーが出るため注意してください。

colab.png

以上!!とりあえず公開されたGPT-4Vに関して使ってみたという内容でした!!

何か間違い等あればお気軽に教えていただけると幸いです😭

25
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?