【保存版】GPT-5.2 スーパープロンプトガイド:コンパクションとエージェント推論の完全攻略

GPT-5.2 Super-Prompt Guide

昨日リリースされた GPT-5.2 は、本番環境におけるAIエージェントのアーキテクチャを根本から覆しました。世間ではベンチマークのスコアばかりが注目されていますが、エンジニアにとっての真のブレイクスルーは、新しい Compaction API(コンパクションAPI) と、きめ細かな reasoning_effort(推論エフォート)の制御にあります。

長期実行型エージェントの開発者にとって、最大の頭痛の種は常に「コンテキストドリフト」でした。会話履歴が膨れ上がるにつれてモデルの焦点がぼやけ、制約条件を幻覚(ハルシネーション)し、あるいは単にハードなトークン制限に達してしまう問題です。RAGは一時しのぎの絆創膏に過ぎず、持続的かつ進化する「一貫した思考」の維持という根本課題は解決していませんでした。

GPT-5.2は、潜在コンテキスト・コンパクション (Latent Context Compaction) と、高度に制御可能な「思考 (Thinking)」モードによってこれを解決します。本記事では、マーケティング的な宣伝文句を排除し、State-of-the-Art (SOTA) なエージェントを即座に構築するための実装戦略を解説します。

コアコンセプト:潜在コンパクションと推論エフォート

GPT-5.2では、2つの重要なアーキテクチャ上のシフトが導入されています。

  1. 推論エフォート (Reasoning Effort): o1のような不透明な推論プロセスとは異なり、GPT-5.2では reasoning_effort を(none から xhigh まで)明示的に固定でき、レイテンシと深度のトレードオフを制御可能です。
  2. コンパクション (Compaction): テキスト要約(ニュアンスが失われる手法)とは異なり、/responses/compact エンドポイントは、会話状態に対して「損失を考慮した圧縮 (loss-aware compression)」を行い、不透明で暗号化されたアイテム を生成します。これらのアイテムは、モデル内部の「思考プロセス」とタスク関連情報を保持したまま、トークン消費量を劇的に削減します。

コンパクション・ループのアーキテクチャ

graph TD
    A["ユーザー入力"] -->|"JSONリクエスト"| B["GPT-5.2 (Reasoning Effort: High)"]
    B -->|"レスポンス + 内部状態"| C["アプリケーションロジック"]
    C -->|"履歴 > しきい値?"| D{"判定"}
    D -- No --> E["チャット継続"]
    D -- Yes --> F["/responses/compact を呼び出し"]
    F -->|"履歴を圧縮"| G["不透明なコンテキストBlob"]
    G -->|"入力に注入"| H["次のリクエスト (低トークン消費)"]

コード:コンパクションループの実装

これらの機能を使用するには、最新の OpenAI Python SDK (v2.11.0 以上) へのアップグレードが必須です。chat.completions から新しい responses 名前空間への移行に注意してください。

import os
from openai import OpenAI
import json

# openai>=2.11.0 であることを確認してください
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

def run_agentic_turn(history, user_input, compact=False):
    """
    GPT-5.2でターンを実行し、オプションで履歴をコンパクション(圧縮)する
    """
    # 1. ユーザー入力を追加
    history.append({"role": "user", "content": user_input})

    # 2. 推論エフォートを明示してGPT-5.2を呼び出し
    response = client.responses.create(
        model="gpt-5.2", 
        reasoning={"effort": "high"}, # オプション: none, low, medium, high, xhigh
        input=history
    )
    
    output_message = response.output[0]
    print(f"Agent: {output_message.content}")
    
    # 3. レスポンスを履歴に追加
    # 注意: メタデータを保持するため、生のモデルダンプを保存します
    history.append(output_message.model_dump())

    # 4. コンパクションロジック (ここがブレイクスルー)
    if compact:
        print("Compacting context... (コンテキスト圧縮中)")
        compacted_response = client.responses.compact(
            model="gpt-5.2",
            input=history 
        )
        
        # 履歴は、継続のために設計された単一の「不透明な圧縮アイテム」に置き換わります
        return [compacted_response.model_dump()]
    
    return history

# 使用例
conversation = []
conversation = run_agentic_turn(conversation, "高頻度取引ボットのPythonバックエンドをドラフトしてください。")
conversation = run_agentic_turn(conversation, "WebSocketハンドラをasyncioを使用するようにリファクタリングして。", compact=True)
conversation = run_agentic_turn(conversation, "次にリスク管理レイヤーを追加してください。") 

ステップバイステップ実装ガイド

1. 推論エフォート (Reasoning Effort) を固定する

デフォルト設定に頼らないでください。GPT-5.2はエンドポイントによってデフォルトが medium だったり none(4o移行時など)だったりします。

  • none を使用: シンプルなチャット、GPT-4oからの移行、レイテンシ重視のタスク。
  • high または xhigh を使用: 複雑な計画策定、コーディングアーキテクチャ設計、詳細なリサーチ。
  • アクション: API呼び出しで reasoning={"effort": "medium"} 等を明示的に設定し、「意図しない思考」によるコスト急増を防いでください。

2. 「スコープ規律」プロンプトの実装

GPT-5.2は高い制御性を持ちますが、同時に非常に意欲的でもあります。エージェントが勝手に機能を捏造(スコープクリープ)するのを防ぐため、新しい XML区切り制約パターン を使用する必要があります。

以下のブロックをシステム指示(instructions パラメータまたは developer ロール)にコピーしてください:

<design_and_scope_constraints>
- Implement EXACTLY and ONLY what the user requests.
- No extra features, no added components, no UX embellishments.
- If any instruction is ambiguous, choose the simplest valid interpretation.
- Do NOT invent new UI elements or tokens unless explicitly requested.
</design_and_scope_constraints>

(訳注:ユーザーの要求のみを正確に実装すること、余計な機能や装飾を追加しないこと、曖昧な指示は最も単純に解釈すること等を指示しています)

3. 「コンパクション」戦略の展開

コンパクションは単なる要約ではありません。状態の保存 (State Preservation) です。

  • タイミング: 主要なマイルストーン(例:モジュールコードの完成)の後、またはコンテキストが約20kトークンを超えた時。
  • 毎回コンパクションしない: レイテンシとコストが増加します。
  • 不透明として扱う: 圧縮されたアイテムをパースしようとしないでください。これはモデル専用の暗号化されたベクトルBlobです。

4. エージェント制御性 (Steerability) の習得

自律ループにおいては、モデルがどのように報告を行うかを制御するために <user_updates_spec> を使用します。これにより「無駄話」を減らし、コンテキストウィンドウをクリーンに保ちます。

<user_updates_spec>
- Send brief updates (1–2 sentences) ONLY when you start a new major phase.
- Avoid narrating routine tool calls ("reading file...", "running tests...").
- Each update must include at least one concrete outcome ("Found X", "Confirmed Y").
</user_updates_spec>

GPT-5.2は単に知能が向上しただけでなく、「制御性 (Controllability)」 において飛躍的な進歩を遂げました。compact コンテキスト機能は、従来の要約による劣化なしに、長期タスクに対する実質的な「無限のメモリ」を提供します。厳格な <scope_constraints> と組み合わせることで、ノイズに埋もれることなく確実にタスクを完遂するエージェントを構築できます。