TL;DR / 簡潔な回答
GPT-5.4 APIを使用するには:OpenAI SDKをインストールし(pip install openai)、APIキーでクライアントを初期化し、モデルgpt-5.4を使用してchat.completions.create()を呼び出します。主な機能:コンピューター利用(ネイティブブラウザ自動化)、ツール検索(トークン削減47%)、1Mコンテキストウィンドウ、ビジョン機能。料金:入力トークン1Mあたり2.50ドル、出力トークン1Mあたり15ドル。このガイドでは、セットアップ、コード例、コンピューター利用の設定、ツール統合、および本番環境でのベストプラクティスについて説明します。
はじめに
GPT-5.4は単なるモデルのアップグレードではありません。これは、ネイティブなコンピューター利用機能、効率的なツール検索、1Mトークンのコンテキストウィンドウを備えたOpenAI初の汎用モデルです。GPT-5.4を効果的に使用するには、これらの新しい機能を理解し、ワークフローに統合する方法を知る必要があります。
このガイドでは、GPT-5.4の主要な機能ごとに動作するコード例を提供します。コンピューター利用の自動化の実装、MCPサーバー向けのツール検索の設定、高解像度画像の処理、長文のコードベースの扱い、および本番環境デプロイメントのコスト最適化について学びます。
AIエージェントの構築、ブラウザワークフローの自動化、既存アプリケーションへのGPT-5.4の統合など、どのような場合でも、このガイドは必要な実装の詳細を提供します。
クイックスタート:初めてのGPT-5.4リクエスト
5分以内にGPT-5.4を使い始めましょう。コードを書く前に、ApidogでGPT-5.4 APIリクエストをテストしてください:
- POSTで
https://api.openai.com/v1/chat/completionsへの新しいHTTPリクエストを作成します - Authorizationヘッダーを追加:
Bearer YOUR_API_KEY - モデル、メッセージ、パラメータを含むリクエストボディを設定します
- 送信して応答を検査します
- 繰り返しテストのためにコレクションに保存します
- APIキーを切り替えるために環境変数を使用します

この視覚的なアプローチは、初期テストを迅速化し、コードで実装する前にAPI構造を理解するのに役立ちます。
前提条件
- 請求が有効になっているOpenAIアカウント
- platform.openai.com/api-keys からのAPIキー
- Python 3.7+ または Node.js 14+
Python クイックスタート
from openai import OpenAI
import os
# Initialize client
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY")
)
# Make request
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": "You are a helpful coding assistant."},
{"role": "user", "content": "Write a Python function to sort a list of dictionaries by a key."}
]
)
print(response.choices[0].message.content)Node.js クイックスタート
const OpenAI = require('openai');
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
});
async function main() {
const response = await client.chat.completions.create({
model: 'gpt-5.4',
messages: [
{ role: 'system', content: 'You are a helpful coding assistant.' },
{ role: 'user', content: 'Write a Python function to sort a list of dictionaries by a key.' }
]
});
console.log(response.choices[0].message.content);
}
main();期待される出力
def sort_dicts_by_key(dict_list, key, reverse=False):
"""
Sort a list of dictionaries by a specified key.
Args:
dict_list: List of dictionaries to sort
key: The dictionary key to sort by
reverse: If True, sort in descending order
Returns:
Sorted list of dictionaries
"""
return sorted(dict_list, key=lambda x: x.get(key, ''), reverse=reverse)
# Example usage
data = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
sorted_by_age = sort_dicts_by_key(data, 'age')
print(sorted_by_age)
# [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]GPT-5.4 の機能の理解
GPT-5.4は4つの主要な分野で優れています。これらを理解することは、各ユースケースに適切なアプローチを選択するのに役立ちます。
1. 知識作業 (GDPval 勝率 83%)
最適用途:
- スプレッドシートの作成と分析
- プレゼンテーションの生成
- 文書の作成と編集
- 財務モデリング
- データ分析とレポート作成

