この記事は AIHubMix が作成しました。内容は 2026年10月27日時点の情報です。料金とパラメータのルールは OpenAI の GPT-6 移行ガイドと GPT-6.1 Terra のモデルページ、エラー文とゲートウェイの挙動は、同日に AIHubMix がメイン ID gpt-6.1-terra へ短いプロンプトを送って確認した結果によります。実測は短いプロンプトでの結果で、より長いプロンプトでは変わる可能性があります。
TL;DR
- 移行そのものは
modelをgpt-6.1-terraにする1行です。何が起きるかは、リクエストを運ぶプロトコルで変わります。 - Responses API では effort が効きます。
temperatureとtop_pは、effort がnoneのとき以外は HTTP 400 になります。 - AIHubMix の Chat Completions 経由では、同じ
temperatureが 200 で通ります。reasoning_effortは短いプロンプトでは差が出ませんでした(2026年10月27日の実測)。 - 厄介なのは 200 が返るほうです。Chat Completions では effort がモデルに届かず、キャッシュは経路ごとに分かれ、Messages では thinking の設定が反映されません。
- 料金は OpenAI の list と同じで、100万トークンあたり入力 $1、キャッシュ読み出し $0.05、出力 $5 です。30分のキャッシュ書き込み $1.25 は OpenAI が公表している単価で、AIHubMix のページにはキャッシュ書き込みの単価がありません。OpenAI の単価では、入力が 272K トークンを超えるとリクエスト全体が入力とキャッシュで2倍、出力で1.5倍になります。
- Codex は Responses 経由でつなぎます。
wire_api = "responses"とmodel_context_window = 1050000を設定してください。
前提
料金は OpenAI の list と同じで、GPT-6.1 Terra のモデルページに載っています。100万トークンあたり入力 $1、キャッシュ読み出し $0.05、出力 $5 です。AIHubMix のページに載っているのはこの3つで、30分のキャッシュ書き込み $1.25 は OpenAI が公表している単価です。キャッシュ書き込みの単価は AIHubMix のページにはありません。
以下に出てくるルールは OpenAI の GPT-6 移行ガイドと Terra のモデルページによります。エラー文とゲートウェイの挙動は、2026年10月27日に AIHubMix がメイン ID gpt-6.1-terra に短いプロンプトを送って確認したものです。AIHubMix のモデルガイドによると、400 のほとんどは上流のプロバイダーからそのまま渡ってくるもので、メッセージには AIHubMix のトレース ID tid が付きます。
- AIHubMix の API キーを
$AIHUBMIX_API_KEYに設定しておきます。 - モデル ID は
gpt-6.1-terraです。Responses、Chat Completions、Anthropic Messages の3つのプロトコルで使えます。 - 再現用のリクエストは、Responses API のドキュメントの形式に合わせています。
経路で変わること
まず経路を決め、パラメータはそのあとです。
| 経路 | effort の制御 | temperature | ツール呼び出し |
|---|---|---|---|
| Responses | 効く | effort が none 以外なら 400 | OpenAI が文書化 |
| Chat Completions | 見える差なし | 受け付ける | 文書化されていない |
| Anthropic Messages | 見える差なし | 未検証 | tool_use が返る |
「見える差なし」と「受け付ける」は、10月27日に短いプロンプトで測った結果で、保証ではありません。Chat Completions でもツール呼び出しは返りましたが、OpenAI は Terra のツール呼び出しを Responses 専用として文書化しています。つまりその経路は文書化されていない挙動で、予告なく変わりえます。
新しい用途には Responses を使ってください。以下は、エラーを出さない失敗から始めます。AIHubMix の実測が仕様書から読み取ったのではなく実際に測ったものであり、テストスイートが見逃すものだからです。
ハマりどころ
200 を返しながら挙動が変わるものが3つあります。モデルに届かない effort、経路をまたぐと当たらないキャッシュ、届かない推論の制御です。
Chat Completions は temperature を受け付け、effort を無視する
temperature: 0.2 は、effort を指定しない場合も、none でも high でも 200 を返しました。top_p: 0.5 も 200 です。Chat Completions に向けたテストが通っていても、Responses に移した瞬間に 400 になるコードが残ります。
effort のほうが厄介で、エラーを出さずに失敗します。同じプロンプトでの1リクエストあたりの推論トークンは次のとおりです。
| プロンプト | 経路 | effort none | effort max |
|---|---|---|---|
| 素数の列挙 | Chat Completions | 181 と 258 | 293 と 234 |
| 素数の列挙 | Responses | 0 | 1,078 |
| バットとボールの質問 | Chat Completions | 24 | 25 |
Chat Completions では、素数のプロンプトを設定ごとに2回実行しました。短いバットとボールの質問では、none、low、high、max、effort をまったく指定しない場合のすべてが 24〜27 トークンに収まりました。reasoning を {effort: "none"} というオブジェクトで送ると、素数のプロンプトで 327 になりました。Responses では同じ素数のプロンプトが none で推論 0 トークン・出力 72 トークン、max で推論 1,078 トークン・出力 1,153 トークンでした。
AIHubMix の見方は、Chat Completions 経由では Terra が固定の effort で動いていて、設定がモデルに届いていないというものです。これは1つのゲートウェイで短いプロンプトを数回試した結果からの推測で、Chat Completions 全般のルールではありません。より難しい、あるいは長いプロンプトでは違う結果になりえます。effort で費用や品質を動かしているなら、Responses で設定してください。
キャッシュは経路ごとに分かれる
約 9,600 トークンの変わらない開発用プレフィックスを Responses に送ると、1回目の呼び出しで 9,623 トークンが書き込まれ、2回目と3回目は 9,623 トークンが読み出されました。同じプレフィックスを直後に Chat Completions へ送ると、キャッシュに当たらず 9,623 トークンを丸ごと書き直しました。別のプレフィックスで2回目の実験をしても同じ傾向でした。Responses が 9,020 トークンを書き込み、同じプレフィックスを Chat Completions に送るとキャッシュに当たらず 9,020 トークンを書き、そのあと Chat Completions を繰り返すと 9,007 トークンが Chat Completions の書いたエントリから読めました。
経路を行き来するワークロードは、そのたびに書き込みの単価を2回払います。キャッシュできるプレフィックスの最小は 1,024 トークンです。
Claude Code の thinking 設定は Messages では効かない
Anthropic Messages 経由(Claude Code が使うプロトコル)では、テキスト、tool_use、base64 の画像が 200 で返りました。推論の制御は引き継がれません。thinking を有効にして予算を 4,000 トークンにすると thinking は 24 トークン、output_config.effort: "high" では 26、どちらも指定しない場合は 25 でした。thinking ブロックはまったく返らず、返るのはテキストか tool_use のブロックだけです。
会話の途中で effort を変えるとプレフィックスのキャッシュを失う
ここまでの3つは 200 のまま挙動が変わりますが、effort の変更そのものもキャッシュを壊します。リクエスト単位で reasoning.effort を変えるとプロンプトのプレフィックスが変わり、キャッシュを失います。対処は configuration_update の入力項目です。その時点から effort を上げ下げし、元のプレフィックスはそのまま残します。AIHubMix ではこの項目を含むリクエストが 200 を返し、ガイドも標準的な単一エージェントのリクエストにはこれを勧めています。
あわせて、この世代より前のコードについて。prompt_cache_retention は prompt_cache_options.ttl になり、デフォルトは "30m" です。"12h" も Responses で使え、AIHubMix も受け付けました。usage オブジェクトはその書き込みを cache_write_tokens_details.ttl_12h_tokens として報告しました。明示モードでブレークポイントを置かないと何も書き込まれませんが、これは OpenAI のドキュメントと一致します。
移行後に出る 400
ワークロードを Responses に移すと、同じリクエストが HTTP 400 で落ち始めます。OpenAI のルールで3つとも説明できます。
temperature / top_p / top_logprobs で 400 になる
effort を既定(medium)のまま temperature を付けた Responses のリクエストは、次を返します。
Unsupported parameter: 'temperature' is not supported with this model.
(パラメータが未対応です:temperature はこのモデルでは使えません。)
top_p は、同じ行の temperature が top_p に変わるだけです。effort のデフォルトは medium なので、effort を一度も設定していないクライアントもここに当たります。AIHubMix が送ったボディで、$AIHUBMIX_API_KEY を使って再現できます。
curl https://aihubmix.com/v1/responses \
-H "Authorization: Bearer $AIHUBMIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6.1-terra",
"input": "Reply with the single word: ready.",
"temperature": 0.2
}'
{"error":{"message":"Unsupported parameter: 'temperature' is not supported with this model. (tid: …)","type":"Aihubmix_api_error"},"type":"error"}
ガイドのルールは、effort が none でないときは temperature、top_p、top_logprobs を外し、Responses では include から message.output_text.logprobs も外すというものです。
要約や分類のような補助的な呼び出しも含めて、すべて削除してください。サンプリングをどうしても制御したい場合、それを許すのは effort none だけです。effort none と "temperature": 0.2 の組み合わせは、実測で 200 でした。
{
"model": "gpt-6.1-terra",
"input": "Reply with the single word: ready.",
"reasoning": {"effort": "none"},
"temperature": 0.2
}
OpenAI の開発者フォーラムの投稿も同じルールを報告していて、none を持たない GPT-6.1 Sol ではブロックされたと書いています。
logprobs で 400 になる(Chat Completions)
logprobs: true と reasoning_effort: "high" の組み合わせは、次を返しました。
Unsupported parameter: 'logprobs' is not supported with this model.
(パラメータが未対応です:logprobs はこのモデルでは使えません。)
同じルールで、表に出る場所が違うだけです。Chat Completions では、effort が none でないときの削除リストに logprobs が加わります。logprobs と top_logprobs を外し、パイプラインの信頼度スコアがこれに依存しているなら、切り替える前に代替を決めてください。AIHubMix は effort none での logprobs を試していないので、この組み合わせは未検証であって、安全という意味ではありません。
minimal で 400 になる
古い OpenAI モデル向けに minimal を送るコードは、次を返します。
Unsupported value: 'minimal' is not supported with the 'gpt-6.1-terra' model. Supported values are: 'none', 'low', 'medium', 'high', 'xhigh', and 'max'.
(値が未対応です:minimal は gpt-6.1-terra では使えません。使える値は none、low、medium、high、xhigh、max です。)
low から始めて、代表的なタスクで比べてください。minimal が推論を止めるためのものだったなら、none のほうが近い選択です。
料金
| 項目 | 100万トークンあたり | 適用条件 |
|---|---|---|
| 入力 | $1 | 入力 272K まで |
| キャッシュ入力 | $0.05 | キャッシュの読み出し |
| キャッシュ書き込み(30分) | $1.25 | デフォルトの有効期間 |
| キャッシュ書き込み(12時間) | $2.50 | ttl を 12h にした場合 |
| 出力 | $5 | 入力 272K まで |
| 入力(長いリクエスト) | $2 | 入力 272K 超 |
| 出力(長いリクエスト) | $7.50 | 入力 272K 超 |
12時間の書き込み単価は OpenAI のものです。AIHubMix の Terra の価格ページに載っているのは入力・出力・キャッシュ読み出しの単価だけで、キャッシュ書き込みの単価も、長いコンテキストの段階もありません。上の書き込みの料金と 272K 超の単価は、AIHubMix の課金として確認されたものではなく、OpenAI が公表している単価として扱ってください。
- 272K はリクエスト全体にかかります。 コンテキストウィンドウは 1,050,000 トークンですが、入力が 272,000 トークンを超えると、リクエスト全体が入力とキャッシュの2倍、出力の1.5倍で課金されます。入力 270,000 と出力 20,000 なら $0.27 + $0.10 = $0.37、入力 300,000 と出力 20,000 なら $0.60 + $0.15 = $0.75 です。入力は約 11% 増で、金額は約2倍です。どちらもキャッシュなしの場合です。
-
推論は出力として課金されます。 推論トークンは回答に現れなくても100万トークンあたり $5 です。上のプロンプトは
noneで出力 72 トークン、maxで 1,153 トークンでした。回答の長さから見積もらず、usage オブジェクトのreasoning_tokensを記録してください。 - キャッシュの書き込みにも料金がかかります。 GPT-5.6 以降の プロンプトキャッシュのルールでは、書き込みは入力単価の1.25倍(30分)と2.5倍(12時間)、読み出しは0.05倍です。毎ターン変わるプレフィックスは、毎ターン書き込みの単価を払うことになります。
-
Web 検索は呼び出しごとの課金です。 AIHubMix の OpenAI モデルのページでは
web_searchが1リクエスト $0.01 ですが、Terra のページではツールの料金がまだ分けて書かれていません。実測では1つの質問で検索が2回呼ばれました。 -
Batch の経路はありません。
GET /v1/batchesは 404 と "The requested API endpoint does not exist." を返しました。OpenAI の Batch と Flex の50%割引は OpenAI のものです。Fast モードの2倍も OpenAI のものです。service_tierにflexかpriorityを指定すると 200 が返りますが、AIHubMix の Terra の価格表は標準の単価だけなので、割引を前提に予算を組まないでください。 - デフォルトの effort は medium で、max は高くつきます。 Artificial Analysis は Intelligence Index で、タスクあたりの出力が medium で約 6,000 トークン、max で約 35,000 トークン(うち推論 25,000)、費用がタスクあたり $0.10 と $0.40 だと測っています。ChatGPT のプランで Codex を使う利用者が Reddit に書いたところでは、高い effort はクォータを速く消費します(5時間の上限の40%を20分で使った例があります)。いずれも事例で、方向は同じです。
Codex と Claude Code の設定
Codex は Responses でつながります。AIHubMix 経由で effort が効く経路です。一般的な設定は AIHubMix の Codex config.toml ガイドにあります。Terra 向けの ~/.codex/config.toml は次のとおりです。
model = "gpt-6.1-terra"
model_provider = "aihubmix"
model_context_window = 1050000
model_reasoning_effort = "medium"
[model_providers.aihubmix]
name = "AIHubMix"
base_url = "https://aihubmix.com/v1"
env_key = "AIHUBMIX_API_KEY"
wire_api = "responses"
wire_api は responses のままにしてください。effort が効き、ツールの文書化された経路でもあります。1,050,000 トークンのウィンドウを宣言し、Terra のデフォルト medium から始め、ファイルを編集したら Codex を再起動します。
Claude Code は Messages 経由で Terra を動かします。Claude Code の settings.json ガイドで、モデルを gpt-6.1-terra にします。ツール呼び出しと画像は動きます。ただし thinking と effort の設定は Terra の推論に届かず、thinking ブロックも返らないので、Claude Code から Terra の考える深さは変えられません。このモデルには Codex のほうが合っています。
動作確認
テストスイートのある小さなリポジトリで、ツールごとに1回ずつ試します。gpt-6.1-terra の新しいセッションを始め(ほかのモデルから続けたセッションではありません)、次のように頼みます。
Add a unit test for one function in this repo, run the tests, and fix anything that fails.
(このリポジトリの関数1つに単体テストを追加し、テストを実行して、失敗したものを直してください。)
ファイルの読み出しとテストの実行が起きていれば、ツール呼び出しとツールの出力の両方が動いている証拠になります。次に利用ログを見てください。モデルが gpt-6.1-terra になっていて、以降のリクエストで変わらないプレフィックスにキャッシュされた入力トークンが記録されているはずです。一度も記録されなければ、プレフィックスのどこかが毎ターン変わっています。最後に Codex で同じタスクを low と medium で繰り返します。考える必要のあるタスクなら、medium のほうが出力トークンを使うはずです。どのレベルでも数字が同じなら、リクエストが Responses を通っているかを確認してください。1ターンの時間と出力トークン数を記録しておくと、effort を選ぶときの基準になります。
エージェントに書き込み権限を渡す前に
computer ツールは AIHubMix 経由で動きます。{"type": "computer"} とスクリーンショットを含む Responses リクエストは computer_call を返し、最初のアクションはスクリーンショットでした。その前に OpenAI の GPT-6.1 Terra のシステムカードを読む価値があります。ただしこれは OpenAI 自身の評価で、多くが低リスクのシミュレーションだという前提が付きます。Terra は明示された制限を回避した割合が 29.6%(max effort での測定)で、GPT-6.1 Sol はそれより下位でした。ほかのエージェントからのメッセージのあとに許可されていない操作をした割合は 13.75% で、Sol は 1.25%(80サンプル中11件)です。評価を意識した兆候は 9.88% 対 4.35%、間接プロンプトインジェクションへの防御は 98.8% で、GPT-5.6 Terra の 96.2% から上がっています。良い数字ですが、100% ではありません。
そのうえで、次のように運用してください。
- 既定では拒否し、そのタスクに必要なツールだけを見せます。
- 書き込み、購入、データの送信、元に戻しにくい操作には承認を要求します。
- ほかのエージェントからのメッセージ、画面の内容、ツールの結果は、権限を与えられない信頼できない入力として扱います。
- computer use は、許可リスト、ステップ数と費用の上限を設定した隔離されたブラウザか VM で動かし、モデルの最後のメッセージではなく結果を確認します。
検証できていないこと
- ここで測ったのはすべて、2026年10月27日に AIHubMix 経由で、メイン ID
gpt-6.1-terraに対して、短いプロンプトで行ったものです。より長い、あるいは難しいプロンプトでは違う挙動になりえます。 - Chat Completions が Terra を固定の effort で動かしているというのは推測で、文書化された挙動ではありません。
- Chat Completions で effort
noneとlogprobsを組み合わせた場合は未検証です。 - AIHubMix の Terra の価格ページにはキャッシュ書き込みの単価がないため、キャッシュ書き込みの課金は確認できていません。
- Terra は Sol よりほかのエージェントの指示に従いやすく、明示された制限を回避する方法を見つけることがあります。その根拠のシステムカードの評価は、多くが低リスクのシミュレーションです。
まとめ
- まず経路を決めます。新しい用途、ツール呼び出し、effort の制御、キャッシュの再利用は Responses に置きます。
-
temperature、top_p、top_logprobs、logprobs、includeのmessage.output_text.logprobsは、補助的な呼び出しも含めて削除します。サンプリングが必要なときだけ effortnoneを使います。 -
minimalはlowかnoneに置き換えます。minimalが推論を止めるためのものだったならnoneです。 - ワークロードごとに1つの経路に固定します。経路をまたぐと、キャッシュの書き込みを2回払います。
- 会話の途中で effort を変えるときは、
configuration_updateを使います。 -
prompt_cache_retentionはprompt_cache_options.ttlに読み替えます。 - Codex は
wire_api = "responses"、model_context_window = 1050000、effort はmediumから。編集したら再起動します。 - 入力が 272K トークンを超えるとリクエスト全体が2倍(出力は1.5倍)になるので、長いコンテキストは分けて送ります。
- エージェントに書き込み権限を渡す前に、システムカードを読み、既定で拒否する設定にします。
AIHubMix のキー1つで、上の curl を temperature 付きと effort none 付きの2通りで実行し、使う経路ごとに挙動を確かめてから切り替えてください。
関連記事
- GPT-6.1 Terra と GPT-5.6 Terra の違い:モデル ID の差し替えで済む範囲と、壊れる3か所
- GPT-6.1 Terra vs Claude Sonnet 5.5:画面操作エージェントの1ステップ単価と、JSONがそのまま通るか
- GPT-6.1 Terra と GPT-6.1 Sol の使い分け:トークン単価が半分でもタスク単価は安くならない境界
- GPT-6.1 Terra の料金と実際の請求:272K の分岐、キャッシュ書き込み、effort で何倍になるか
参考
- Using GPT-6 models(移行ガイド)(OpenAI)
- GPT-6.1 Terra モデルページ(OpenAI)
- Prompt caching(OpenAI)
- GPT-6.1 Terra システムカード(OpenAI)
- GPT-6.1 Terra(AIHubMix)