OpenAIがGPT-5.6ビルダーガイドを公開、同じ成果で請求額は33ドルから1.33ドルに
- OpenAIが開発者向けのコスト削減マニュアルを公開。同じ検索テストで84点を取るのに、前世代は33.27ドル、今世代の最小モデルは1.33ドルです。
- 本番稼働中の6社がそれぞれ実測データを提出。入力トークンは21%減、未キャッシュ入力は28%減、コストは18分の1になりました。変更したのはモデルではなく、すべて設定のみです。
- そして公式チャートには、本編には書かれていない事実がひとつ。推論レベルを最小にしても、請求額は下がらないどころか上がるのです。
OpenAIが開発者向けのGPT-5.6ビルダーガイドを公開しました。テーマはAgentのコストをどう削るか。モデルの選び方、推論レベルの設定、新しいAPIスイッチ3つの使い方まで、すぐに真似できる設定ばかりです。本番稼働中の6社が、それぞれ実測データを提出しています。
これまでのAgent構築の「デフォルト」を覆す内容です。最高級のフラッグシップモデルを使い、推論を最大限に引き出す——このやり方が当たり前だったのは、長いコンテキストと大量のツール呼び出しに耐えられるのがフラッグシップだけだったからです。5.6世代では、中小モデルが少し考える時間を取れば、前世代のフラッグシップ並みの実力に到達します。値段はほんの一部です。
記事全体のロードマップ:今日から変えられる 6 つのポイント
コスト削減には 2 つの層があります。第 1 層は 2 つのダイヤル。推論レベルとモデル選択です。パラメータを変えるだけで、一行の設定変更で済みます。第 2 層は 3 つのアーキテクチャスイッチと、1 つのキャッシュブレークポイント。リクエスト自体の構成を変えるものです。下の表がこの記事全体の目次です。最初の 2 行が 2 つのダイヤル、後の 4 行が 4 つのスイッチに対応し、各行の後に詳しいセクションがあります。
ダイヤル 1:低レベルが前世代の高レベルに勝つ
GPT-5の世代から、各モデルは同じ目標を追っています。より少ないトークンで、より長い作業をこなすことです。5.6もこの路線を継続し、Harness(モデルの外側にあるスケジューリングコード:リクエストの送り方、ツールの接続方法、ループの回し方)は一切変えずに、性能は向上し、コストは削減されています。
ガイドで最も直接的な例はこれです。Agent ベンチマークの Agents' Last Exam で、Harness を完全に固定したまま、GPT-5.6 Sol の「低」推論が、GPT-5.5 の「高」推論を上回ったということ。レベルはコストを左右する主要なダイヤルです。低レベルで前世代の高レベルに勝てれば、同じ作業の値段が 1 段階そのまま下がることになります。この項目について、ガイドは具体的なスコアを明記していません。
自分で確認できる比較が、2つのベンチマークチャートにあります。次の3組はすべて同じチャート上の実際のデータポイントです。左が前世代、右が今世代です。
2つのチャートではコストの桁が大きく異なります。検索ベンチマークはフル実行で数ドルしかかかりませんが、コーディングインデックスはフル実行で数百〜数千ドルかかります。問題数とタスクの複雑さが違うので、2つのチャートの金額を横に並べて比較しないでください。上の各比較は、すべて同じチャート内のものです。
節約できるのは、いったい何なのでしょうか?それは、無駄な試行錯誤の部分です。データ分析企業の Hex は、モデルを既存の Harness に放り込み、低推論レベルでこれまでで最高の結果を得ました。
GPT-5.6 を既存の Harness に入れたところ、低推論レベルで最高の結果が出ました。データが存在しないことを理解していて、悪い手がかりを追いかけず、より少ないトークンで正解にたどり着きます。
Izzy Miller、Hex の AI リサーチ責任者
「データが存在しないことを理解している」という部分が鍵です。旧モデルは情報が見つからないと、別のキーワードで掘り返し続けます。掘り返すたびに、ツールが返した内容が入力トークンとして計上されます。損切りできるモデルは、まさにこの空回りのターンを節約しているのです。
下げるのは効果的だが、完全にオフにすると逆に高くなる
レベルを下げればコストは下がります。では、いっそ完全にオフにするのが一番お得なのでしょうか。公式の2つのチャートのすべてのデータポイントを並べてみると、答えは「いいえ」です。
下のダイヤルで切り替えられます。推論レベルを選ぶと、4つのモデルの請求額とスコアが同時に変わります。請求額バーの満杯は、GPT-5.5最上位レベルで検索ベンチマークをフル実行した場合の33.27ドルです。すべてのバーはこの物差しで測られています。
そして、一番左のマスに動かすと、直感に反することがわかります。推論をオフにしても、コストは下がりません。2 つのチャートに、それぞれ証拠があります。
- 検索ベンチマークの Sol:推論オフは $1.97 で 69.67 点。最低レベルは $0.50 で 65.32 点。つまり、推論をオフにするという行為はお金を節約せず、むしろ 3.9 倍多く支払って、4.3 点多く得ているだけです。
- コーディングインデックスの Luna:推論オフは $123.66 で 37.30 点。最低レベルは $74.84 で 42.40 点。この組み合わせは高くて悪い。65% 多く払って、スコアは 5.1 点低いのです。
もう一方にも転換点があります。Lunaは検索ベンチマークで「最高」から「最上位」に上げると、請求額は$1.33から$1.42に増え、スコアは84.04から83.25に下がります。レベルを最大にしても、スコアが上がるとは限りません。
モデルに考えさせなければ、ツールを多用して何度も試行錯誤しながら答えにたどり着くしかありません。そして、ツールが返す内容は毎回入力トークンとして計上されます。考えること自体にはコストがかかりますが、「遠回りをしない」ことを買っているのです。この計算は、難しいタスクではたいてい割に合います。
レベルの調整は、低い方から上げて試すのが正解です。請求額とスコアの 2 本の線を一緒に見ながら、曲がり角で止めます。逆に、上から下へ削るのは間違いです。最低レベルはコスパが最も良いことが多く、一番左の「完全にオフ」は、この 2 つのチャートではどちらも割に合いません。
ダイヤル 2:小型モデルなら 25 倍お得
レベルのダイヤルを回したら、次はモデル選びです。GPT-5.6 ファミリーには 3 つあります。Sol(フラッグシップ)、Terra(中規模)、Luna(小型)です。
かつて中小モデルは、端っこの雑用専用でした。長いコンテキストや大量のツール呼び出しに耐えられず、タスクの連鎖が長くなると壊れてしまったからです。今世代は違います。テスト時計算のおかげです。
モデルに回答の前に少し考える時間を与えること。考える時間はすなわち計算リソースであり、お金です。同じ生徒が答案を出す前に 10 分余分にチェックするのと、もっと賢い生徒に変えるのとでは、これは別のスコアアップ方法です。小型モデルは前者で、モデル自体は大きくなっていません。
その結果、Luna や Terra は GPT-5.4、GPT-5.5 のレベルに達することがよくあります。値段ははるかに安いままです。ガイドが名指しした比較は、BrowseComp(「ニッチな事実を検索できるか」を試すベンチマーク)からのものです。
ドキュメントエージェント企業の Hypha は、別の角度からの数字を提供しています。
Luna は GPT-5.5 の抽出精度の 98% を維持しつつ、コストは 18 分の 1 です。これにより、当社のエージェントは高品質なドキュメント理解を手頃な価格で利用でき、はるかに多くのシナリオでコストが見合うようになりました。
Serhii Shchoholiev、Hypha の Agent エンジニアリング責任者
小型モデルはワークフローのどの部分に組み込むべきか
次の 3 種類の作業が最適です。量が非常に多いもの、ユーザーが待っているもの(レイテンシに敏感なインタラクション)、エージェントのワークフローで繰り返し行われるステップです。
ガイドが挙げる例は、ある法律テック企業のものです。エージェントが分析する前に、手書きのメモをテキストに解析する必要があります。この解析ステップには判断力は不要ですが、これまではワークフロー全体と一緒にフラッグシップモデルを使っていました。これを単独で切り出して Terra か Luna に変えれば、確実にお金が節約できます。そして、実際に判断が必要なステップは、これまで通り Sol を使います。
この 2 つのチャートは OpenAI 自身が作成したものです。チャートには自社モデルに加えて、Claude Fable 5、Claude Opus 4.8、Claude Mythos Preview、Gemini 3.1 Pro Preview も記載されています。BrowseComp のチャートでは、競合他社は横の基準線としてのみ登場し、スコアのみ(Claude Mythos Preview 87.9%、Gemini 3.1 Pro Preview 85.8%、Claude Opus 4.8 84.4%)で、対応するコストは非公開のため、上記の価格との比較はできません。本記事の自作チャートは、GPT-5.6 ファミリー内部のレベルとコストの関係のみを示しています。
ワークフローを分解して、判断力を必要としない機械的なステップ(解析、抽出、分類、フォーマット変換、翻訳)を見つけ、それだけを Terra か Luna に切り替えましょう。判断が必要なステップは Sol に残します。チェーン全体で同じモデルを使うのは、前世代の習慣です。
3 つのアーキテクチャスイッチ。うち 2 つでほぼ 3 倍に
モデルとレベルの 2 つのダイヤルを回し切っても、効果はそこまでです。残りの削減余地はアーキテクチャにあります。具体的には、エージェントが毎回コンテキストに何を入れるか、です。
ガイドは効率化の方法を 3 つに分類し、GPT-5.6 はこの 3 つを備えた状態でエンドツーエンドでトレーニングされていると強調しています。モデルはそもそもこれらの仕組みと連携する方法を知っているので、外側でテクニックを駆使して騙す必要はありません。
推論プロセスをターン全体で保持し(永続的推論)、ネイティブ圧縮で長い会話を短くします。モデルは毎回過去のことを最初から考え直す必要がなく、コンテキストが切り詰められても手がかりを失いません。
ネイティブのマルチエージェントオーケストレーション:メインエージェントが分割可能な作業を派遣し、複数の子エージェントが同時に実行し、最後に集約します。
プログラムによるツール呼び出し:フィルタリング、集約、オーケストレーションなど、知性を必要としないアクションをモデルのコンテキストウィンドウの外に移し、モデルのトークンは判断だけに使います。
この 3 つを一緒に有効にするとどれだけ違うのか、ガイドは具体的な例を挙げています。ARC-AGI-3 ベンチマークで、GPT-5.6 Sol は標準の Harness で 13.3%。「推論の保持」と「圧縮」の 2 つのスイッチをオンにするだけで、スコアは 38.3% に跳ね上がり、同時に出力トークンも約 6 分の 1 に減少しました。
スコアは約 3 倍になったのに、トークンは 6 分の 5 も減りました。この 2 つの数字が同時に現れるということは、節約されたのは「考え直す」「コンテキストを再構成する」といった無駄な作業だということです。
これら 3 つは 5.6 では設定変更で済みます。モデルを変える必要も、Harness を書き換える必要もありません。次の 4 つのセクションでは、各スイッチの変更箇所、設定値、有効にすべきでないタイミングを説明します。
スイッチ 1:毎ターン最初から考え直させない
最初のスイッチは、長いタスクで最も高くつく無駄を治します。モデルが以前やったことを無駄にやり直すことです。
永続的推論:前のターンの思考を次のターンへ
これまでモデルの思考プロセスは、答えを出すと捨てられていました。次のターンでは、会話履歴しか見えず、自分が前のターンでどう考えたかは見えません。そこで、最初から考え直します。5.6 では、前の数ターンの推論エントリをそのまま次のターンのコンテキストに持ち込めます。パラメータは reasoning.context です。
| 値 | 動作 | デフォルト |
|---|---|---|
current_turn | 今回のターンの推論のみを有効にし、前のターンの推論を次のサンプリングに持ち込まない | GPT-5.6 より前のモデル |
all_turns | 前のターンで一致する推論エントリを次のサンプリングに一緒に持ち込む | GPT-5.6 ファミリー |
auto | 選択したモデルのデフォルト値に従う。このフィールドを省略すると auto と同じ | — |
2 つの落とし穴があります。1 つ目、all_turns は、このリクエストが以前のレスポンスにアクセスできる場合にのみ有効です。previous_response_id で連結するか、完全なレスポンス履歴を再生する必要があります。最初のリクエストでは、以前の推論がないため、両方の値に違いはありません。2 つ目、これは連続性を提供するだけです。それらの推論エントリは暗号化されており、読むことはできません。API は推論テキストを返しません。モデルが何を考えたかは見えません。
ネイティブ圧縮:しきい値に達すると自動でパッケージ化
会話はどんどん長くなります。ネイティブ圧縮の方法は、ラインを設定することです。リクエストに context_management を追加し、compact_threshold(例:20 万トークン)を指定します。レンダリングされたコンテキストがこのラインを超えると、サーバーサイドで自動的に圧縮が実行され、同じレスポンスストリーム内で「圧縮エントリ」を出力し、その前のコンテキストを切り詰めて、推論を続行します。別途 API を呼び出す必要はありません。
ここで最も誤解されやすいのは、圧縮ブロックの性質です。それは不透明で、人間には読めません。公式ドキュメントには「opaque and not intended to be human-interpretable」とあります。「モデルに会話の要約を書かせる」のとは別物です。要約は自然言語であり、何を書くか、何を捨てるかはモデルがその場で決めます。圧縮エントリは、モデルがトレーニング中にパッケージ化と展開の方法を学んだ構造で、それまでの状態と推論をより少ないトークンでそのまま運びます。
部屋いっぱいの書類を真空圧縮袋に入れるようなものです。袋は開けられず、中身も見えませんが、モデルは次のターンで開ければ、それまでに何があったかを知っています。要約を書くのは、人間に要点リストを手書きしてもらうようなもので、書き手が重要でないと思ったものは永遠に失われます。
while keep_going:
response = client.responses.create(
model="gpt-5.6",
input=conversation,
store=False,
context_management=[{"type": "compaction", "compact_threshold": 200000}],
)
conversation.extend(response.output)
conversation.append({"type": "message", "role": "user",
"content": get_next_user_input()})
store=False は、ゼロデータ保持(ZDR)の要件を満たすためです。また、/responses/compact という独立したエンドポイントもあります。タイミングを自分で制御したいシナリオ向けです。コンテキストウィンドウ全体を送信すると、圧縮されたウィンドウが返ってきます。完全にステートレスです。これを使うときの絶対ルールは、返されたウィンドウをそのまま次の呼び出しに渡し、自分で切り詰めないことです。そのウィンドウには、圧縮エントリに加えて、前のターンで保持する必要があるエントリも残っているからです。
逆に、サーバーサイド圧縮と previous_response_id を組み合わせて使用する場合も、エントリを手動で切り詰めないでください。ステートレスな入力配列モードの場合のみ、直近の圧縮エントリより前のものを破棄して、リクエストボディを小さくし、テールレイテンシを低く抑えることができます。
長いタスク(長時間実行されるコーディングエージェント、深いリサーチ)では、reasoning.context が all_turns になっていることを確認しましょう。5.6 ではデフォルトですが、初期のモデルから移行したコードで current_turn がハードコードされていると、このスイッチを無効にしているのと同じです。圧縮は、リクエストに context_management を追加し、compact_threshold を設定します。
スイッチ 2:モデルにコードを書かせてデータを絞り込む
長いタスクでの無駄がなくなっても、もう 1 つよくある無駄があります。コンテキストが中間結果でパンクすることです。
エージェントの仕事は実際には 2 種類あります。一つは判断力を要するもの。この契約書に問題はないか、調査を続けるべきか。もう一つは純粋なデータの運搬。フィルタリング、マージ、ソート、重複排除、合計です。問題は、これまでこの 2 種類の作業が両方ともモデルのコンテキスト内で行われていたことです。
ガイドの例はこうです。エージェントが 100 件のファイルを取得し、日付で絞り込み、関連するトランザクションを見つけ出します。従来の方法では、100 件の内容がすべてコンテキストに入り、モデルが 1 件ずつ読みます。結果として、遅い、高い、そしてコンテキストがパンパンになるにつれて、モデルは余計に混乱する(この現象はコンテキストロットと呼ばれます)。
プログラムによるツール呼び出し(Programmatic Tool Calling)は、別の方法を取ります。モデルが JavaScript コードを直接書いて、これらのツールを操作します。このコードは、互いに依存しない呼び出しを並行して実行でき、ループや条件分岐も書けます。中間結果は OpenAI がホストする実行環境に残り、最終的に絞り込まれた結果だけがモデルに返されます。
そのコードはどこで実行されるのか
まったく新しい、分離された V8 ランタイムで実行されます。毎回の実行はクリーンな状態から始まります。この環境の境界は明確に定義されています。
- あるもの:JavaScript。トップレベルの
awaitをサポート。このリクエストで開放したツールを呼び出せます。text(...)やimage(...)で結果を出力できます。 - ないもの:Node.js、パッケージのインストール、ネットワークアクセス、一般的なファイルシステム、子プロセス、console、そして実行間の状態保持。
- あなたの関数は引き続きあなたのサーバー上で実行されます:プログラムがあなたのツールを実行するときに一時停止し、呼び出しをあなたに渡します。あなたが実行して結果を元の
callerフィールドと一緒に返すと、プログラムは続行します。1 回の実行で何度も一時停止できます。
コードから呼び出せるツールは、あなたが決められます。各ツールに allowed_callers を指定します。
| 値 | 動作 |
|---|---|
未指定、または ["direct"] | モデルが直接呼び出すことのみ可能 |
["programmatic"] | プログラム内のコードからのみ呼び出し可能 |
["direct","programmatic"] | どちらの方法でも可能 |
コードから呼び出せるツールの種類は次のとおりです。通常の関数とカスタムツール、MCP ツール、apply_patch、ローカルおよびホスト型のシェル、コードインタープリター。MCP ツールの承認ポリシーはこれまで通り有効で、承認が必要な設定になっている場合、プログラムはそこで停止して承認を待ちます。
{
"type": "function",
"name": "get_inventory",
"parameters": {
"type": "object",
"properties": { "sku": { "type": "string" } },
"required": ["sku"],
"additionalProperties": false
},
"output_schema": {
"type": "object",
"properties": {
"sku": { "type": "string" },
"available_units": { "type": "number" }
},
"required": ["sku", "available_units"],
"additionalProperties": false
},
"allowed_callers": ["programmatic"]
}
parameters は入力引数を、output_schema はこの関数が返す JSON の形を定義します。両方を明確に定義することで、モデルが書くコードは推測ではなく、確実にフィールドを取得できます。使うべきでない時
このスイッチは、一度オンにすればずっと得をするわけではありません。公式はタスクの形式ごとに比較表を提供しています。判断基準は、この部分の制御フローが予測可能かどうか、コードが結果を小さくできるかどうかです。
| タスクの形式 | 使用すべき方法 |
|---|---|
| 1 回のクエリまたは 1 つのアクション | 直接呼び出し |
| 複数の結果があり、コードでフィルタ、結合、ソート、重複排除、集約、検証ができる | プログラムによる呼び出し(プログラムがより小さな構造化結果を返せる場合) |
| 前後に関連があるが、データの流れが予測可能な連続呼び出し | プログラムによる呼び出し(コードが後続の引数を推論でき、失敗時の動作が明確に定義されている場合) |
| 適応的検索、意味的判断。各結果が次の決定に影響を与える | 直接呼び出し |
| 書き込み操作、承認が必要なアクション | デフォルトで直接呼び出し。明確な承認境界を維持するため |
| 最終的な引用確認、ネイティブ成果物の検証 | 直接呼び出し。プログラムが元の出力を完全に保持し、項目ごとに検証した場合を除く |
両方のモードを有効にする場合は、モデルにどの部分でどの方法を使うかを指示する必要があります。「プログラムによるツール呼び出しを効率的に使え」といった指示は効果がありません。境界が示されていないからです。公式が用意した、そのまま使えるテンプレートがあります。
<tool_orchestration> Use Programmatic Tool Calling for [bounded stage] using only [eligible tools]. Run independent calls concurrently when safe. Use only documented tool input and output fields. Process and reduce the intermediate results, then emit exactly [program result shape], including the evidence needed for the final answer. Stop when [condition] is met. Retry transient failures at most [R] times. Do not repeat completed calls or perform side-effecting actions. If a required result is still missing, return a clear structured failure. Use direct tool calls for [semantic judgment, approval, or final validation]. </tool_orchestration>
金融リサーチ企業の Rogo は、これを決算書の取得、ツールの調整、数値の計算という一連の作業に適用しました。
金融リサーチで難しいのは、ファイルを確実に取得し、ツールを調整し、数値を正確に計算することです。当社の評価では、GPT-5.6 はプログラムによるツール呼び出しを使用して、従来と同じ評価基準に達しつつ、入力トークンを 21% 削減しました。これが「金融リサーチについて話せるエージェント」と「実際に金融リサーチを完了できるエージェント」の違いです。
Alex Wang、Rogo 応用 AI チーム
リクエストに programmatic_tool_calling というホスト型ツールを追加し、各ツールに allowed_callers を指定し、関数に output_schema を追加します。両方のモードを有効にする場合は、上記の <tool_orchestration> テンプレートで境界を明確にします。書き込み操作や承認が必要なアクションはコードに渡さないでください。
スイッチ 3:メインエージェントが作業を並行処理
決定的な作業を外に移せるなら、分割できる作業も同時に実行すべきです。
1 つのタスクが、互いに依存しないいくつかの部分に分割できるなら、単一のエージェントは 1 つずつ順番に処理するしかありませんが、複数のエージェントは同時に作業を開始できます。5.6 はこのオーケストレーションを API に組み込みました。メインエージェント(/root と呼ばれる)がタスクの分割、派遣、結果待ち、最終的な回答の集約を行います。アプリケーション側でオーケストレーションロジックを書く必要はありません。
Qualia は、多数のオープンなリサーチクエスチョンをエージェントチームに与えて実行しましたが、GPT-5.6 Sol は最初から正確でした。GPT-5.5 から明らかに向上しており、テストしたほぼすべてのモデルよりも速く、すぐに当社のデフォルトの OpenAI モデルになりました。
E Chi、Quadrillion 創業者
GPT-5.6 は、OpenAI の中で最も優れたオーケストレーターだと思います。6 つの要件(書く、作る、そしてそのすべてを説明する)を一度に渡しても、手がかりを見失わず、品質も崩れませんでした。
Jon Bell、Obvious 共同創業者兼チーフプロダクトオフィサー
利点は 3 つあり、それぞれ別のものです。並列実行は、ウォールクロックタイムを節約します。コンテキストが分離されているため、各子エージェントは明確に境界が定められたタスクだけを受け取り、互いに無関係な作業が同じコンテキスト内で競合することがなく、精度も向上します。調整はモデルが行います。生成、メッセージ受け渡し、待機はすべて自己スケジューリングです。
有効化と管理方法
| 変更箇所 | 書き方 |
|---|---|
| スイッチ | multi_agent.enabled: true。現在はベータ版で、リクエストに responses_multi_agent=v1 を含めます |
| 並行上限 | max_concurrent_subagents。デフォルトは 3で、公式はほとんどのシナリオで 3 を推奨。この数は、ツリー全体で同時にアクティブな子エージェント(孫エージェント含む)を管理し、ルートエージェントは含みません |
| 上限 | ツリーの深さと子エージェントの総数に固定上限はありません |
| いつ派遣するか | developer message を 1 行追加。ルートエージェントへの指示に追加で効果を発揮します |
モデルは「何人派遣するか、いつ派遣するか」を自分で判断しますが、制御も可能です。公式が用意した、保守的と積極的な 2 つの文言を、そのままプロンプトに貼り付けられます。
保守的:ユーザーが明示的に要求した場合のみ派遣 Do not spawn subagents unless the user explicitly asks for subagents, delegation, or parallel agent work. 積極的:並列処理が速度や品質を明らかに向上させる場合は積極的に派遣 Proactive Multi-agent delegation is active. Use subagents when parallel work would materially improve speed or quality.
実行中は、出力に 6 種類のコラボレーションアクションが表示されます。これらはサーバーサイドでホストされており、アプリケーションが実行したり、結果を返したりする必要はありません。
| アクション | 説明 |
|---|---|
spawn_agent | 子エージェントを生成し、最初のタスクを割り当てる |
send_message | 既存のエージェントにメッセージを送信(新しいターンを開始しない) |
followup_task | ルート以外のエージェントにタスクを追加し、そのターンを開始または再開する |
wait_agent | 自分のメールボックスに動きがあるまで待機する |
interrupt_agent | 別のエージェントが実行中のターンを中断する(コンテキストは削除しない) |
list_agents | 現在のツリー全体、各エージェントの状態、最後のタスクメッセージを取得する |
使うべきでない 4 つのケース
このスイッチには、明確に避けるべき 4 つのシナリオがあります。
- 各ステップが前のステップに直接依存している。そもそも順序だった推論チェーンであり、分割できません。
- タスクが小さく、1 回で完了する。エージェントを派遣するオーバーヘッドの方が、作業自体よりも大きい。
- 複数のエージェントが同じ可変リソースを奪い合う。共有状態への頻繁な書き込みは、並列処理では競合を引き起こすだけです。
- 固定された決定的な実行グラフが必要。モデルがスケジューリングするということは、実行パスが完全には予測できないことを意味します。
また、全体の処理時間が特定の遅い外部操作に依存している場合、エージェントを増やしても速くなりません。
マルチエージェントを有効にすると、これらも変わります
公式ドキュメントにはいくつかの制限が列挙されており、最初の 1 つは前のセクションで説明した圧縮に直接影響します。
- 圧縮が自動的に有効になります。
multi_agent.enabledをtrueに設定すると、サーバーサイド圧縮が暗黙的に有効になります。リクエストでcontext_managementを設定していなくてもです。圧縮はルートエージェントと各子エージェントにそれぞれ独立して適用され、それぞれのコンテキストを保護します。しきい値を変更したい場合は、明示的にcompact_thresholdを記述してデフォルトを上書きできます。 - 独立した
/responses/compactエンドポイントは使用できません。圧縮のタイミングを自分で制御する方法は、マルチエージェントではサポートされていません。 reasoning.summaryはサポートされていません。max_tool_callsはサポートされていません。このフィールドでツール呼び出し回数を制御していた場合は、マルチエージェントを有効にする前に別の方法を検討してください。
ChatGPT の ultra レベルは、この仕組みの上に成り立っています。BrowseComp のチャートでは、これは独立したポイントとして表示されています。GPT-5.6 Sol Ultra の最上位レベルは 92.18 点で、$12.17。Sol 単独の最上位レベルの 90.36 点より 1.8 点高く、請求額は約 2 倍です。
multi_agent.enabled を有効にし、max_concurrent_subagents はデフォルトの 3 のままにし、上記の developer message で派遣タイミングを定義します。まず、タスクが本当に独立した部分に分割できるかどうかを確認してください。分割できないタスクでこのスイッチを有効にすると、トークンを調整に浪費するだけです。
最後のスイッチ:キャッシュブレークポイントの設定ミスはさらに損をする
最初の 3 つのスイッチは、純粋に得をします。最後の 1 つは違います。損をする可能性があります。
ガイドにはキャッシュに関する良いニュースが 2 つ書かれています。モデルファミリー全体のキャッシュ生存時間が少なくとも 30 分に延長され、キャッシュブレークポイントをコンテキスト内で決定的に設定できるようになりました。Ploy の実測は次のとおりです。
29,000 トークンの共有プロンプトにキャッシュブレークポイントとワークスペースごとのキーを追加したところ、未キャッシュ入力が 28% 削減されました。30 分のキャッシュウィンドウも大きな進歩です。エージェントは複数回の実行にわたって同じコンテキストを再利用でき、毎回最初から読み込む必要がありません。
Lorenzo Gentile、Ploy の AI エンジニア
しかし、公式ドキュメントの比較表には、ガイドが触れていない事実が示されています。GPT-5.6 はキャッシュの一致方法を変更しました。
| GPT-5.6 以降 | 初期のモデル | |
|---|---|---|
| 一致方法 | ブレークポイントでのみ正確に一致 | 一致するプレフィックスを自動的に最大限再利用 |
| 明示的ブレークポイント | サポート(暗黙的キャッシュも同時に有効) | サポートなし、全自動 |
| 最小キャッシュ可能プレフィックス | 1,024 トークン | 1,024〜2,048 トークン(モデルによる) |
| キャッシュ書き込み料金 | 未キャッシュ入力価格の 1.25 倍 | 追加料金なし |
| 生存時間 | 正確に 30 分。prompt_cache_options.ttl で設定 | モデルによって異なる |
デフォルトでは、システムは暗黙的なブレークポイントを最新のユーザーまたはツールメッセージに配置し、古いモデルのように自動的に最も長い一致プレフィックスを探して再利用しません。3 段階の価格設定は、3 つの文章で説明できます。
この 2 つを組み合わせると、損をする経路が見えてきます。プロンプトが「数万字の安定した指示 + タイムスタンプ + ユーザーの質問」だとします。何も設定しないと、次のようになります。
ブレークポイントがどのコンテンツブロックに設定されていても、そのブロックとその前にレンダリングされたすべてのコンテンツが再利用可能なプレフィックスになります。したがって、ルールは 1 つだけです。毎回変わらない部分を見つけ、その最後にブレークポイントを置きます。
{
"model": "gpt-5.6",
"prompt_cache_key": "support:knowledge-base-v1",
"prompt_cache_options": { "mode": "explicit" },
"input": [
{
"type": "message",
"role": "developer",
"content": [
{
"type": "input_text",
"text": "Follow the shared support policies and reference material...",
"prompt_cache_breakpoint": { "mode": "explicit" }
}
]
}
]
}
mode: "explicit" は、デフォルトの暗黙的ブレークポイントをオフにし、毎回変わる末尾がキャッシュに書き込まれるのを防ぎます。注意:explicit を設定しても明示的なブレークポイントを 1 つも設定しない場合、このリクエストはキャッシュを完全に使用せず、書き込み料金も発生しません。ブレークポイントは複数設定できます。プロンプトの異なる部分の変更頻度が異なる場合(共有指示は非常に安定、参考資料は時々更新など)に使用します。これにより、毎回のリクエストで最も長い未変更プレフィックスを再利用できます。ただし、2 つの上限があることに注意してください。1 回のリクエストで最大 4 つの新しいキャッシュを書き込めます(4 つを超えるブレークポイントがある場合、最後の 4 つだけが書き込まれます。暗黙的モードでは、最新メッセージのブレークポイントが最初に 1 枠使用します)。キャッシュ読み取り時は、直近の 50 個のブレークポイントのみを遡って確認できます。複数のブレークポイントが一致する場合、サーバーは最も長い一致プレフィックスから読み取ります。
3 つのモードの選択方法:暗黙的(デフォルト)は、会話形式でコンテンツを追加し、前の履歴が変わらないシナリオに適しています。暗黙的 + 明示的ブレークポイントは、共有プレフィックスと増加する履歴の両方を再利用したい場合に適しています。明示的のみは、プレフィックスが安定していて、後ろが毎回異なり、ほとんど再利用されないシナリオに適しています。
レイテンシに関する注意点もあります。関連するリクエストに同じ prompt_cache_key を設定すると、それらが同じ推論マシンに割り当てられる可能性が高まります。そのマシンには以前書き込まれたプレフィックスが存在するため、レイテンシも低下します。
prompt_cache_breakpoint を安定した内容の最後のコンテンツブロックに設定し、安定した prompt_cache_key を設定します。まず、ブレークポイントより前の内容が本当に 1 文字も変わらないことを確認してください。タイムスタンプ、ランダム ID、ユーザー名が混ざっていると、毎回 1.25 倍の価格で誰も読まないキャッシュを書き込むことになります。プレフィックスが 1,024 トークン未満の場合は、キャッシュにまったく入りません。
6 つの変更点のパラメータ早見表
この記事全体で持ち帰れるものは、下の表です。
| 変更内容 | 設定場所 | 値 / デフォルト | 公式の効果 |
|---|---|---|---|
| 推論レベル | reasoning.effort | 最低レベルから上げて試す。上から下げない | 低レベルが前世代の高レベルに勝利 |
| 小型モデルへの変更 | model | 機械的なステップは Terra / Luna、判断は Sol | 同じスコア帯で $33.27 → $1.33 |
| 永続的推論 +ネイティブ圧縮 | reasoning.contextcontext_management | all_turns(5.6 のデフォルト)/ current_turn / auto{"type":"compaction","compact_threshold":200000} | 両方オン:13.3% → 38.3%、出力トークン約 6 分の 1 |
| プログラムによるツール呼び出し | programmatic_tool_calling ツールを追加 + 各ツールの allowed_callers | direct / programmatic / 両方 | 入力トークン 21% 減 |
| マルチエージェント | multi_agent.enabled | true。max_concurrent_subagents はデフォルト 3(ベータ版) | ultra レベルが BrowseComp で 92.18 点 |
| キャッシュブレークポイント | prompt_cache_breakpoint + prompt_cache_key | 安定したプレフィックスの最後に設定。ttl は 30m のみ | 未キャッシュ入力 28% 減 |
公式ドキュメントにのみ記載されている制限
- キャッシュプレフィックスが 1,024 トークン未満の場合は、キャッシュにまったく入りません。この数値は、ブレークポイントまでのレンダリングされたプレフィックス全体を指し、マークしたブロックだけではありません。
- 各
prompt_cache_keyのトラフィックは、1 分あたり約 15 リクエストに制御してください。超えるとヒット率が下がります。大規模なトラフィックでは、安定した決定的なキーでシャーディングしてください。 - 再利用すると 30 分の寿命がリセットされ、リセット時の書き込み料金は発生しません。30 分は書き込み時点から計算され、再利用のたびに再計時されます。
- 子エージェントの派遣には、余分なトークンが消費されます。分割できないタスクや、同じ共有状態への頻繁な書き込みが必要なタスクでは、有効にしても調整にお金を払うだけです。
- プログラムによるツール呼び出しのサンドボックスには、ネットワーク、ファイルシステム、パッケージのインストール機能がなく、実行後も状態は保持されません。コードは、このリクエストで開放したツールを介してのみ外部とやり取りできます。
- 1 回のリクエストで最大 4 つの新しいキャッシュを書き込め、読み取り時は直近の 50 個のブレークポイントのみ遡れます。ブレークポイントを設定しすぎると、最後の 4 つだけが書き込まれます。
- マルチエージェントを有効にすると、サーバーサイド圧縮が暗黙的に有効になり、
/responses/compactエンドポイント、reasoning.summary、max_tool_callsはサポートされなくなります。これが最も踏みやすい落とし穴です。圧縮を有効にしたつもりがなくても、自動的に有効になっています。
キャッシュミス時の 4 つのチェック項目
| 症状 | 確認事項 |
|---|---|
cached_tokens が 0 | ブレークポイントまでのプレフィックスが 1,024 トークン以上あるか。以前に同じプレフィックスを書き込んだリクエストがあるか。関連するリクエストが同じ prompt_cache_key を使用しているか |
| 毎回のリクエストでキャッシュを書き込んでいる | ブレークポイントより前に、タイムスタンプ、変動するユーザー入力、ツール呼び出し履歴が混在していないか。明示的ブレークポイントを安定したプレフィックスの末尾に移動する |
| 読み取りと書き込みの両方がゼロでない | 暗黙的モードでは正常(古いプレフィックスを読み、新しい追加コンテンツを最新のブレークポイントに書き込む)。新しいコンテンツをキャッシュしたくない場合は、明示的のみに切り替える |
| 明示的を使用しているのにヒットしない | 少なくとも 1 つのコンテンツブロックに prompt_cache_breakpoint が設定され、その時点までのプレフィックスが 1,024 トークンを満たしているか確認する |
ガイドの締めくくりは、この表の要約です。これまで毎ステップ最先端モデルが必要だった作業が、今では小型モデルへの変更、推論レベルの調整、アーキテクチャ上の選択により、ほんのわずかなコストで同等以上の結果を出せるようになりました。
OpenAI が Agent の請求額を 25 倍削減する 6 つのスイッチを公開
Agent を本番稼働させている 6 社の実測データを基に、今日から使える 6 つのスイッチを図解で解説します。
↓ 一枚で完結 · 動く図あり
OpenAI の『ビルダーズガイド』は、Agent(自動で作業する AI プログラム)のコストを下げるためのマニュアルです。これまで Agent を構築する際は、最高級のフラッグシップモデルを使い、推論を最大限に引き出すのがデフォルトでした。長いタスクに耐えられるのはフラッグシップだけだったからです。GPT-5.6 には 3 つのレベルがあり、フラッグシップの Sol、中規模の Terra、小型の Luna があります。中小モデルも少し考える時間を取ればフラッグシップ並みの実力に到達し、請求額はほんの一部です。
コスト削減の第一歩として、「考えること」を完全にオフにしたくなるかもしれません。しかし、OpenAI 自身のベンチマークチャートは反対のことを示しています。推論をオフにしても、請求額は一度も下がっていません。
レベルの調整は、最低レベルから上げて試し、請求額とスコアを一緒に見ながら、曲がり角で止めます。
レベルとモデルに加えて、GPT-5.6 は 3 つのことをモデルに直接トレーニングしています。推論をターン全体で保持すること、データ運搬の作業をコードに実行させること、分割可能なタスクを複数のエージェントに並行処理させることです。これらはすべて設定レベルの変更で、モデルを変える必要も、スケジューリングコードを書き換える必要もありません。
6 つのスイッチは 2 つの層に分かれます。2 つはダイヤル(推論レベル、モデル選択)、4 つは設定スイッチです。すべて設定変更で、モデルを変える必要も、スケジューリングコードを書き換える必要もありません。
✔ 長いタスクでは、モデルが以前考えたことを記憶し、毎回やり直さない
✔ ツールが一度に大量のデータを返す場合は、モデルにコードを書かせて外で絞り込み、結果だけを返す
✔ 変わらない内容をリクエストの先頭に置くと、キャッシュを再利用できる
✘ タイムスタンプやランダムな番号など、毎回変わる内容は、キャッシュの不変部分に入れない。お金の無駄になる
小互の Agent が一日中フル稼働
でも請求額の伸びは効果より速い
推論オフ
$1.97
最低レベル
$0.50
同じ検索問題
考えない分、試行錯誤が増えてツール代がかさむ
前世代フラッグシップ
$33.27
今世代の小型モデル
$1.33
同じスコア 84 点前後
25 倍お得
スコアはほぼ変わらず、小さなタスクは小型モデルへ
同じテスト モデルは変えず
13.3% → 38.3%
文字数はむしろ 6 分の 1 に
- × 前のターンの思考を保持
- × モデルにコードを書かせてデータを絞り込む
- × 複数のエージェントを同時実行
キャッシュブレークポイントも落とし穴
ブレークポイントが末尾 ✕
毎回書き直し
1.25 倍の価格
ブレークポイントが安定箇所 ✓
キャッシュヒット
0.1 倍の価格
6 つのスイッチ、すべて設定項目
数値は OpenAI の自己測定。本番投入前には必ず自社で再測定を
終小互解説サイト · best.xiaohu.ai