OpenAI Responses API 入門 (7) - ファイル入力
「Responses API」の「ファイル入力」ついてまとめました。
前回
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 目的を使用することを推奨します。
