o3-mini・Kimi K3 — エージェントの「空回答」バグと推論コストの削減

o3-mini·Kimi K3 — 에이전트 '빈 답변' 버그와 추론 비용 줄이기

o3-mini・Kimi K3 — エージェントの「空回答」バグと推論コストの削減

最近、AIエージェントを開発していると、サーバー料金はしっかり請求されるのに、エージェントが空っぽの回答を返すだけで止まってしまうという奇妙なバグに直面するケースが増えています。これは、最新の推論型モデルが深く思考するために与えられたトークン予算を使い果たしてしまい、肝心の最終回答を作成できなくなる現象です。なぜこのようなフリーズが発生するのか、そしてどうすればコストを抑えつつエージェントのループをスマートに制御できるのか、その要点をわかりやすく解説します。

犯人は「共有トークン予算」と隠れた推論ステップ

かつては max_tokens オプションで最終回答の長さだけを制限すれば、コストを安全に制御できました。しかし、OpenAIのoシリーズをはじめとする最新の推論型モデルは max_completion_tokens という全く新しい規格を使用します。

簡単に例えると、テストを受ける際に練習用紙と解答用紙を合わせて合計100文字までしか書けないような制限が設けられたようなものです。問題を解くために練習用紙に書き出す「隠れた推論トークン」と、私たちが目にする「最終回答トークン」が、一つの予算枠を共有しているのです。

もしコストを抑えようとしてこの予算を厳しく設定しすぎると、困った事態が起こります。AIが一人で熱心に考えすぎて練習用紙を埋め尽くした瞬間に、解答用紙に書くための予算が1文字も残らなくなってしまうのです。

その結果、AIは内部で悩み続けた挙句、外側には空の回答を残して停止してしまいます。さらに理不尽なのは、AIが懸命に悩んだ分の思考コストはしっかり請求されるという点です。次のステップへ進むためのツール呼び出しやJSONデータすら出力されず、エージェントの動作全体が麻痺してしまうこのバグの元凶は、まさにこの共同予算ルールにあります。

キャッシュされない「思考税」の恐怖

コスト面でのダメージも決して小さくありません。通常、過去の会話の文脈を記憶させてコストを大幅に削減するプロンプトキャッシュ技術に頼りがちですが、リクエストごとにリアルタイムで生成されるモデルの内部推論トークンはキャッシュが一切できません。

問題は、この隠れた推論トークンが最も単価の高い出力トークンレートでそのまま請求される点です。実際に単純な情報抽出作業であっても、Kimi K3モデルはデフォルト設定のままでは全体97トークンのうち、なんと66トークンを見えない思考プロセスに消費してしまいます。

エージェントが自動で複数のステップをこなしている間に制御なしでループを回してしまうと、想像もしなかった高額な「思考税」の請求書を突きつけられることになりかねません。

解決策1: reasoning_effortで思考の深さを調整する

このフリーズバグを防ぐ最も賢い解決策は、状況に応じて思考の深さを制御することです。エージェントのすべての実行ステップで、AIが全力で深く悩む必要はないからです。

幸いなことに、OpenAIのoシリーズモデルは reasoning_effort というパラメータを提供しています。開発者はこのオプションを使って、モデルが行う思考量を「low」「medium」「high」から自由に調整できます。

方法は非常に簡単です。単純なデータ収集やエージェントループの中間ステップでは、この値を「low」に下げて思考トークンを強制的に節約します。そして、本当に緻密な計画が必要な最終ステップやコーディング作業の時だけ「high」に上げて思考予算を集中投下するという、動的制御パターンを実装するのです。

python
# OpenAI Python SDK 기준
response = client.chat.completions.create(
    model="o3-mini",
    reasoning_effort="low",  # 작업 단계에 따라 low, medium, high 조율
    max_completion_tokens=1024,
    messages=[{"role": "user", "content": "..."}]
)

このように状況に応じて思考の深さをコントロールすれば、限られたトークン予算内で回答が途切れるトラブルを完全に防ぎ、動作効率も最大化できます。

解決策2: 単純作業には「思考機能オフ」を適用する

深く考える必要のない単純な作業には、思考機能そのものを完全にオフにしておくことをお勧めします。文章から日付や名前のような単純なデータを抽出するだけの作業にもAIが悩む時間を取らせてしまうと、不必要なコストが漏れ続けてしまうからです。

実際にMoonshot AIのKimi K3モデルで単純な情報抽出を実行すると、デフォルト設定では全体97トークンのうち66トークンもが思考プロセスに浪費されてしまいます。このような場合は reasoning_effort オプションを none に指定して推論ステップを明示的にオフにしないと、無駄なコストと時間の浪費を抑えられません。

ただし、最新のOpenAI gpt-5.4 APIを使用する際は、ある厄介なバグに注意が必要です。思考機能をオフにするために reasoning_effort: none を設定しつつ、同時に全体のトークン予算である max_completion_tokens を設定しておくと、バグの影響で「思考オフ」設定が完全に無視され、勝手に深く思考し始めてしまいます。結局、思考にトークン予算を使い切ってしまい、肝心の最終回答が空欄になってしまうという悲劇が発生します。

この問題が修正されるまでは、gpt-5.4で思考機能を完全にオフにする場合に限り、トークン制限設定を一旦解除するなどの例外処理が必要です。

これからは「思考の深さ」も直接制御する時代

今後エージェントを設計する際は、プロンプトを磨く技術と同じくらい、「このステップでAIがどれだけ深く思考すべきか」を制御するルールが鍵となります。

単純作業は頭を使わずに素早く処理させ、複雑な問題の時だけ思考予算を集めるように動的に調整してみてください。このシンプルな制御パターン一つで、エージェントのコストを大幅に抑え、フリーズバグを防ぐ強力な盾となるはずです。

まだコメントはありません。