Google Colab で OpenAI API の Vision を試す
「Google Colab」で「OpenAI API」の「Vision」を試したので、まとめました。
前回
1. Vision
「GPT-4 with Vision」(GPT-4V)は、画像について質問応答を行うAPIです。
現在、「gpt-4-vision-preview」と「Chat Completions API」を介してのみ、「Vision」を利用できます。「Assistant API」はサポートしていません。
2. セットアップ
Colabでのセットアップ手順は、次のとおりです。
(1) パッケージのインストール。
# パッケージのインストール
!pip install openai
(2) 環境変数の準備。
以下のコードの <OpenAI_APIキー> にはOpenAIのサイトで取得できるAPIキーを指定します。(有料)
import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIキー>"
(3) クライアントの準備。
「クライアント」は「OpenAI API」にアクセスするインタフェースになります。
from openai import OpenAI
# クライアントの準備
client = OpenAI()
3. 画像の質問応答
対象画像は、「画像URL」と「画像ファイル」で指定できます。
3-1. 画像URL
(1) 画像の質問応答。
指示は「これは何の画像ですか?」としました。
画像URLは以下の画像を示しています。
# メッセージリストの準備
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "これは何の画像ですか?"},
{
"type": "image_url",
"image_url": {
"url": "https://img.youtube.com/vi/nomJbjuQXAY/maxresdefault.jpg",
"detail": "low",
}
},
],
}
]
# 画像の質問応答
response = client.chat.completions.create(
model="gpt-4-vision-preview",
messages=messages,
max_tokens=300,
)
print(response)
3-2. 画像ファイル
(1) 画像の準備。
Colabの左端のフォルダアイコンでファイル一覧を表示し、以下の画像をアップロード。
・cat.jpg
(2) 画像をBase64で読み込み。
import base64
# 画像をbase64で読み込む関数
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# 画像をbase64で読み込む
base64_image = encode_image("cat.jpg")
(3) 画像の質問応答。
指示は「このネコの気持ちを推測してセリフを言ってください」としました。
画像1枚指定していますが、複数指定することもできます。
# メッセージリストの準備
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "このネコの気持ちを推測してセリフを言ってください"},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}",
"detail": "low",
}
},
],
}
]
# 画像の質問応答
response = client.chat.completions.create(
model="gpt-4-vision-preview",
messages=messages,
max_tokens=300,
)
print(response.choices[0].message.content)
4. 画像の質問応答のTips
4-1. 画像の理解度
オプション「detail」で「low」または「high」を指定できます。
4-2. 画像の管理
「Chat Completion API」は、「Assistant API」とは異なり、ステートフルではありません。 つまり、モデルに渡すメッセージ (画像を含む) を自分で管理する必要があります。同じ画像をモデルに複数回渡す場合は、API にリクエストを行うたびに画像を渡す必要があります。
長時間実行される会話の場合は、base64 ではなく URLで画像を渡すことをお勧めします。モデルのレイテンシは、事前に画像を予想される最大サイズよりも小さくすることで改善することもできます。低解像度モードの場合、512x512px が想定されます。高静止モードの場合、短辺 768px 未満、長辺は 2,000px 未満である必要があります。
画像はモデルによって処理された後、OpenAI サーバーから削除され、保持されません。 モデルの学習に「OpenAI API」経由でアップロードされたデータは使用しません。
4-3. 制限事項
「GPT-4 with Vision」は強力で、多くの状況で使用できますが、モデルの制限を理解することが重要です。
4-4. FAQ
次回
この記事が気に入ったらサポートをしてみませんか?