見出し画像

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 目的を使用することを推奨します。

次回



いいなと思ったら応援しよう!