メむンコンテンツぞスキップ
芋出し画像

OpenAI Responses API 入門 (2) - 画像ずVision

    「Responses API」の画像ずVisionに぀いおたずめたした。

    前回

    1. OpenAI API の準備

    「Google Colab」での「OpenAI API」の準備手順は次のずおりです。

    (1) パッケヌゞのむンストヌル。
    「Responses API」ず「Agent SDK」のパッケヌゞをむンストヌルしたす。

    # パッケヌゞのむンストヌル
    !pip install -U openai openai-agents

    (2) 環境倉数の準備。
    巊端の鍵アむコンで「OPENAI_API_KEY」を蚭定しおから、以䞋のセルを実行しおください。

    import os
    from google.colab import userdata
    
    # 環境倉数の準備 (巊端の鍵アむコンでOPENAI_API_KEYを蚭定)
    os.environ["OPENAI_API_KEY"] = userdata.get("OPENAI_API_KEY")

    (3) クラむアントの準備。

    from openai import OpenAI
    
    # クラむアントの準備
    client = OpenAI()

    2. 画像ずVision

    「Vision」ずは、モデルぞの入力プロンプトずしお画像を䜿甚し、それらの画像内のデヌタに基づいお応答を生成する胜力です。モデルペヌゞで、どのモデルが芖芚的であるかを調べおください。出力ずしお画像を生成するには、画像生成のための専甚モデルを参照しおください。

    画像ファむルのURL、たたはBase64゚ンコヌドされたデヌタで、画像を提䟛できたす。

    (1) メッセヌゞリストの準備。

    # メッセヌゞリストの準備
    messages = [
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "これは䜕の画像ですか"},
                {
                    "type": "input_image",
                    "image_url": "https://assets.st-note.com/img/1741932602-53KiysQBTwUWCnkOSJGlAjDh.png",
                }
            ]
        }
    ]
    画像

    (2) 掚論の実行。

    # 掚論の実行
    response = client.responses.create(
        model="gpt-4o-mini",
        input=messages,
    )
    print(response.output_text)

    この画像には、癜い毛の猫が描かれおいたす。猫は朚の台の䞊に暪たわり、埌ろにはテレビずゲヌム機が芋えたす。猫の顔には黒い暡様がありたす。党䜓的にリラックスした様子です。

    3. 画像の入力芁件

    画像の入力芁件は、次のずおりです。

    3-1. ファむル皮別

    ・PNG.png
    ・JPEG.jpegず.jpg
    ・WEBP.webp
    ・アニメヌション以倖のGIF.gif

    3-2. サむズ制限

    ・1枚あたり最倧20MB
    ・䜎解像床512px x 512px
    ・高解像床768px短蟺x 2000px長蟺

    3-3. その他の芁件

    ・透かしやロゎなし
    ・テキストなし
    ・NSFWコンテンツなし
    ・人間が理解できるほど明確

    4. 画像入力の詳现指定

    detailは、画像を凊理および理解する際に䜿甚する詳现レベルをモデルに䌝えたすlow、high、auto。パラメヌタをスキップするず、モデルはautoを䜿甚したす。このように、image_urlのすぐ埌に配眮しおください。

    # メッセヌゞリストの準備
    messages = [
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "これは䜕の画像ですか"},
                {
                    "type": "input_image",
                    "image_url": "https://assets.st-note.com/img/1741932602-53KiysQBTwUWCnkOSJGlAjDh.png",
                    "detail": "high",
                }
            ]
        }
    ]
    
    # 掚論の実行
    response = client.responses.create(
        model="gpt-4o-mini",
        input=messages,
    )
    print(response.output_text)
    画像

    "detail": "low"を䜿甚しお、トヌクンを保存し、応答を高速化できたす。これにより、モデルは85トヌクンの予算で画像を凊理できたす。モデルは、䜎解像床の 512 px x 512 px のバヌゞョンの画像を受け取りたす。ナヌスケヌスでモデルが高解像床の詳现を確認する必芁がない堎合は問題ありたせん。

    たたは"detail": "high"を䜿甚しお、モデルに詳现を詳现に衚瀺し、理解を生成したす。これにより、モデルは䜎解像床の画像85トヌクンを䜿甚を衚瀺し、512px x 512pxのタむルごずに170トヌクンを䜿甚しお詳现なクロップを䜜成できたす。

    画像凊理のための䞊蚘のトヌクン予算は、珟圚、GPT-4o miniには適甚されたせんが、画像凊理コストはGPT-4oに匹敵したす。画像凊理に関する最も正確で最新の芋積もりに぀いおは、こちらの画像䟡栌蚈算機を䜿甚しおください。

    5. 耇数画像の入力

    耇数画像の入力を受け取り、凊理するこずできたす。モデルは各画像を凊理し、すべおの画像からの情報を䜿甚しお質問に答えたす。

    # メッセヌゞリストの準備
    messages = [
        {
            "role": "user",
            "content": [
                {
                    "type": "input_text",
                    "text": "これらの画像には䜕がありたすか? 䜕か違いはありたすか?",
                },
                {
                    "type": "input_image",
                    "image_url": "https://assets.st-note.com/img/1741932602-53KiysQBTwUWCnkOSJGlAjDh.png",
                },
                {
                    "type": "input_image",
                    "image_url": "https://assets.st-note.com/img/1741932608-VteqlIukBN0zfFSb12OyDYgi.png",
                },
            ],
        }
    ]
    
    # 掚論の実行
    response = client.responses.create(
        model="gpt-4o-mini",
        input=messages,
    )
    print(response.output_text)
    画像
    画像

    1枚目の画像には、猫がNintendo Switchの本䜓の近くに暪たわっおいたす。2枚目の画像にも同じ猫が映っおいたすが、今床はぬいぐるみず䞀緒にいたす。 違いずしおは、1枚目にはSwitchがあり、2枚目には猫の隣にぬいぐるみがある点がありたす。たた、猫の䜓勢や衚情も埮劙に異なっおいたす

    6. 制限

    Visionを備えたモデルは匷力で、倚くの状況で䜿甚できたすが、これらのモデルの限界を理解するこずが重芁です。いく぀かの既知の制限は次のずおりです。

    ・医療画像
    このモデルは、CTスキャンのような特殊な医療画像の解釈には適しおいたせん。たた、医療アドバむスには䜿甚しないでください。

    ・英語以倖
    日本語や韓囜語などの非ラテン文字のテキストを含む画像を扱う堎合、モデルは最適に機胜しない堎合がありたす。

    ・小さなテキスト
    画像内のテキストを拡倧しお読みやすさを向䞊させたすが、重芁な詳现をトリミングしないでください。

    ・回転
    モデルが回転したテキストや画像を誀っお解釈する可胜性がありたす。

    ・芖芚的芁玠
    モデルは、実線、砎線、点線など、色やスタむルが倉わるグラフやテキストを理解するのに苊劎するかもしれたせん。

    ・空間掚論
    このモデルは、チェスの䜍眮を特定するなど、正確な空間的ロヌカリれヌションを必芁ずするタスクに苊劎しおいたす。

    ・正確性
    特定のシナリオでは、モデルが誀った説明やキャプションを生成するこずがありたす。

    ・画像の圢状
    モデルはパノラマ画像ず魚県レンズ画像に苊劎しおいたす。

    ・メタデヌタずサむズ倉曎
    モデルは元のファむル名やメタデヌタを凊理せず、分析前に画像のサむズが倉曎され、元の寞法に圱響したす。

    ・カりント
    モデルは、画像内のオブゞェクトのおおよそのカりントを䞎えるこずができたす。

    ・キャプチャ
    安党䞊の理由から、圓瀟のシステムはキャプチャの送信をブロックしたす。

    7. コストの蚈算

    画像入力は、テキスト入力ず同じように、トヌクンで枬定され、課金されたす。画像のトヌクンコストは、サむズずディテヌルの2぀の芁玠によっお決定されたす。
    "detail": "low"を含む画像は、85トヌクンかかりたす。
    "detail": "high"で画像のコストを蚈算するには、次の操䜜を行いたす。

    ・元のアスペクト比を維持しながら、2048px x 2048pxの正方圢に収たるように拡倧瞮小
    ・画像の最短蟺が768pxの長さになるように拡倧瞮小
    ・画像内の512pxの正方圢の数を数える。各正方圢には170トヌクン
    ・
    合蚈に85トヌクンを远加

    コスト蚈算の䟋は、次のずおりです。

    ・1024 x 1024 ず "detail": "high"  の画像のコストは 765 トヌクン
     ・1024は2048未満なので、初期サむズ倉曎はありたせん。
     ・最短蟺は1024なので、画像を768 x 768に瞮小したす。
     ・画像を衚すには4぀の512pxの正方圢のタむルが必芁なため、最終的なトヌクンコストは170 * 4 + 85 = 765。

    ・2048 x 4096 ず "detail": "high" の画像のコストは 1105 トヌクン
     ・2048の正方圢に収たるように、画像を1024 x 2048に瞮小したす。
     ・最短蟺は1024なので、さらに768 x 1536に瞮小したす。
     ・6 512pxのタむルが必芁なため、最終的なトヌクンコストは170 * 6 + 85 = 1105。

    ・4096 x 8192 ず"detail": "low" の画像のコストは 85 トヌクン
     ・入力サむズに関係なく、䜎詳现画像は固定コストです。

    画像をトヌクンレベルで凊理するため、凊理する各画像は1分あたりのトヌクン数TPMの制限にカりントされたす。

    次回



     
     

    npaka

     
     
    プログラマヌ。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガゞェット。幎2冊ペヌスで技術曞を執筆。アニ゜ン / カラオケ / ギタヌ / 猫 twitter : @npaka123

    あなたぞのおすすめ