ベンチマーク

GPT-5.4 mini/nano比較|サブエージェント最適モデル選定

GPT-5.4 mini/nano比較|サブエージェント最適モデル選定

この記事の結論

OpenAIが2026年3月17日リリースのGPT-5.4 mini($0.75/M)とnano($0.20/M)。Codexサブエージェント最適用途とClaude Haiku・Gemini Flashとのコスト比較を解説。

2026年3月17日、OpenAIがGPT-5.4 miniとnanoをリリースした。GPT-5.4本体(3月5日リリース)からわずか12日後の展開だ。

「サブエージェント時代の到来」とOpenAIが表現するとおり、miniとnanoは単体で使うモデルではない。フラッグシップが計画を立て、miniとnanoが並列で実行する——そういう役割分担が前提の設計になっている。Codexユーザーにとっては、どちらをどの用途に使うかで月のAPIコストが大きく変わる話だ。

スペック比較

項目 GPT-5.4 mini GPT-5.4 nano Claude Haiku 4.5 Gemini 3 Flash
リリース日 2026年3月17日 2026年3月17日 2026年2月 2026年1月
入力コスト $0.75/M tokens $0.20/M tokens $1.00/M tokens $0.50/M tokens
出力コスト $4.50/M tokens $1.25/M tokens $5.00/M tokens $3.00/M tokens
コンテキスト 400K tokens 未公開 200K tokens 1M tokens
OSWorld-Verified 72.1% 39.0%
SWE-Bench Pro フラッグシップに迫る 52.4% 73.3%(Verified) 78%(Verified)
マルチモーダル あり なし あり あり
Codex統合 あり APIのみ
コスト消費 フラッグシップの30% 最小

料金情報の最終確認: 2026-03-21

コスト効率で比較する

nanoの$0.20/Mというインプットコストは、現行の主要モデルの中で最安クラスだ。同じOpenAIファミリーでもminiの約4分の1。Gemini 3 Flash($0.50/M)と比べても60%安い。

ただし、「安ければよい」という単純な話ではない。ベンチマークを見ると、OSWorld(コンピュータ操作ベンチマーク)でminiが72.1%、nanoが39.0%と30ポイント以上の差がある。視覚情報の理解を伴うタスクでnanoを使うと精度が落ち、後工程で人間の修正コストが発生する可能性がある。

コスト最適化は「安いモデルを全タスクに」ではなく、「タスクの性質に応じてモデルを選ぶ」ことで達成される。

Codexサブエージェントでの使い分けを考える

OpenAIの設計思想では、フラッグシップGPT-5.4がオーケストレーターとして計画を立て、mini/nanoがワーカーとして並列実行する。Codexでminiをサブエージェントに使うと、フラッグシップのクォータの30%しか消費しない。

以下に、Codexのカスタムエージェント設定でモデルを指定するコード例を示す。

# OpenAI Agents SDK でのサブエージェント設定例
# 動作環境: Python 3.11+, openai-agents>=0.1.0
# 必要パッケージ: pip install openai-agents
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

from agents import Agent, Runner, handoff

# オーケストレーター(高コスト・高精度)
planner_agent = Agent(
    name="Planner",
    model="gpt-5.4",  # フラッグシップ
    instructions="""
    ユーザーのリクエストを分析し、適切なサブエージェントに委任してください。
    - コード生成タスク → CodeAgent(mini)へ
    - テキスト分類・データ抽出 → ClassifierAgent(nano)へ
    - 視覚情報が必要なタスク → VisualAgent(mini)へ
    """,
    handoffs=["code_agent", "classifier_agent", "visual_agent"]
)

# コード生成サブエージェント(mini推奨)
code_agent = Agent(
    name="CodeAgent",
    model="gpt-5.4-mini",  # SWE-Benchで高スコア、コスト効率良好
    instructions="与えられた仕様に基づいてコードを生成してください。"
)

# 分類・抽出サブエージェント(nano推奨)
classifier_agent = Agent(
    name="ClassifierAgent",
    model="gpt-5.4-nano",  # 最安値、単純タスクに最適
    instructions="テキストを指定されたカテゴリに分類してください。"
)

