自宅でClaude Codeを使った個人用のAIアシスタントを動かしている。音声とテキストで話しかけて、予定を確認したり、自分のコードを直させたりする用途だ。
最近、対話の応答が遅かった。「OKとだけ返して」で済むような軽いやり取りでも、思考中の表示が長く出て、律儀に長考する。手元で往復時間を計ると、既定のOpus 4.8で約9秒かかっていた。相槌に9秒は待てない。
原因を切り分けると、効いている要素は二つあった。既定で使っていたOpus系の重いモデルと、reasoning effort(答えを返す前に考える深さ)をhighに固定していたことだ。effortを下げれば思考は縮み、モデルを替えれば同じeffortでも速くなる。
用途で分けることにした。私のアシスタントには性格の違う二つの使い方がある。普段の話しかけは、多少浅くても速く返ってほしい。自分のリポジトリを直させるコード開発は、遅くてもいいから正確であってほしい。この二つに同じモデルをあてていた。
対話は6月末に出たSonnet 5、コード開発は従来どおりOpusにした。
| 用途 | 重視 | モデル |
|---|---|---|
| 対話 | 速さ | Sonnet 5 |
| コード開発 | 正確さ | Opus 4.8 |
同じ「OKと返して」を、今度はSonnet 5で計った。約5〜6秒。Opusの約9秒から3〜4秒縮んだ。厳密なベンチマークではない。手元で2回ずつ計った、軽い一言の往復時間だ。それでも相槌の体感は変わった。
判断力を落とした代償も見ておく。公表ベンチのSWE-bench Proで、Sonnet 5は63.2%、Opus 4.8は69.2%。この6ポイントはコード開発で効く場面があるので、そちらはOpusに残した。対話でこの差を体感することは、まずない。
コストも同じ方向に働いた。私のプランは定額だが、このアシスタントが使うのはヘッドレス起動のClaude Code(claude -p)で、こちらは使ったトークン量に応じて月のクレジットを消費する。安いSonnet 5に対話を寄せると、速いだけでなくクレジットも減る。
実装は設定二行だった。アシスタント本体は対話のたびにClaude Codeをサブプロセスとして起動している。その起動時に、対話のときだけモデルとeffortを渡す。
# 対話だけに効く。空にすれば既定(Opus)に戻る
CHAT_MODEL=claude-sonnet-5
CHAT_EFFORT=high
背景で動かしている定期ジョブ(要約や監視)には、この指定を渡していない。対話ではないし、深く考えてほしい処理だから、Opusのままにした。
一つ残っている。当初つらかった「思考中が長く出る」方は、完全には消えていない。あれの主因はモデルではなくeffort=highだからだ。effortは今もhighのまま様子見にしている。数日使って気になれば、CHAT_EFFORTをmediumに落とす。一行変えて再起動するだけで戻せる。
いまは対話がSonnet 5、コード開発がOpus、effortは据え置き。