LoginSignup
13
11
記事投稿キャンペーン 「AI、機械学習」

OpenAI GPT-4V の API を使って画像を AI に説明させよう!

Last updated at Posted at 2023-11-06

OpenAI DevDay で多くの発表があった。

その中の一つに、 GPT に画像を読み込ませてなんらかテキストで応えてもらう GPT-4V の API 利用ができるようになったことがある。

ChatGPT ではできてたことだけど、満を持して API で使えるようになった。

早速それを試す。

インプットする画像

猫が食洗機の中に入り込んだ画像ついて説明してもらう。ファイル名は bad_cat.jpg

IMG_1136.jpg

コード

まず openai のライブラリをインストールする。すでにインストールしている人はアップデートしたほうがよいかも。

pip install openai

以下はコード。

ポイントは、画像を base64 でエンコードして、その文字列を送る、ということ。

# %%
import base64

from openai import OpenAI


# 画像をbase64にエンコードする関数
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")


# 画像のパス
image_path = "./bad_cat.jpg"

# 画像をbase64にエンコードする
base64_image = encode_image(image_path)

# OpenAI APIのクライアントを作成する.
# YOUR_API_KEYには、OpenAI の API キーを入力する
client = OpenAI(
    api_key="YOUR_API_KEY",
)

# チャットの応答を生成する
response = client.chat.completions.create(
    # model の名前は gpt-4-vision-preview.
    model="gpt-4-vision-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "何が起きてる?"},  # ここに質問を書く
                {"type": "image_url", "image_url": f"data:image/jpeg;base64,{base64_image}"},  # 画像の指定の仕方がちょい複雑
            ],
        }
    ],
    max_tokens=300,
)

# 応答を表示する
print(response.choices[0])

回答

Choice(finish_reason=None, index=0, message=ChatCompletionMessage(content='写真には食器洗い機の中に入っている猫が映っています。洗うべき食器の代わりに、猫が食器用ラックの中に快適に収まっている様子です。これは家庭において猫が好奇心旺盛で狭い空間に入ることを好む傾向を示す典型的な例です。面白くて可愛らしい瞬間を捉えていますが、もし食器洗い機を使いたい場合は、猫を安全に移動させてから始める必要があります。', role='assistant', function_call=None, tool_calls=None), finish_details={'type': 'stop', 'stop': '<|fim_suffix|>'})

写真には食器洗い機の中に入っている猫が映っています。洗うべき食器の代わりに、猫が食器用ラックの中に快適に収まっている様子です。これは家庭において猫が好奇心旺盛で狭い空間に入ることを好む傾向を示す典型的な例です。面白くて可愛らしい瞬間を捉えていますが、もし食器洗い機を使いたい場合は、猫を安全に移動させてから始める必要があります。

いいね。

参考

13
11
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
13
11