2. コンピューター利用 (OSWorld検証済み 75%)
最適用途:
- ブラウザ自動化
- アプリケーション間でのデータ入力
- 対話型ウェブスクレイピング
- ワークフローのテスト
- アプリケーション間のタスク自動化

3. コーディング (SWE-Bench Pro 57.7%)
最適用途:
- フルスタック開発
- フロントエンドUI生成
- 複雑な問題のデバッグ
- コードのリファクタリング
- テスト生成

4. ツール統合 (Toolathlon 54.6%)
最適用途:
- MCPサーバー統合
- 多段階APIワークフロー
- 外部ツールオーケストレーション
- エージェント型アプリケーション

コンピューター利用API
GPT-5.4のネイティブなコンピューター利用機能は、このリリースにおける最大の飛躍を表しています。このモデルは、スクリーンショット、マウスコマンド、およびキーボード入力を介してコンピューターを操作できます。

コンピューター利用機能を備えたアプリケーションを構築する際は、ワークフローの各ステップをApidogでテストしてください:
- スクリーンショットアップロードエンドポイントを検証
- コマンド実行API(クリック、タイプ、スクロール)をテスト
- 各コンピューターアクションのモック応答を作成
- 複数ターンワークフローのテストを自動化
- チーム参照用にコンピューター利用API契約を文書化
コンピューター利用の仕組み
コンピューター利用ワークフローでは、APIリクエストで computer ツールを使用します。モデルは次のように動作します:
- 現在の画面状態のスクリーンショットを受け取る
- UI要素を分析し、アクションを決定する
- コンピューターコマンド(クリック、タイプ、スクロールなど)を返す
- アプリケーションがコマンドを実行し、新しいスクリーンショットをキャプチャする
- タスクが完了するまでループを続ける
基本的なコンピューター利用のセットアップ
from openai import OpenAI
import base64
client = OpenAI()
def take_screenshot():
"""現在の画面状態をキャプチャします - プラットフォームに合わせて実装してください。"""
# pyautogui、PIL、またはプラットフォーム固有のスクリーンショットを使用
import pyautogui
screenshot = pyautogui.screenshot()
import io
buffer = io.BytesIO()
screenshot.save(buffer, format='PNG')
return base64.b64encode(buffer.getvalue()).decode('utf-8')
def execute_computer_command(command):
"""コンピューターコマンドを実行します - コマンドタイプに基づいて実装してください。"""
import pyautogui
action = command.get('action')
if action == 'click':
x, y = command.get('coordinate', [0, 0])
pyautogui.click(x, y)
elif action == 'type':
text = command.get('text', '')
pyautogui.write(text, interval=0.05)
elif action == 'scroll':
amount = command.get('scroll_amount', 0)
pyautogui.scroll(amount)
elif action == 'keypress':
key = command.get('key', '')
pyautogui.press(key)
# アクション後に新しいスクリーンショットを返す
return take_screenshot()
# コンピューター利用の会話
messages = [{
"role": "user",
"content": [
{
"type": "text",
"text": "Navigate to gmail.com and log in with the credentials I provided."
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{take_screenshot()}"
}
}
]
}]
# コンピューターツールを使用したリクエスト
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
tools=[{
"type": "computer",
"display_width": 1920,
"display_height": 1080,
"display_number": 1
}],
tool_choice="required"
)
# コンピューターコマンドを解析して実行
for tool_call in response.choices[0].message.tool_calls:
if tool_call.type == "computer":
command = tool_call.function.arguments
new_screenshot = execute_computer_command(command)
# 新しいスクリーンショットで会話を続ける
messages.append({
"role": "assistant",
"content": response.choices[0].message.content
})
messages.append({
"role": "user",
"content": [{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{new_screenshot}"}
}]
})コンピューター利用の安全ポリシー
リスク許容度に基づいて安全動作を設定します:
# セーフモード - 機密性の高いアクションには確認が必要
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
tools=[{
"type": "computer",
"display_width": 1920,
"display_height": 1080,
"confirmation_policy": "always" # または「never」または「selective」
}],
# 安全性に関するカスタムシステムメッセージ
system_message="""あなたはコンピューターを操作しています。以下の安全ルールに従ってください:
1. 明示的なユーザー確認なしに資格情報を入力しないでください
2. ファイルやデータを削除する前に尋ねてください
3. メールやメッセージを送信する前に確認してください
4. エラーや予期せぬ状態は直ちに報告してください
"""
)ブラウザ自動化の例
Playwright統合でブラウザタスクを自動化します:
from playwright.sync_api import sync_playwright
def browser_automation_workflow():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
# ページに移動
page.goto("https://example.com")
# GPT-5.4用のスクリーンショットを取得
screenshot = page.screenshot()
screenshot_b64 = base64.b64encode(screenshot).decode('utf-8')
messages = [{
"role": "user",
"content": [
{"type": "text", "text": "Find the login form and fill it out."},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{screenshot_b64}"}}
]
}]
# GPT-5.4からコンピューターコマンドを取得
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
tools=[{"type": "computer"}],
tool_choice="required"
)
# ブラウザ上でコマンドを解析して実行
for tool_call in response.choices[0].message.tool_calls:
if tool_call.type == "computer":
command = json.loads(tool_call.function.arguments)
if command.get('action') == 'click':
x, y = command.get('coordinate', [0, 0])
page.mouse.click(x, y)
elif command.get('action') == 'type':
page.keyboard.type(command.get('text', ''))
# 新しいスクリーンショットを取得して続行
new_screenshot = page.screenshot()
# ... ループを続けるメールとカレンダーの自動化
実世界の例:メールを処理し、イベントをスケジュールする:
def process_email_and_schedule_meeting():
"""
ワークフロー:未読メールを読み取り、会議リクエストを抽出、
カレンダーの空き状況を確認し、カレンダー招待を送信します。
"""
workflow_prompt = """
このワークフローを完了してください:
1. Gmailを開き、過去24時間以内の未読メールを探します
2. 会議リクエストやスケジュールに関する質問を特定します
3. 各会議リクエストについて:
- 提案された日付/時間を抽出します
- 出席者と会議の目的をメモします
4. Googleカレンダーを開き、空き状況を確認します
5. 確定した会議のカレンダー招待を送信します
6. スケジュールされた時間を確定する返信メールを送信します
達成されたことの要約を報告してください。
"""
# 受信トレイのスクリーンショットから開始
screenshot = take_screenshot()
messages = [{
"role": "user",
"content": [
{"type": "text", "text": workflow_prompt},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{screenshot}"}}
]
}]
# 複数ターンコンピューター利用ワークフローを実行
for turn in range(10): # 無限ループを防ぐためターンを制限
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
tools=[{"type": "computer"}],
tool_choice="required"
)
# タスクが完了したか確認
if "complete" in response.choices[0].message.content.lower():
print(f"Workflow completed in {turn + 1} turns")
break
# コンピューターコマンドを実行し、新しいスクリーンショットを取得
# ... (以前の例からのコマンド実行ロジック)パフォーマンスの最適化
Mainstayが3万件の固定資産税ポータルを処理した結果:
- 初回成功率 95%
- 以前のモデルより 3倍高速
- セッションあたりのトークン数 70%削減
最適化のヒント:
- 高品質のスクリーンショットを使用(最低1920x1080)
- 明確で具体的なタスク記述を提供する
- ループを防ぐためにターン制限を実装する
- 冗長なキャプチャを避けるためにスクリーンショットをキャッシュする
- 信頼できるワークフローには選択的な確認ポリシーを使用する
ツール検索と統合
ツール検索はトークン使用量を47%削減し、大規模なツールエコシステムでの作業を可能にします。
ツール検索の仕組み
すべてのツール定義を事前に読み込むのではなく、モデルは軽量なリストを受け取り、オンデマンドで定義を検索します。

