2026年8月14日時点で、OpenAIのGPT-5.6 モデルガイドは gpt-5.6 エイリアスを Sol に割り当て、Terra を能力とコストのバランス型、Luna をコスト重視の大量処理向けに位置づけています。まずワークフローの各工程で明示的なモデル ID をテストし、成功したタスクごとに品質、レイテンシ、費用を記録します。
再実行可能なタスクセットがすでにあるなら、評価ハーネスは変えません。現在の reasoning.effort と、その1段下の強度を比較してから、Terra、Luna、Sol を候補に加えます。評価基準を満たせない場合や、誤りの代償が大きい場合にだけ上位へ切り替えます。固定タスクセットがない段階では、削減額を見積もったり、新しいオーケストレーション機能を有効にしたりしないでください。
対象範囲は OpenAI API のモデルルーティングと課金です。ローカルの Claude Code や Codex を長時間使う際のコンテキスト整理については、長時間セッションのトークン浪費対策を参照してください。
工程ごとに Sol、Terra、Luna を振り分ける
OpenAIは、複雑な専門作業には Sol、能力と価格の両立には Terra、コスト重視の大量処理には Luna を推奨しています。ただし本番環境での振り分けは、自社のタスクセットで決める必要があります。モデルの位置づけだけでは評価の代わりになりません。
| 工程の種類 | 最初に試す候補 | 上位へ切り替える条件 |
|---|---|---|
| 分類、抽出、形式変換、コード検索 | Terra または Luna。低い推論強度から始める | フィールド精度、再現率、形式準拠率が目標に届かない |
| 頻繁なツール選択と短い判断 | Luna と Sol を同時に評価する | ツール選択の誤りが増えるか、エンドツーエンドの成功率が明確に下がる |
| 長いコンテキストの分析、複雑なオーケストレーション、最終統合 | Sol を基準にして Terra も比較する | 小さいモデルが固定の評価基準を満たせない |
| 誤りの代償が大きい最終操作 | 合格した最小モデルを使い、承認手順を残す | 人手の確認や業務上の統制でも残存リスクを補えない |
エージェントのワークフロー全体を1つのモデルに任せないでください。各工程の入力、利用可能なツール、出力契約、誤りの代償を記録し、工程ごとに独立して振り分けます。抽出と最終判断に別のモデルを使えば、請求額も工程単位で追跡できます。
完了判定には、次の4つのゲートを使います。
| 完了指標 | 要件 |
|---|---|
| タスク結果 | 成功率が現在の基準値を下回らない |
| 重要な挙動 | 必須フィールドとツール選択が評価基準を満たす |
| レイテンシ | p95 が予算内に収まる |
| 請求 | 成功タスクごとに、未キャッシュ入力、キャッシュの読み書き、出力トークン、ツール料金が一致する |
3モデルの単価と長いコンテキストの加算を先に確認する
以下は、2026年8月14日に確認した標準テキスト料金です。単位は100万トークンあたりの米ドルです。料金は変わるため、移行前に各モデルのページを開き直してください。
| モデル | 入力 | キャッシュ済み入力 | 出力 |
|---|---|---|---|
| GPT-5.6 Sol | $5.00 | $0.50 | $30.00 |
| GPT-5.6 Terra | $2.00 | $0.20 | $12.00 |
| GPT-5.6 Luna | $0.20 | $0.02 | $1.20 |
GPT-5.6 のキャッシュ読み取りは未キャッシュ入力料金の0.1倍、キャッシュ書き込みは同料金の1.25倍です。未キャッシュ入力とは、キャッシュから読み取られず、キャッシュにも書き込まれないトークンを指します。入力が272Kトークンを超えると、リクエスト全体の入力料金が2倍、出力料金が1.5倍になります。モデルツールに呼び出し単位の料金がある場合は、ツール料金を別途加算します。
成功タスクあたりのコスト =
(未キャッシュ入力トークン × 入力単価
+ キャッシュ読み取りトークン × キャッシュ済み入力単価
+ キャッシュ書き込みトークン × 入力単価 × 1.25
+ 出力トークン × 出力単価
+ ツール料金) ÷ 成功タスク数
非同期評価、データのバックフィル、優先度の低い処理では、Batch API と Flex processingも比較します。Flex は応答の遅延や一時的なリソース不足と引き換えにコストを抑える方式なので、厳しいリアルタイム要件がある本番経路では使わないでください。
同じタスクで隣接する推論強度を比較する
GPT-5.6 モデルガイドには6段階の reasoning.effort があり、既定値は medium です。移行時は現在の強度を基準にして、まず1段下を試します。固定タスクセットで品質向上が確認できた場合にだけ、上の強度へ移ります。
| 範囲 | reasoning.effort の値 |
|---|---|
| 低強度から既定値まで | none、low、medium(既定値) |
| 高強度 | high、xhigh、max |
OPENAI_API_KEY を設定した後、次の Responses API リクエストで Terra + low の基準値を作ります。
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-terra",
"reasoning": {"effort": "low"},
"input": "チケットから優先度、製品、次のアクションを抽出し、JSONで返してください。"
}'
モデルの選択と推論強度は、同じ評価表にまとめます。
| 候補 | 現在の強度 | 低い強度 | 高い強度 |
|---|---|---|---|
| 現在の本番モデル | 基準値を維持する | 対応していればテストする | 品質の上限を調べる場合だけ使う |
| Terra | テストする | テストする | 品質差を埋められる場合だけテストする |
| Luna | テストする | テストする | 品質差を埋められる場合だけテストする |
| Sol | テストする | 優先してテストする | 効果を測定できた難しいケースに限定する |
| 指標グループ | 記録する内容 |
|---|---|
| 品質 | エンドツーエンドの成功率と評価点 |
| 使用量 | ツール呼び出し回数、入力トークン、出力トークン |
| レイテンシ | p50 と p95 |
| コスト | 成功タスクあたりのコスト |
失敗を解消できないままトークンとレイテンシだけが増えるなら、高い推論強度を既定値にしないでください。
基準には標準モードを使います。明確な品質差が残る、難しく価値の高いタスクでは、同じモデル ID と推論強度のまま reasoning.mode: "pro" を試します。Pro モードではレイテンシが増え、追加のモデル処理で使われたトークンも選択モデルの標準料金で請求されます。品質向上が追加のトークン、レイテンシ、コストに見合わない場合は、標準モードを維持します。
失敗が起きる工程も確認してください。推論強度を下げたとき、権限確認、金額照合、取り消せない操作に誤りが集中するなら、全体の成功率がほぼ同じでも、該当工程のモデルを上げるか人手の承認を加えます。
長時間タスクでは過去の推論を再利用し、コンテキストを圧縮する
Persisted reasoningを使うと、生の推論テキストを公開せず、後続の Responses API リクエストで互換性のある過去の reasoning item(推論項目)を利用できます。GPT-5.6 の reasoning.context は既定で all_turns です。効果があるのは、previous_response_id、conversation、または完全な履歴を通じて、以前の response item(レスポンス項目)がリクエストに渡される場合だけです。最初のリクエストでは current_turn と同じように動作します。
長時間の処理では、persisted reasoning とサーバー側 compactionを組み合わせられます。下記の resp_previous は実際の直前レスポンス ID に置き換えてください。compact_threshold の値は例示です。本番のしきい値は、コンテキストの増加量と回帰テストを基に決めます。
{
"model": "gpt-5.6-terra",
"previous_response_id": "resp_previous",
"reasoning": {"context": "all_turns"},
"context_management": [
{"type": "compaction", "compact_threshold": 200000}
],
"input": "残りのファイルの処理を続け、先に指定した禁止事項を維持してください。"
}
| 確認項目 | 停止またはロールバックする条件 |
|---|---|
| 目標、禁止事項、出力契約 | compaction 後に制約の欠落が増える |
| ツール結果内の ID、金額、タイムスタンプ | 重要な事実を追跡または復元できない |
| 過去の推論とタスク状態 | 誤った前提が残るか、削減効果がデバッグコストを下回る |
過去の推論が不要になったら、reasoning.context を current_turn に設定します。権限、金額、取り消せない状態は構造化データに保存し、不透明な推論項目や圧縮後の出力だけに依存しないでください。
決定論的なデータ処理には Programmatic Tool Calling を使う
Programmatic Tool Callingは、大量の構造化データを取得してから、絞り込み、集計、並べ替えを行う境界の明確な工程に適しています。OpenAIはモデルが生成した JavaScript を、毎回新しく作られる隔離 V8 環境で実行します。このランタイムはトップレベルの await を使えますが、Node.js API とパッケージのインストールには対応していません。ネットワークへ直接接続できず、汎用ファイルシステムもありません。プログラム間の状態保持、サブプロセス、コンソールにも対応していません。
リクエストの tools 配列に programmatic_tool_calling を追加し、プログラムから呼び出せるツールを allowed_callers で指定します。戻り値が安定しているツールには output_schema も設定します。
{
"tools": [
{
"type": "function",
"name": "get_records",
"description": "指定したステータスのレコード数を返します。",
"parameters": {
"type": "object",
"properties": {"status": {"type": "string"}},
"required": ["status"],
"additionalProperties": false
},
"output_schema": {
"type": "object",
"properties": {"record_count": {"type": "number"}},
"required": ["record_count"],
"additionalProperties": false
},
"allowed_callers": ["programmatic"]
},
{"type": "programmatic_tool_calling"}
]
}
たとえば、エージェントが100件のファイルを取得した後は、次の順に処理します。
- ツールが構造化レコードとソース ID を返す。
- コードが日付、種類、ステータス、数値で絞り込む。
- 集計層が該当レコード、統計、ソース対応表だけをモデルへ渡す。
- モデルが差異を説明し、曖昧さを解消して結論を書く。
重複排除、厳密な合計、並べ替え、ページネーションのような決定論的処理はプログラムへ移します。意味に基づく判断、矛盾する証拠、規則の例外はモデルに残し、レビュー用のソースを保持します。
隔離された V8 ランタイムは、ツールが外部へ及ぼす副作用を制限しません。アプリケーションは引き続き program、プログラムが発行したツール呼び出し、program_output を処理し、各イベントを call_id と caller で関連づけます。ツール実行層では呼び出し主体と引数の検証を続け、影響の大きい操作には承認を残す必要があります。
独立した作業だけで Multi-agent ベータ版を有効にする
2026年8月14日時点で、Responses APIのMulti-agentはベータ版です。HTTP を直接使う場合は OpenAI-Beta: responses_multi_agent=v1 を送信し、リクエストボディの multi_agent を有効にします。
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: responses_multi_agent=v1" \
-d '{
"model": "gpt-5.6-terra",
"input": "独立した3つのモジュールを並列にレビューし、矛盾と見落としを整理してください。",
"multi_agent": {
"enabled": true,
"max_concurrent_subagents": 3
}
}'
max_concurrent_subagents の既定値かつ推奨値は3で、ツリー全体におけるサブエージェントの同時ターン数を制限します。API はサブエージェントの総数やツリーの深さを制限しないため、アプリケーション側で総トークン数、ツール呼び出し数、最大実行時間に上限を設けます。Multi-agent は max_tool_calls にも対応していません。このパラメータを総予算の制御に使わないでください。
| ゲート | 要件 |
|---|---|
| 並列性 | 作業が互いに独立し、起動と統合のオーバーヘッドを上回る時間短縮がある |
| 依存関係と書き込み | 同じオブジェクトを変更せず、先行結果にも依存しない |
| 権限 | ツール層で呼び出し主体、引数、操作を再検証する |
| 統合 | メインエージェントが結果を連結するだけでなく、ソース、矛盾、見落としを確認する |
1回の Multi-agent リクエストで設定できるモデルは1つです。すべてのエージェントからリクエストに設定した全ツールが見え、エージェント単位でツールを分離する機能はありません。経過時間、総トークン数、総ツール呼び出し数をまとめて記録します。品質が上がらない場合や、マージの競合で並列化の利点が消える場合は、単一エージェントに戻してください。
安定したプレフィックスを明示的にキャッシュし、読み書きを確認する
GPT-5.6 のプロンプトキャッシュでは、ブレークポイントより前に、完全にレンダリングされた1,024トークン以上のプレフィックスが必要です。prompt_cache_options.ttl が現在対応する値は 30m だけで、既定値も同じです。再利用のたびに30分の TTL が更新され、追加のキャッシュ書き込み料金は発生しません。prompt_cache_key は同一のプレフィックスと併せて照合に使われます。1つのキーに対する合計トラフィックは、おおむね毎分15リクエスト以下に抑えてください。
安定した developer メッセージの末尾にブレークポイントを置きます。変化するユーザー入力による暗黙的な書き込みを防ぐには、explicit モードを使います。
{
"model": "gpt-5.6-terra",
"prompt_cache_key": "support:knowledge-base-v1",
"prompt_cache_options": {
"mode": "explicit",
"ttl": "30m"
},
"input": [
{
"type": "message",
"role": "developer",
"content": [
{
"type": "input_text",
"text": "安定した規則、ツール指示、ナレッジベースの内容...",
"prompt_cache_breakpoint": {"mode": "explicit"}
}
]
},
{
"type": "message",
"role": "user",
"content": "今回のユーザーの質問"
}
]
}
省略した内容は、レンダリング後に1,024トークンへ達する、実データを含む安定したプレフィックスに置き換えてください。例にある短いテキストだけでは、キャッシュエントリは作成されません。
| 位置 | 内容 |
|---|---|
| ブレークポイントの前 | 安定した規則、ツール定義、構造化出力スキーマ、共有知識 |
| ブレークポイントの後 | タイムスタンプ、リクエスト ID、ユーザー入力、今回の検索結果 |
個人情報を含まない、安定して分割可能な prompt_cache_key を使います。トラフィック量が多いワークロードは、決定論的なルールで複数のキーへ分散します。
Responses API は usage.input_tokens_details に cached_tokens と cache_write_tokens を返します。読み取りが少ないまま書き込みが多ければ、ブレークポイントに変化する内容が入っているか、キャッシュが再利用されていません。ブレークポイントを移すか、明示的なキャッシュだけに切り替えるか、その経路のキャッシュを無効にします。
固定タスクセットで段階的に移行する
本番環境での失敗、頻出タスク、高コストなタスクから固定セットを作ります。各サンプルに成功条件、利用可能なツール、禁止操作、許容可能な出力を設定してください。現在の本番モデルの回答だけを正解にしないでください。
| 段階 | 作業 | 次の段階へ進む条件 |
|---|---|---|
| 基準値 | 現在のモデル、推論強度、品質、p95 レイテンシ、コストを記録する | サンプルと評価基準を同じ条件で再実行できる |
| 候補比較 | 評価ハーネスを固定し、隣接する推論強度と3モデルを試す | タスク単位の品質がしきい値を満たす |
| 機能比較 | 推論の再利用と compaction、PTC、Multi-agent、キャッシュを別々に試す | 効果を該当機能に帰属でき、失敗を再現できる |
| 段階的展開 | 合格した工程単位のルートだけを公開し、ロールバックスイッチを残す | オンライン成功率と成功タスクあたりのコストが安定する |
段階的な展開ログは、次の4グループに分けます。
| ロググループ | フィールド |
|---|---|
| モデル設定 | モデル、reasoning.effort、reasoning.mode |
| コンテキストとキャッシュ | reasoning.context、compaction、キャッシュの読み取り・書き込みトークン |
| エージェントとツール | サブエージェント数、ツール呼び出し数 |
| バージョンとロールバック | 料金確認日、ロールバック理由 |
最終モデル名だけを記録しても、コストや品質が変わった原因は特定できません。
トラフィック拡大前に4つのゲートを確認する
| ゲート | 要件 |
|---|---|
| モデルと評価 | 固定タスクセット、成功条件、現在の基準値、工程単位のルートがそろっている |
| 状態とコンテキスト | 権限、金額、取り消せない状態を構造化データに保存し、圧縮後のコンテキストを再現できる |
| ツールとエージェント | PTC 呼び出しで引数と承認を検証し、Multi-agent は総予算内で独立作業を処理する |
| キャッシュと請求 | キャッシュの読み書き、未キャッシュ入力と出力、長いコンテキストの倍率、ツール料金を含める |
トラフィック拡大の前提は、タスク成功率、p95 レイテンシ、成功タスクあたりのコストの3項目すべてに合格記録があることです。1項目でも不合格なら、ロールバックスイッチで以前のモデルと評価ハーネスへ戻します。