Claude Opus 4.8のリリースノートを読んで、最初に目が止まったのはAnthropicの自己評価の文言だった。「a modest but tangible improvement」って、自社モデルのリリースアナウンスでここまで控えめに書くAI labってなかなかない。ベンチマーク盛り盛りのプレスリリースに慣れてると、逆に信頼できる気がしてくる。
それより気になったのは機能の中身だ。特にmid-conversation system messagesは、自分の個人開発にダイレクトに刺さった。
今まではsystem promptをconversationの最初に1回だけ渡す設計が前提だった。途中でコンテキストを更新したい場合、user turnに詰め込むか、もしくはpromptを全部組み直して再送するしかなかった。これがOpus 4.8だと、messagesのアレイの中でrole: 'system'のメッセージをuser turn直後に差し込める。
Simon Willisonの記事にも書いてある通り、これの恩恵がでかいのはagentic loopのコスト最適化だ。system promptをキャッシュしたまま、途中で指示だけ追加できる。prompt cache hitsを維持しながらinput tokenを節約できるのは、長いsessionを回すユースケースだとかなり効く。
ちょうど自分が作ってる個人開発ツールで、LLMをオーケストレーションするやつがある。toolコール→結果返却→次の判断、みたいなloopを回してるんだけど、ステップが進むにつれてsystem promptを更新したい場面が出てきてた。今まではこう書いてた:
user turnにcontextを突っ込んで誤魔化すやつ。お世辞にもきれいとは言えないし、長くなるとcache hitも死ぬ。Opus 4.8のmid-conversation system messageが使えるなら、role: 'system'を素直に差し込める。Anthropic Python SDKもこれに対応してアップデートされてるらしいので、週末に試す予定だ。
もう一つ見落としがちだけど重要な変更が、cacheable promptの最小長の変更だ。Opus 4.7では4096 tokenがキャッシュの最小単位だったのが、4.8では1024 tokenに下がった。
これ、地味に嬉しい。system promptが短めのタスクだとキャッシュが効かなくて、毎回full priceで叩かれてた。4096 tokenって結構多くて、ざっくり3000〜3500文字くらいのsystem promptが必要だった。1024なら700〜800文字程度。普通のtask-specific promptで十分キャッシュに乗る。
コスト面の数値も確認した。Opus 4.8の通常priceはinput $5/million tokens、output $25/million tokens。4.5/4.6/4.7と同じ価格帯を維持してる。Fastモードは$10/$50で、4.6/4.7のFastが$30/$150だったことを考えると、Fastモードは大幅に下がってる。ただFastモードはresearch preview参加組しか使えないので、自分には今のところ関係ない話だ。
Anthropicのリリースで「honesty」を大きく押し出してるのも面白かった。code reviewに使ったとき、前のモデルは自信満々で間違いをスルーすることがあった。4.8はその確率が4倍低いとされてる。benchmarkでもincorrect-rateが6モデル中最低で、それを達成した方法が「自信のない質問にはabstainする」というのがエンジニア的に誠実な設計だと感じた。
実際にSEVを起こしたくないコードに対してLLMをレビュアーに使うとき、間違いを正当化されるよりも「わかりません」と言ってもらえる方がずっと助かる。先週もPRに対してClaudeにレビューさせたら、おかしい箇所を自信ありげに通過させてきて少しハマった。4.8でこれが改善されてるなら、個人開発のCIにlint + LLM reviewを組み込む構成をもう少し本気で考えられる。
context windowは引き続き1,000,000 tokens、max outputは128,000 tokens。training data cutoffはJanuary 2026で4.7と変わらない。劇的な変更ではないけど、mid-conversation system messagesとcache最小サイズの変更は実装に直接影響する。
週末にSDKのアップデートを確認して、agentic loopのリファクタリングをひとつ試してみる。
それより気になったのは機能の中身だ。特にmid-conversation system messagesは、自分の個人開発にダイレクトに刺さった。
mid-conversation system messagesとは何が変わるのか
今まではsystem promptをconversationの最初に1回だけ渡す設計が前提だった。途中でコンテキストを更新したい場合、user turnに詰め込むか、もしくはpromptを全部組み直して再送するしかなかった。これがOpus 4.8だと、messagesのアレイの中でrole: 'system'のメッセージをuser turn直後に差し込める。
Simon Willisonの記事にも書いてある通り、これの恩恵がでかいのはagentic loopのコスト最適化だ。system promptをキャッシュしたまま、途中で指示だけ追加できる。prompt cache hitsを維持しながらinput tokenを節約できるのは、長いsessionを回すユースケースだとかなり効く。
ちょうど自分が作ってる個人開発ツールで、LLMをオーケストレーションするやつがある。toolコール→結果返却→次の判断、みたいなloopを回してるんだけど、ステップが進むにつれてsystem promptを更新したい場面が出てきてた。今まではこう書いてた:
messages = [
{\"role\": \"user\", \"content\": f\"[CONTEXT UPDATE]\
{new_context}\
\
{original_task}\"}
]user turnにcontextを突っ込んで誤魔化すやつ。お世辞にもきれいとは言えないし、長くなるとcache hitも死ぬ。Opus 4.8のmid-conversation system messageが使えるなら、role: 'system'を素直に差し込める。Anthropic Python SDKもこれに対応してアップデートされてるらしいので、週末に試す予定だ。
prompt cacheの最小サイズが1024 tokenになった
もう一つ見落としがちだけど重要な変更が、cacheable promptの最小長の変更だ。Opus 4.7では4096 tokenがキャッシュの最小単位だったのが、4.8では1024 tokenに下がった。
これ、地味に嬉しい。system promptが短めのタスクだとキャッシュが効かなくて、毎回full priceで叩かれてた。4096 tokenって結構多くて、ざっくり3000〜3500文字くらいのsystem promptが必要だった。1024なら700〜800文字程度。普通のtask-specific promptで十分キャッシュに乗る。
コスト面の数値も確認した。Opus 4.8の通常priceはinput $5/million tokens、output $25/million tokens。4.5/4.6/4.7と同じ価格帯を維持してる。Fastモードは$10/$50で、4.6/4.7のFastが$30/$150だったことを考えると、Fastモードは大幅に下がってる。ただFastモードはresearch preview参加組しか使えないので、自分には今のところ関係ない話だ。
honesty改善は実務でどう効く
Anthropicのリリースで「honesty」を大きく押し出してるのも面白かった。code reviewに使ったとき、前のモデルは自信満々で間違いをスルーすることがあった。4.8はその確率が4倍低いとされてる。benchmarkでもincorrect-rateが6モデル中最低で、それを達成した方法が「自信のない質問にはabstainする」というのがエンジニア的に誠実な設計だと感じた。
実際にSEVを起こしたくないコードに対してLLMをレビュアーに使うとき、間違いを正当化されるよりも「わかりません」と言ってもらえる方がずっと助かる。先週もPRに対してClaudeにレビューさせたら、おかしい箇所を自信ありげに通過させてきて少しハマった。4.8でこれが改善されてるなら、個人開発のCIにlint + LLM reviewを組み込む構成をもう少し本気で考えられる。
context windowは引き続き1,000,000 tokens、max outputは128,000 tokens。training data cutoffはJanuary 2026で4.7と変わらない。劇的な変更ではないけど、mid-conversation system messagesとcache最小サイズの変更は実装に直接影響する。
週末にSDKのアップデートを確認して、agentic loopのリファクタリングをひとつ試してみる。