メインコンテンツへスキップ
見出し画像

OpenAI Responses API 入門 (7) - ファイル入力

    「Responses API」の「ファイル入力」ついてまとめました。

    ・File inputs

    前回

    1. ファイル入力

    Vision機能を備えたOpenAIモデルは、PDFファイルを入力することもできます。PDFは、Base64エンコード、またはAPIやダッシュボードを介して /v1/files エンドポイントにアップロード後に取得できるファイルIDを介して提供できます。

    2. 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()

    3. ファイルIDによるファイル入力

    (1) ファイルをColabにアップロード。
    今回は、「OpenAI GPT-4.5  System Card」のPDFをアップロードしました。

    画像

    (2) ファイルをOpenAIのサーバにアップロード。

    # ファイルをOpenAIのサーバにアップロード
    file = client.files.create(
        file=open("gpt-4-5-system-card-2272025.pdf", "rb"),
        purpose="user_data"
    )
    print(file.id)

    file-EpFBX5vq9kSq2BPH9qLNpC

    アップロードしたファイルはDashboardのStorageでも確認できます。

    画像

    (3) メッセージリストの準備。

    # メッセージリストの準備
    messages =[
        {
            "role": "user",
            "content": [
                {
                    "type": "input_file",
                    "file_id": file.id,
                },
                {
                    "type": "input_text",
                    "text": "このPDFの内容を要約してください。",
                },
            ]
        }
    ]

    (4) 推論の実行。

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

    このPDFは、OpenAIのGPT-4.5モデルのシステムカードです。以下が主なポイントです。

    1. **概要**:
    - GPT-4.5は、GPT-4の成果を基にスケールアップされており、より幅広い目的に対応できるよう開発されています。
    - モデルのトレーニングには、新しいアラインメント技術やRLHF(人間のフィードバックからの強化学習)が使用されています。
    - 安全性の向上と誤情報の減少に焦点が当てられています。

    2. **安全性評価**:
    - モデルは、危険性評価、脱出(jailbreak)耐性、幻覚(hallucination)評価、公平性とバイアス評価が実施されています。
    - GPT-4.5は多くの評価で、以前のモデルと同等または優れた性能を示していますが、一部の評価では改善が必要です。

    3. **脅威評価**:
    - 核および放射性物質のリスク、化学および生物学的脅威、説得能力に関する評価が行われています。
    - 一部のリスク領域では、中程度のリスクと評価されています。

    4. **多言語性能**:
    - 人間の翻訳者を使用したテストセットで、GPT-4.5は多言語対応能力が向上しています。

    5. **今後の取り組み**:
    - 模型のさらなる安全性や性能向上について、継続的に取り組む姿勢を強調しています。

    GPT-4.5は、能力と安全性での進歩を示していますが、一部のリスクに対する注意が必要とされています。

    4. Base64エンコードによるファイル入力

    (1) ファイルをBase64で読み込み。

    import base64
    
    # ファイルをBase64で読み込み
    with open("gpt-4-5-system-card-2272025.pdf", "rb") as f:
        data = f.read()
    base64_string = base64.b64encode(data).decode("utf-8")

    (2) メッセージリストの準備。

    # メッセージリストの準備
    messages = [
        {
            "role": "user",
            "content": [
                {
                    "type": "input_file",
                    "filename": "gpt-4-5-system-card-2272025.pdf",
                    "file_data": f"data:application/pdf;base64,{base64_string}",
                },
                {
                    "type": "input_text",
                    "text": "このPDFの内容を要約してください。",
                },
            ],
        },
    ]

    (3) 推論の実行。

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

    5. 制限事項

    PDF入力を使用する際の制限事項は、次のとおりです。

    5-1. トークンの使用

    モデルがPDFを理解できるように、ページに画像が含まれているかどうかに関係なく、抽出されたテキストと各ページの画像の両方をモデルのコンテキストに組み込みます。ソリューションを大規模に展開する前に、PDFを入力として使用する場合の価格とトークンの使用への影響を理解していることを確認してください。

    5-2. ファイルサイズの制限

    複数のファイル入力にわたって、APIへの1回のリクエストで最大100ページと合計32MBのコンテンツをアップロードできます。

    5-3. サポートされているモデル

    「gpt-4o」「gpt-4o-mini」「o1」など、テキストと画像の両方の入力をサポートするモデルのみが、PDFを入力として受け入れることができます。

    5-4. ファイルのアップロード目的

    これらのファイルは、任意の目的で「Files API」にアップロードできますが、モデル入力として使用する予定のファイルには、user_data 目的を使用することを推奨します。

    次回



     
     

    npaka

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

    あなたへのおすすめ