基本的なツール検索のセットアップ
# 利用可能なツールを定義(軽量リスト)
available_tools = [
{
"name": "get_weather",
"description": "場所の現在の天気を取得"
},
{
"name": "send_email",
"description": "受信者にメールを送信"
},
{
"name": "calendar_search",
"description": "カレンダーでイベントを検索"
},
# ... 他にも数百のツール
]
# 最初のリクエスト - モデルはツールリストを参照し、完全な定義は参照しない
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "user", "content": "What's the weather in Tokyo and send it to my team?"}
],
tools=available_tools,
tool_choice="auto"
)
# モデルがツールを使用したい場合、定義を要求する
# その時点でアプリケーションが完全な定義を提供するMCPサーバー統合
ScaleのMCP Atlasベンチマークでは、ツール検索によりトークンが47%削減されることが示されました。
# 多くのツールを備えたMCPサーバー
mcp_servers = [
{
"name": "filesystem",
"description": "ファイルシステム操作",
"tool_count": 12
},
{
"name": "database",
"description": "データベースクエリ操作",
"tool_count": 8
},
{
"name": "web-search",
"description": "ウェブ検索とスクレイピング",
"tool_count": 15
}
# ... ベンチマークの36のMCPサーバー
]
# ツール検索設定
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "user", "content": "Find all Python files modified today and search for TODO comments."}
],
tools=mcp_servers,
# このパターンを使用するとツール検索が自動的に有効になる
parallel_tool_calls=True
)
# モデルは必要に応じてツール定義を要求します
# トークン削減:すべての定義を事前に読み込む場合と比較して47%Toolathlonスタイル多段階ワークフロー
Toolathlonは複雑な多段階ツールワークフローをテストします:
def grade_assignments_workflow():
"""
複雑なワークフロー:添付ファイル付きのメールを読み込み、
採点システムにアップロードし、課題を採点し、
結果をスプレッドシートに記録します。
"""
workflow_steps = """
1. 学生からの課題添付ファイル付きメールを読み込みます
2. 各添付ファイルをダウンロードします
3. 採点ポータルにアップロードします
4. ルーブリックを使用して各課題を採点します
5. スプレッドシートに成績を記録します
6. 学生に確認メールを送信します
"""
tools = [
{"name": "email_read", "description": "受信トレイからメールを読み込む"},
{"name": "email_send", "description": "メールを送信する"},
{"name": "file_download", "description": "ファイル添付ファイルをダウンロードする"},
{"name": "file_upload", "description": "ウェブポータルにファイルをアップロードする"},
{"name": "web_form_fill", "description": "ウェブフォームを入力して送信する"},
{"name": "spreadsheet_write", "description": "スプレッドシートにデータを書き込む"},
{"name": "rubric_evaluate", "description": "ルーブリックに対して作業を評価する"}
]
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "user", "content": workflow_steps}
],
tools=tools,
parallel_tool_calls=True # 並列ツール実行を有効にする
)
# GPT-5.4はToolathlonで54.6%を達成(GPT-5.2は45.7%)
# 鍵:より良いツール選択と少ないターン数で済むビジョンと画像処理
GPT-5.4は、最大10.24Mピクセルのオリジナル画像詳細で、強化された視覚認識をサポートします。
画像詳細レベル
# オリジナル詳細 - 最高品質 (10.24Mピクセル、最大6000px)
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://example.com/high-res-image.jpg",
"detail": "original" # または「high」または「low」
}
},
{"type": "text", "text": "Analyze this technical diagram."}
]
}]
)
# 高詳細 - 2.56Mピクセル、最大2048px
# 低詳細 - 最速処理、低精度ドキュメント解析の例
OmniDocBench:エラー率 0.109(GPT-5.2は0.140)
def parse_complex_document(pdf_path):
"""テーブルや図を含む複数ページのPDFを解析します。"""
# PDFページを画像に変換
from pdf2image import convert_from_path
pages = convert_from_path(pdf_path, dpi=300)
messages = [{"role": "user", "content": []}]
for i, page in enumerate(pages[:5]): # 最初の5ページ
import io, base64
buffer = io.BytesIO()
page.save(buffer, format='PNG')
img_b64 = base64.b64encode(buffer.getvalue()).decode()
messages[0]["content"].append({
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{img_b64}",
"detail": "high"
}
})
messages[0]["content"].append({
"type": "text",
"text": """
このドキュメントからすべてのデータを抽出します:
1. 行/列ヘッダー付きのテーブル
2. 主要な図とそのキャプション
3. テキストで言及されている要約統計
構造化されたJSONとして返します。
"""
})
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages
)
return response.choices[0].message.contentUIスクリーンショット分析
def analyze_ui_screenshot(screenshot_path):
"""アクセシビリティの問題についてUIスクリーンショットを分析します。"""
with open(screenshot_path, 'rb') as f:
img_b64 = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{img_b64}",
"detail": "original"
}
},
{
"type": "text",
"text": """
このUIスクリーンショットをアクセシビリティの問題についてレビューしてください:
1. 色のコントラストの問題
2. ラベルやaltテキストインジケーターの欠落
3. キーボードナビゲーションの問題(可視フォーカス状態)
4. テキストサイズと可読性
5. スクリーンリーダーの互換性に関する懸念
特定の位置と重要度で問題をリストアップしてください。
"""
}
]
}]
)
return response.choices[0].message.content長文コンテキストワークフロー
GPT-5.4は最大1Mトークンのコンテキストウィンドウをサポートします(実験的)。
標準コンテキスト (272Kトークン)
# 大きなコードベースファイルを読み込む
with open('large_codebase.py', 'r') as f:
code = f.read()
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": "あなたはコードレビューアシスタントです。"},
{"role": "user", "content": f"""
このコードベースを次の点についてレビューしてください:
1. セキュリティの脆弱性
2. パフォーマンスの問題
3. コードスタイルの不整合
4. エラー処理の欠落
コード:
{code}
"""}
],
max_tokens=4000
)拡張コンテキスト (100万トークン)
APIパラメータを介して設定します:
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "user", "content": large_document}
],
# 拡張コンテキスト設定
extra_body={
"model_context_window": 1048576, # 100万トークン
"model_auto_compact_token_limit": 272000 # 272K後に自動圧縮
}
)
# 注意:272Kを超えるリクエストは使用量が2倍としてカウントされます複数ドキュメント分析
def analyze_multiple_documents(documents):
"""単一のコンテキストで10以上のドキュメントを分析します。"""
content_parts = []
for i, doc in enumerate(documents):
content_parts.append(f"=== Document {i+1}: {doc['title']} ===\n")
content_parts.append(doc['content'][:50000]) # 必要に応じて切り詰める
content_parts.append("\n\n")
combined_content = "".join(content_parts)
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{
"role": "user",
"content": f"""
これらのドキュメントを分析し、以下を提供してください:
1. すべてのドキュメントにわたる主要テーマの要約
2. ドキュメント間の矛盾または不整合
3. いずれかのドキュメントで言及されているアクションアイテム
4. 該当する場合のイベントのタイムライン
{combined_content}
"""
}],
max_tokens=8000
)
return response.choices[0].message.contentコーディングと開発ワークフロー
GPT-5.4は、SWE-Bench ProでGPT-5.3-Codex (57.7%) と同等の性能を持ち、コンピューター利用機能が追加されています。
フロントエンド生成
def generate_frontend_component(spec):
"""スタイリング付きの完全なReactコンポーネントを生成します。"""
prompt = f"""
この仕様に基づいて完全なReactコンポーネントを作成してください:
{spec}
要件:
1. フックを使用した関数コンポーネント
2. すべてのpropsとstateに対するTypeScript型
3. スタイリングにはTailwind CSS
4. レスポンシブデザイン(モバイル、タブレット、デスクトップ)
5. アクセシビリティ(ARIAラベル、キーボードナビゲーション)
6. Jest/React Testing Libraryを使用した単体テスト
完全なコードを返してください:
- コンポーネントファイル (.tsx)
- スタイル(Tailwind以外の場合)
- テストファイル (.test.tsx)
"""
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": prompt}],
max_tokens=6000
)
return response.choices[0].message.content
# 例:テーマパークシミュレーション(OpenAIデモより)
theme_park_spec = """
インタラクティブなアイソメトリックテーマパークシミュレーションゲームを作成してください:
- タイルベースのパス配置
- 乗り物と景観の建設
- ゲストの経路探索とキューイング
- 公園の指標(お金、ゲスト、幸福度、清潔さ)
- Playwrightテストによるブラウザプレイ可能
- 生成されたアイソメトリックアセット
"""
component_code = generate_frontend_component(theme_park_spec)複雑な問題のデバッグ
def debug_with_full_context(error_logs, codebase_files, stack_trace):
"""ログ、コード、スタックトレースの完全なコンテキストを使用してデバッグします。"""
context = f"""
エラーログ:
{error_logs}
スタックトレース:
{stack_trace}
関連コードファイル:
{codebase_files}
タスク:根本原因を特定し、修正を提供します。
考慮事項:
1. 競合状態またはタイミングの問題
2. メモリリークまたはリソース枯渇
3. データフローに関する誤った仮定
4. 処理されていないエッジケース
5. 外部依存関係の問題
提供するもの:
1. 根本原因分析
2. 必要な特定のコード変更
3. 回帰を防ぐためのテスト
"""
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": context}],
max_tokens=4000
)
return response.choices[0].message.contentPlaywrightインタラクティブテスト
ブラウザプレイテスト用の実験的なCodexスキル:
def playwright_interactive_debug():
"""
ブラウザプレイテストにはPlaywright Interactiveを使用します。
GPT-5.4は、アプリを構築しながらテストできます。
"""
prompt = """
todoウェブアプリケーションを構築し、構築しながらテストします:
1. HTML構造を作成
2. CSSスタイリングを追加
3. JavaScript機能の実装
4. 各機能の後、Playwrightを使用して以下を行います:
- 要素の可視性を検証
- ユーザーインタラクションをテスト
- 状態の永続性を確認
- エッジケースを検証
テスト中に見つかった問題を報告し、修正してください。
"""
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "playwright_interactive"}],
max_tokens=8000
)
return response.choices[0].message.contentストリーミング応答
ストリーミングは、長い応答に対する知覚遅延を低減します。
Python ストリーミング
from openai import OpenAI
client = OpenAI()
stream = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Write a detailed explanation of quantum computing."}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Node.js ストリーミング
const stream = await client.chat.completions.create({
model: 'gpt-5.4',
messages: [{ role: 'user', content: 'Write a detailed explanation of quantum computing.' }],
stream: true
});
for await (const chunk of stream) {
if (chunk.choices[0].delta.content) {
process.stdout.write(chunk.choices[0].delta.content);
}
}トークンカウント付きストリーミング
def stream_with_usage(stream):
"""ストリーミング中のトークン使用量を追跡します。"""
total_tokens = 0
for chunk in stream:
if chunk.choices[0].delta.content:
content = chunk.choices[0].delta.content
print(content, end="", flush=True)
total_tokens += len(content) // 4 # おおよその見積もり
if chunk.usage:
print(f"\n\nUsage: {chunk.usage.total_tokens} tokens")
return total_tokensエラー処理とリトライロジック
本番環境のコードには堅牢なエラー処理が必要です。
包括的なエラー処理
from openai import OpenAI, RateLimitError, APIError, AuthenticationError
import time
client = OpenAI()
def make_request_with_retry(messages, max_retries=3):
"""指数バックオフ再試行ロジックでリクエストを行います。"""
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
max_tokens=2000,
temperature=0.7
)
return response
except RateLimitError as e:
if attempt == max_retries - 1:
raise
wait_time = 2 ** attempt # 1秒、2秒、4秒
print(f"レート制限されました。{wait_time}秒待機しています...")
time.sleep(wait_time)
except APIError as e:
if e.status_code >= 500: # サーバーエラー、再試行
if attempt == max_retries - 1:
raise
wait_time = 2 ** attempt
time.sleep(wait_time)
else:
raise # クライアントエラー、再試行しない
except AuthenticationError:
print("無効なAPIキーです。資格情報を確認してください。")
raise
except Exception as e:
print(f"予期せぬエラー:{e}")
raise
raise Exception("最大再試行回数を超過しました")
# 使用方法
try:
response = make_request_with_retry([
{"role": "user", "content": "Hello, GPT-5.4!"}
])
print(response.choices[0].message.content)
except Exception as e:
print(f"リクエスト失敗:{e}")タイムアウト処理
import httpx
# タイムアウトを設定
client = OpenAI(
timeout=httpx.Timeout(60.0, connect=10.0) # 合計60秒、接続10秒
)
try:
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Long-running task..."}]
)
except httpx.TimeoutException:
print("リクエストがタイムアウトしました。ストリーミングを使用するか、複雑さを軽減することを検討してください。")本番環境でのベストプラクティス
本番APIワークフローにApidogを使用する
GPT-5.4統合を本番環境にデプロイする前に、堅牢なテストおよび監視ワークフローを確立してください:
APIテストパイプライン:
- Apidogを使用して、成功ケースとエラーケースをカバーする包括的なテストスイートを作成します
- CI/CDパイプラインでAPIテストを自動化し、破壊的変更を捕捉します
- 統合テストのためにGPT-5.4応答をモックし、トークンコストを回避します
- テスト済みリクエストからAPIドキュメントを自動生成します