# 視覚情報処理(mini必須 — nanoはマルチモーダル非対応)
visual_agent = Agent(
    name="VisualAgent",
    model="gpt-5.4-mini",  # OSWorld 72.1%、スクリーンショット解析に適切
    instructions="スクリーンショットを解析してUIの状態を説明してください。"
)

runner = Runner()
result = await runner.run(planner_agent, "GitHubのPRコメントを分析してバグを修正してください")

ポイント: nanoはマルチモーダル対応なし。スクリーンショットやUI解析が必要な場面では必ずminiを使うこと。

用途別の選び方で比較する

どちらを選べばいいか、用途別に整理する。

GPT-5.4 miniが向いているケース

OSWorld 72.1%という数字が示すとおり、視覚情報を伴うタスク全般でminiが優位だ。コンピュータ操作の自動化、スクリーンショットからのUI状態解析、複雑なコード生成とリファクタリングなどが該当する。

# miniを使ったコンピュータ操作タスクの例
# 動作環境: Python 3.11+, openai>=1.50.0
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

from openai import OpenAI
import base64

client = OpenAI()

def analyze_screenshot(image_path: str) -> str:
    """スクリーンショットを解析してUI状態を返す"""
    with open(image_path, "rb") as f:
        image_data = base64.b64encode(f.read()).decode()

    response = client.chat.completions.create(
        model="gpt-5.4-mini",  # マルチモーダル対応、OSWorld 72.1%
        messages=[
            {
                "role": "user",
                "content": [
                    {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_data}"}},
                    {"type": "text", "text": "このスクリーンショットで次に行うべきアクションを1文で説明してください。"}
                ]
            }
        ],
        max_tokens=200
    )
    return response.choices[0].message.content

GPT-5.4 nanoが向いているケース

分類、データ抽出、ランキング、単純な文章変換——これらはコンテキスト理解より処理速度とコストが重要なタスクだ。大量バッチ処理での活用が特に効果的で、nanoの$0.20/Mは100万件の分類で約$0.20という計算になる。

# nanoを使ったバッチ分類の例
# 動作環境: Python 3.11+, openai>=1.50.0
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

from openai import OpenAI
from concurrent.futures import ThreadPoolExecutor
from typing import List

client = OpenAI()

CATEGORIES = ["バグ報告", "機能要望", "質問", "その他"]

def classify_ticket(ticket_text: str) -> str:
    """サポートチケットを分類(nano使用)"""
    response = client.chat.completions.create(
        model="gpt-5.4-nano",  # 分類タスクに最適、コスト最小
        messages=[
            {
                "role": "system",
                "content": f"次のカテゴリのいずれかで分類してください: {', '.join(CATEGORIES)}nカテゴリ名のみ回答してください。"
            },
            {"role": "user", "content": ticket_text}
        ],
        max_tokens=20  # カテゴリ名だけなので短くて十分
    )
    return response.choices[0].message.content.strip()

# バッチ処理(ThreadPoolExecutorで並列化)
def batch_classify(tickets: List[str], max_workers: int = 10) -> List[str]:
    with ThreadPoolExecutor(max_workers=max_workers) as executor:
        results = list(executor.map(classify_ticket, tickets))
    return results

筆者のおすすめ

正直に言うと、nanoは「とにかく安い」という用途で強い。ただし、精度が求められるタスクでnanoに頼りすぎると、後工程の修正コストで「安さ」が消える。miniは現状の小型モデルとして最高クラスの性能を持ちながら、Claude Haiku 4.5より25%安い。

私の使い分け基準はシンプルだ:

  • 画面・画像の処理が必要 → mini一択(nanoは非対応)
  • コード生成・デバッグ → mini(SWE-Bench Proで高スコア)
  • 分類・タグ付け・抽出の大量バッチ → nano
  • コスト最優先でテキスト変換 → nano
  • Gemini 3 Flashの1Mコンテキストが必須 → Gemini 3 Flash(nanoでは対応不可)

Codexサブエージェントの設定については、Codex完全活用ガイドでより詳しく解説している。

参考・出典


あわせて読みたい:


この記事はAIgent Lab編集部がお届けしました。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年3月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事