チームコラボレーション:
- 一貫した統合パターンを実現するために、APIコレクションをチームメンバーと共有します
- 異なるAPIキー(開発/ステージング/本番)を管理するために環境変数を使用します
- 期待される動作とエッジケースを説明するリクエストドキュメントを追加します
統合パターン:
コスト最適化戦略
プロンプトの最適化
# 悪い例:冗長なプロンプト
bad_prompt = """
こんにちは!お元気ですか。何かお手伝いいただけないでしょうか。ここにコードがあるのですが、それが何をするのかよくわかりません。
説明していただけますか?コードはこちらです:
""" + code
# 良い例:直接的なプロンプト
good_prompt = f"このコードが何をするのか説明してください:\n{code}"
# トークン節約:約50トークン = 1リクエストあたり0.000125ドル
# 月間100万リクエストの場合:125ドルの節約応答長さの制御
# max_tokensを適切に設定
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Summarize this article."}],
max_tokens=200 # 冗長にならないように
)
# ストップシーケンスを使用
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "List 5 items."}],
stop=["\n\n", "6."] # リストの後に停止
)バッチ処理
# 50%割引のためにバッチAPIを使用
from openai import OpenAI
client = OpenAI()
# バッチファイルを作成
batch_requests = []
for article in articles:
batch_requests.append({
"custom_id": article["id"],
"method": "POST",
"url": "/v1/chat/completions",
"body": {
"model": "gpt-5.4",
"messages": [{"role": "user", "content": article["content"]}]
}
})
# アップロードして処理
batch_file = client.files.create(
file=json.dumps(batch_requests),
purpose="batch"
)
batch = client.batches.create(
input_file_id=batch_file.id,
endpoint="/v1/chat/completions",
completion_window="24h"
)
# 非リアルタイムワークロードで50%のコスト削減繰り返しリクエストのキャッシュ
import hashlib
import json
class ResponseCache:
"""同一のAPI応答をキャッシュします。"""
def __init__(self):
self.cache = {}
def _get_key(self, messages):
return hashlib.md5(json.dumps(messages).encode()).hexdigest()
def get_or_create(self, client, messages, **kwargs):
key = self._get_key(messages)
if key in self.cache:
return self.cache[key]
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
**kwargs
)
self.cache[key] = response
return response
# 使用方法
cache = ResponseCache()
response = cache.get_or_create(client, messages)結論
GPT-5.4は、AIを活用したアプリケーションに新たな可能性を開きます。ネイティブなコンピューター利用は、ブラウザ自動化とアプリケーション間のワークフローを可能にします。ツール検索は、より大規模なツールエコシステムをサポートしながらコストを47%削減します。強化されたビジョンは複雑なドキュメント解析を処理します。そして、1Mトークンのコンテキストウィンドウはコードベース全体を処理します。
GPT-5.4で本番アプリケーションを構築するには、堅牢なAPIテスト、デバッグ、およびドキュメント作成ワークフローが必要です。Apidogは、完全なAPIライフサイクルに対応する統合プラットフォームを提供します。
AIエージェントの構築、ワークフローの自動化、またはGPT-5.4を搭載した顧客向け機能の作成など、堅実なAPI開発プラクティスを持つことで、デリバリーを加速し、バグを削減できます。
基本的なチャット補完から始め、ユースケースに応じてコンピューター利用、ツール検索、ビジョンを重ねていきます。初期デプロイメント中はコストを注意深く監視し、プロンプトとキャッシュ戦略を最適化してください。
よくある質問 (FAQ)
GPT-5.4のコンピューター利用機能はどのように使用しますか?
APIリクエストで computer ツールを使用します。スクリーンショットを画像として送信し、応答としてコンピューターコマンド(クリック、タイプ、スクロール)を受け取ります。pyautoguiまたはPlaywrightを使用してコマンドを実行し、新しいスクリーンショットを送信します。タスクが完了するまでループします。リスク許容度に基づいて安全ポリシーを設定します。
ツール検索とは何ですか、どのように有効にしますか?
ツール検索は、ツール定義を事前に読み込むのではなくオンデマンドで読み込み、トークン使用量を47%削減します。リクエストで軽量なツールリストを提供することで有効になります。モデルは必要に応じて完全な定義を要求します。MCPサーバーでは自動的に機能します。
100万トークンのコンテキストウィンドウはどのように使用しますか?
extra_body パラメータを介して設定します:model_context_window: 1048576 と model_auto_compact_token_limit: 272000。注意:272Kトークンを超えるリクエストは使用量が2倍としてカウントされます。Codexで実験的に利用可能です。
gpt-5.4 と gpt-5.4-pro の違いは何ですか?
GPT-5.4 Proは複雑な推論でより高い精度(BrowseCompで89.3% vs 82.7%)を提供しますが、コストは12倍高くなります(30ドル/180ドル vs 2.50ドル/15ドル)。ほとんどのワークロードには標準モデルを、最高の精度を必要とするタスクにはProを使用してください。
GPT-5.4 APIのコストを削減するにはどうすればよいですか?
キャッシュされた入力を使用(90%節約)、プロンプトの長さを最適化し、max_tokens制限を設定し、バッチAPIを使用(50%割引)、応答キャッシュを実装し、画像には適切な詳細レベルを選択してください。
GPT-5.4は1つのリクエストで複数の画像を処理できますか?
はい、可能です。単一のメッセージに複数の image_url コンテンツ部分を含めます。複数ページのドキュメント、比較タスク、または連続したスクリーンショットに役立ちます。
本番環境でレート制限を処理するにはどうすればよいですか?
指数バックオフ再試行ロジック(1秒、2秒、4秒の遅延)を実装し、バッチAPIを一括処理に使用し、リクエストを時間的に分散させ、大量のニーズに対しては制限の引き上げを要求してください。
GPT-5.4が最も得意とするプログラミング言語は何ですか?
GPT-5.4は、Python、JavaScript/TypeScript、React、Node.js、および一般的なウェブ技術に優れています。また、Java、Go、Rust、SQLにも強いです。GPT-5.3-Codexの性能(SWE-Bench Pro 57.7%)と同等です。
GPT-5.4の応答をストリーミングするにはどうすればよいですか?
APIリクエストで stream=True を設定します。チャンクを反復処理し、各デルタを処理します。長い応答に対する知覚遅延を低減します。
GPT-5.4は本番ワークロードに適していますか?
はい、適しています。GPT-5.4はGPT-5.2と比較して事実誤りが33%少なく、トークンをより効率的に使用し、堅牢なエラー処理を備えています。本番デプロイメントには、再試行ロジック、監視、およびコスト追跡を実装してください。
