デブログfmは、現役エンジニアのinadyが、日々の業務で試したAI活用術や最新ツール、効率化のノウハウをシェアします。https://podcast.devlog.fm
番組の感想やリクエストは #デブログfm まで。番組のフォロー、星★(レビュー)いただけると嬉しいです!
【アンケート実施中】
より良い番組作りのために、アンケートにご協力ください。
https://yutaka-inada.notion.site/2fdcad0a5eee800487e5fb5b68b5e361
▼今週のトピック▼
- Opus 4.7 登場
- 長いセッションほど、ユーザー1ターンが重い
- Effort と適応的思考
- ツールとサブエージェントの呼び出し減少
- 1M コンテキストの使いこなし
▼参考資料▼
感想
まだ感想はありません。最初の1件を書きましょう!
サマリー
本エピソードでは、最新AIモデル「Opus 4.7」の登場とその活用法について、公式ドキュメントに基づき解説します。Opus 4.7は、一度の指示で自律的にタスクを完了する能力が向上しており、特に長いセッションでは、最初の指示で意図や制約を明確に伝えることが推奨されます。また、思考の深さを調整する「Effortレベル」では「X-High」の利用が最適とされ、AIが自律的に思考の深さを判断する「適応的思考」の進化についても触れられています。さらに、100万トークンという膨大なコンテキストウィンドウを効果的に使いこなすための戦略として、セッションの分割、リワインド、コンパクト、サブエージェントの活用法が紹介され、コンテキストの「腐敗」を防ぎ、AIの性能を最大限に引き出すための具体的なテクニックが解説されています。
Opus 4.7の新機能とベストプラクティス
いやー、Opus 4.6 出ましたね。昨日、4月16日に出たと思いますが、今日はですね、
福岡のポッドキャストでは、Opus 4.7 について、ちょっと深掘りして話していきたいというふうに思っております。
今日ご紹介するのは、2つのアンソロピックのドキュメント、ブログ投稿でございます。
1つ目は、Cloud Opus 4.7 のベストプラクティスという話と、
これも同日に公開されたものですが、100万トークンの使い方みたいなドキュメントがありますので、
この2つを解説、紹介していきたいというふうに思っております。
まず初めにご紹介するのは、
Best Practices for Using Cloud Opus 4.7 with CloudCode というブログです。
このブログではですね、Opus 4.7 で何が変わったのか、
どういうふうに使うと効率的に使えるのか、という内容が書かれておりました。
ちょっと上から順番に解説していければと思います。
まず1つ目が、Opus 4.7 の特徴ですね。
Opus 4.7 は今まで以上に、ユーザーとのやり取りが1回だけでも、
自律的に作業を完了できる能力が増えてきました、という内容です。
この AI エジェントの使い方のパターンって大きく分けて2つあって、
短いやり取りはラリーのように続ける。
こうした、これってこうですよね。いや、そうじゃなくてこう、こう、こうで。
短いやり取り、1分、2分でやり取りするパターン。
もしくは、最初にドカンと指示を与える場合は与えて、
あとはもう自律的にやってっていう場合が2つあると思うんですが、
この Opus 4.7 をクロードコードに使う場合においては、
さっき言った1行、1分、2分でやるよりかは、
ガツンとこれやってって任せた方がいい性能が出るというのが
アンソロピックの見解です。
これをやるための方策がいくつかあって、
まず最初のターン、第1手目でやりたいことをはっきり書くというところです。
まずどういう背景があって、どういう意図で何がしたくて、
ただこういう制約事項があって、最終的にはこれとこれとこれが達成すればできて、
関連ファイルはこの辺にあります、みたいなものを与える。
Opus 4.7 が自律的に判断するための必要なコンテキストを全部渡すというところです。
これを1個1個のステップで、まず意図がこれで、なるほど、制約事項はこれで、
1個ずつ渡すよりかは、まとめてガツンと1ステップ目で渡した方が性能が上がるというのが記載されています。
一方で、1個1個これでやってしまうとオーバーヘッドが増えてしまうので、性能が下がるということが明示的に書かれています。
これをもっと使いこなすためには、オートモードを積極的に使ってくださいというところを書かれています。
このオートモードというのは何かというと、クロードコードで何か作業するときに、
例えばファイルを消すとかファイルを上書きするという場合に、
やり方が2つあって、毎回ユーザーに確認する場合、もしくは全部AIが自律的にやると、ユーザーの確認ゼロでやるというパターンが今まではありました。
これにオートモードが入りました。
これは何かというと、ユーザーがもし、そもそもですね、これやっていいよってやったものはもちろん通過するんですが、
ユーザーの許可がもともと取れていないものに関して、AIが自律的に判断して、これってやっても問題ないよねってものは勝手に実行すると。
一方でこの作業って危ないな、例えばファイルを消すみたいなものは事前に確認を取った方がいいなって、
AIが自律的に判断をして、必要に応じて従来に確認をするというような仕組みがあります。
今回ですね、オーパス4.7は最初に指示をガツッと与えて、あとは実際に作業するっていうのが非常に得意になったので、
逆に言うと毎回ユーザーに確認していたら、ユーザー側の手間がすごく増えてしまうというところがあるので、
積極的にオートモードを使って自律的に作業が進むようにしていきましょうというところが推奨されておりました。
次2番目ですね、エフォートレベルの話です。
オーパス4.7もそうですし、ソネットとかを使う場合もそうなんですが、
エフォートレベル、どれぐらい深く考えるかっていうのをレベルをつけることができます。
今まであったのはロー、ミディアム、ハイ、マックスだったんですが、ここにXハイっていうのが使われました。
結論から言うと、Xハイ使いましょうねっていうところです。
では具体的に使うだけの話をしていくんですが、まずローとかミディアムっていう場合は、
もちろんスピードが速いです、シンキングが短いので、お金もかからないです。
ただ、もちろん性能は落ちますという特徴があるので、何か具体的にこれやりたいと決まっている場合、
ここのファイルにこれを書きたいなってなんとなく決まっている場合、
アウトプットユーザーも認識できている場合はローとかミディアムを使うのが良いという話ですね。
次がハイですね。これはパフォーマンスとコストのバランスが非常に一番良いもので、
何か作業をしたいんだけれども、品質も落としたくない。
でもアウトプットの使質、トークンの使用量も抑えたいという場合にはこのハイが良いです。
このハイとマックスの間に新しくできたのがこのXハイですね。
Xハイっていうのはアンソロピックによると、ほとんどの作業において最適な設定だというふうに書かれています。
自律性とか性能も高いし、コストもそんなにマックスほどは増えないというものですね。
最後がマックスです。マックスは本当にめちゃめちゃ考えて結果を絞り出すってものなんですが、
逆に考えすぎてしまうことによって結果が逆に悪くなるっていうことが起きてしまうので、
このマックスは本当にユーザーが意図してどうしてもXハイで動かない、
でももっと考えて結果を導き出してほしいっていう場合だけ使う方がいいというふうに書かれておりました。
まとめとしてはまず一旦Xハイを使ってみましょうというところです。
デフォルトではどうやらXハイになっているようなのでそのまま使っていただければと思いますが、
前のモデルの設定が引き続かれているのであれば一旦Xハイで試してみて、
どういう結果が出るのかというのを試してみるといいんじゃないでしょうか。
次がアダプティブシンキングの話です。
オーパス4.7ではこのユーザーから指示した依頼に対して、
そもそもシンキングがいるのかいらないのか、どれが深く考えればいいのかというところを
より自律的に判断するようになりました。
シンキングが長いほど一般的に性能は良くなるんですけどその分時間がかかりますというところと、
逆に考えすぎてしまうことによって結果がばらついてしまう。
そこまで深く考えた結果じゃなくていいよみたいなことが出てくることってあると思うんですけど、
そういったことが起きてしまうということがあるので、自律的に判断して、
どれぐらい深く考えればいいか判断をして結果を出すようになってきましたというのがオーパス4.7の特徴です。
なので今までのオーパス4.6のように使っているとシンキングが短いなとか考えさぼっているなみたいな印象があるかもしれないんですが、
これはある意味意図してやっているんじゃないかなというところで、
アンソロピックの回答としてはこの思考のペースを明示したい場合、
例えばもっと考えさせたい場合は応答する前にすごく深く考えて段階的に考えてくださいと。
この問題はあなたが思っている以上に難しいですよということを渡すと深く考えてくれますと。
一方で逆に考えを抑えたい場合ですね、
なんとなくわかりきっている答えに対して考えられても困ってしまうので、
そういった場合は深く考えることより早く応答することを優先して迷ったらユーザーにそのまま質問してみたいなことを書くと、
トークンの切落にもなりますしスピードも上がりますと。
一方で精度も下がってくるのでその辺使い分けてやっていくといいんじゃないかなというふうに思っています。
こちらもですねオーパスが自理的に考えてくれるので一旦はそのまま使っていただいて、
もうちょっと考えてほしいなとかちょっと考えすぎだなみたいなところは、
ユーザーのプロンプトの指示でうまいこと調整してあげるといいんじゃないかなというふうに思います。
残りちょっと細かいのが3つぐらい書かれていまして、まずは音の長さですね。
そもそもそのアンソロピックのモデルクロードって非常に簡潔淡白でユーザーに媚びない出力をするということで、
特にエンジニアにとって人気なモデルではあるんですが、これがより強くなりました。
オーパス4.7はヨートバス4.6以上に冗長な出力をしなくなりましたというところです。
なので短い質問に関しては短くパッと返すし、オープンクエッションで難しい分析が必要なものはもちろん長く返ってきますという感じですね。
なので文章の長さとか文体とかを明示的に指定したい場合はあえて指示をちゃんと指示をしてくださいというところですね。
例えば400字で書いてくださいとか1万文字ぐらいで書いてくださいとかいう感じです。
あとは指示をする時には、例えばデスマス調にしないでくださいではなくて大言止めで書いてくださいみたいに指定文で書くんじゃなくて
肯定文で書いた方がより指示が聞きやすいという傾向があるので、
否定文じゃなくて肯定文でそれを指示してあげてくださいというところです。
次はツールの使用も今まで以上に呼び出しが少なくなっています。
なので、例えばこのファイルの書き読み込みのツールを使ってほしいのに使わずに自分で考えてしまう、
検索のツールを使ってほしいのに使わないということが起きるということが明示的に書いているので、
もっと積極的に検索とかファイルの読み込みをしてほしい場合は、
いつ、なんでそのツールを使うべきかって明示的に書いてあげた方が良いですというところです。
もう一つサブエージェントもそうですね。
オーバース4.7は今まで以上にサブエージェントを呼び出すのが頻度が下がります。
なのでサブエージェント呼び出さずに自分でやろうとするんですね。
なので何かサブエージェントでやってほしいなって思っているものであれば、
明示的にこの作業はこのサブエージェントを使ってくださいというふうに書いてあげてくださいというふうに記述されていました。
これはオーバース4.7もそうなんですけれども、
KawasaのComposer 2も結構似たような印象があってですね、私にこのサブエージェントを使うかどうかっていうところは、
スキル図にちゃんとこういう手順でここはサブエージェントを使って、
100万トークンコンテキストウィンドウの活用法
これはメインのエージェントだって、最後にまたこのサブエージェントを使ってって書いてるにもかかわらず、
無視して自分で作業しちゃうんですよね。
で後から聞くと、自分でやった方がいいと思ったのでやりましたみたいなことが書いていて、
自律的に判断してるんだろうなっていうところがあるんですが、
この後話すコンテキスト腐敗みたいなのを防ぐためにも、
サブエージェントを積極的に使ってほしいのにっていう時でも使ってくれないっていうことがあるので、
今まで以上に慎重に丁寧にこういう時はこのサブエージェントを使ってって書いてあげる必要があるということが書かれておりました。
まとめるとオーバース4.7は今まで以上に長時間のタスクが上手になったので、
あまりラリーをするんじゃなくて、一番最初にガツンとこれやってほしいって渡してくださいっていうところと、
エフォートレベルはXハイを使ってくださいっていうところと、
ツールの利用とかサブエージェントの利用が今まで以上に
少ない事故回数になってしまうので、明示的にこのツールを使ってほしいとか、
このサブエージェントを使ってほしいという場合は、これ使ってくださいと明示して書きましょうということがまとめでした。
こういったことを踏まえてですね、ぜひ皆様新しいオーバース4.7を使っていただければというふうに思います。
ではあともう一つご紹介したいと思うんですが、100万トークンの使い方ですね。
これもアンソロピックのブログポストですけれども、
Using Cloud Core Session Management and OneMillion Contextというブログポストが、
これも同じ昨日ですかね、4月16日に出てきておりますけれども、
この話をもう一個したいというふうに思っております。
Cloud Opusはですね、100万トークン使えるようになりました。
非常に多くのトークンを1回のセッションで使うことができるようになりました。
改めて簡単に解説すると、コンテキストウィンドウって1個のセッションで覚えられるメッセージの総量だと思っていただければと思うんですが、
ユーザーのインプットとAIからのアウトプットですね。
これの全部の1セッションの総量、テキスト数、実際にはトークン数なんですけど、テキスト数だと置き換えているとそれのことです。
100万トークンって数量に増えたので、やった全部使えばいいんだって思うかもしれませんが、
これがそうじゃないよってことが改めて公式のブログでも書かれておりました。
これはですね、別に今始まった話じゃなくて、昔からよく言われたことではあるんですが、
Cloudも100万トークンに対応することになって、ユーザーがあまり意識せずにこの100万トークンを使う結果、
思ったように性能が出ないと、劣化したみたいな話が結構出てきたんじゃないかなというふうに思ってるんですよね。
なので公式としてもこういうふうに使ってくださいっていうのが、ドキュメントとして出てきたという背景だと理解しています。
この100万トークンっていうのは、ちょっと繰り返しになるんですけど、今までに比べてすごく大きいウィンドウですと。
なんですけど、これを上手に使わないと逆に性能が下がってしまうということが起こります。
これをコンテキストロッドコンテキスト腐敗と呼ぶんですけれども、腐ったコンテキスト。
要は腐ったコンテキストでやっても腐った結果しか出てこないということがあるので、ちゃんと腐ってない綺麗なコンテキストで作業しましょうねということですね。
どういうふうに使うことができるかというと、まずやり方の話をするんですが、
新しいチャット、新しいセッションが始まって、ずっとやりとりする、ずっと続けるっていうのがまずパターン1ですよね。
2つ目がリワインドといって、メッセージを依頼したものに対して結果が返ってくるんですけど、ちょっと結果が違うという場合は、
その元の指示文に1個だけ前に戻って、ここからやり直すってやつですね。
これをやるにはスラッシュリワインドってやるか、エスケープキー2回押すとやり直しすることができるんですが、それです。
次がクリアーですね。スラッシュクリアー。もしくは新しいセッションを始めると、今までやった履歴は全部忘れて最初からやり直すというものですね。
次がコンパクトです。これはずっとやりとりしていたもののサマリーを作って、このサマリーだけをまた次のセッションに渡し替えてあげることによってコンテキストウィンドウをギュッと圧縮するというものです。
最後がサブエージェントですね。何か作業を今のメインのエージェントでやるんじゃなくて、別のコンテキストウィンドウ、まっさらなコンテキストウィンドウを持っているものに依頼をして、結果だけまたメインのエージェントに戻してやるというものです。
いろんなパターンありますけれども、どういうふうに使い分けるべきかというところを解説されていまして、まずいつ新しいセッションを始めるかということなんですが、新しいタスクを始めるときには新しいセッションを始めましょうというふうに書いています。
これはですね私もいろんな人のAIの使い方を見てるんですが、あまり意識できてない人は意外と多いなという印象です。何か作業をこのAという作業をやって、そのまま次のBという作業もやらせて、そのままCという作業もさせてみたいなことをよく見るんですが、これは良くないとされています。
なのでAという作業が終わったらそのセッションは終わりにして捨てて、次のBというタスクをまた新しいセッションでやりましょうというところですね。これは何でやるかというと、私たち人間と違ってAIってこのセッションでやっている内容って基本全部覚えてるんですよね。
なのでAという作業をやってBという作業をやるときに、人間だったらこのAっていうのは忘れてBのことに専念できているんですけど、このLLMにおいてはAの次にBってやってもAのこと覚えてるんですよね。
なのでBという作業をやっているにも関わらず、このAという作業をしたときのユーザーからのインプットとか自分のアウトプットの影響を受けてBの作業の品質が下がるということが起こるので、必ずBという作業をするときには新しいセッションで始めましょうという話です。
2つ目はリワインドの活用ですね。何かAIとやり取りをしていて、結果が返ってきましたと。何ラリー目でもいいです。3ラリー目、5ラリー目でもいいですけど、違う結果が返ってきましたと期待していないものが返ってきたものに対して、いやいやそうじゃないからこういうふうにやってってやり直しを指示することって結構あると思うんですが、これはやらないほうがいいという話です。
じゃあどうやってやるかというと、このリワインドを使って悪い結果が返ってきた自分の指示ですね。1個前に戻って指示を書き直す。そうするとAIが間違った出力をした世界線を捨てて、AIが正しい結果を返す世界線に切り替えるわけですよね。
そうすると間違った結果を出したことをAIはリワインドすれば忘れるので、綺麗なコンテキストを維持できますというところです。これは私も結構やりがちなので、気をつけて使わないといけないなというふうに読んでいて思いました。
そうすることによってAIが間違った結果を出した。つまりユーザーが間違って指示をしたということをAIが覚えている世界線のままやってしまうと、間違った結果を出すことができない。
間違った入力、間違った出力を覚えた状態で続きが起こるので、また間違った結果が出てしまうということが起きてしまうので、ユーザーの間違った入力、AIの間違った出力がない状態にきれいにして使いましょうという話ですね。
次がコンパクトの使い方です。コンパクトというのは100万トークン行きそうだよねという時に、この今までのやりとりをサマライズして、このサマライズしたテキストだけもう1回新しいセッションに移し替えて、そこからまた続きをやるという機能なんですが、おすすめなのはコンパクトをあんまり使わないほうがいいという話ですね。
コンパクトしてしまうと、AIが自動的にサマライズを作るので、ユーザーが本当に覚えていた欲しかったことを忘れてしまうということが起きます。なので面倒くさいんですけれども、100万トークン行きそうになった場合は、一旦クリアして、新しいセッション立ち上げ直して、今こういう作業していて、こういう作業まで終わっていて、というのに改めて自分でやってほしいことを書いてあげた方がもちろん性能は出ます。
とはいえ面倒くさいので、コンパクトをやる場合においては、スラッシュコンパクトの後にこういう部分を重点にまとめてください、みたいな風にスラッシュコンパクトの後に指示文を書くと、それを捨てないようにサマリーを書いてくれるので、このやり方を使ってくださいという話。
それで避けなければいけないのはオートコンパクトですね。このオートコンパクトというのはコンテキストウィンドウがマックス100万トークンあるとして、もうちょっとで終わっちゃいそうですという時に自動的にこのオートコンパクトが走ってさっきのコンパクトが動いてコンテキストウィンドウをギュッと圧縮するというやり方なんですが、これをやってしまうとユーザーがコンパクトする時に何か指示文を書いて、こういう風なサマリーにしておいてくださいと。
今こういう作業をやっているから、ここの部分を重点的にサマリーを作ってくださいと言ってやるんじゃなくて、何も指示もなくギュッとコンパクトされてしまうので、結構忘れちゃうんですよね。
なのでそういうことが起きないように、100万トークンコンテキストがあったとしても、それをギリギリ使うんじゃなくて、一旦キリがいいところまで来て、でかつコンテキストウィンドウ6割とか7割とか使っているなと、そろそろマックスに来そうだけど、まだまだやりたいことがいっぱいあるなという場合は、このオートコンパクトを待つんじゃなくて、自分でスラッシュコンパクトを打って、
かつその後ろの指示文にこういう作業をやっていると、この辺を重点的に次はやりたいからその内容を含めてサマリーを作ってみたいな風に書いてくださいという風にこのブログでも書いておりました。
番組紹介とエンディング
最後サブエージェントですね。サブエージェントっていうのはメインのエージェントで作業していて、ある特定の作業を別のエージェントに依頼を投げて結果だけ返してもらうっていう機能ですね。
これをやると何がいいかというと、作業の中身、グルグル考える中身はいらないんだけど、結果だけ欲しいっていう時に使うと非常に便利なんですよね。
グルグルで考えるってこともコンテキストウィンドウに入ってしまうので、コンテキストが汚れてしまうっていうのを防ぐために、中間のデータはいらないでも結果だけ欲しいっていう場合にはこのサブエージェントを使うといいです。
一方でこのサブエージェントに依頼するときの中身のデータも必要な場合は逆にサブエージェントを使うのは良くないという風に言われています。
例えば何かドキュメント文章を書きたいっていうタスクがあったとして、このドキュメントを書くということ自体をサブエージェントに投げてしまうと、
もちろんサブエージェントはドキュメントを書いて結果を返してくれるんですが、どういう判断をしてこの文章を書いたのかっていうコンテキストが全部ない状態で返ってくるので、
その内容をもとに何でここを書いたのって指示をしてもメインのエージェントは知らないので答えがわかんないんですよね。
なのでこのメインのタスクなのにサブエージェントに渡すっていうのは正解ではないんだけど、メインじゃないもので中身のデータはいらないけど結果だけ欲しいっていう場合はサブエージェントを使ってあげた方がこのコンテキストウィンドウが汚れずに済むという話です。
例えばですけど何か仕様があってコードを書いてて結果まで出ましたというものに対して、この仕様に対して結果が合ってるのかっていう確認をするのはサブエージェントがいいですよね。
このメインのエージェントっていうのは今までのやり取りを全部知ってるのでバイアスがかかってますと。一方でサブエージェントにこの仕様があってこの結果でした。
差分がありますかとちゃんと要件満たしてますかっていうクリアの状態で渡してあげると01でもう一度考えて合ってる合ってないっていうのは結果だけ返してくれるというものですね。
それから今までの実装を踏まえてドキュメントを書いてほしいというものもサブエージェントが適していると思います。
一個前に話したこのドキュメントを書くものをサブエージェントに渡してはいけないですよねって話ではなくて、今回の場合はコードを書くというタスクでした。
それに対して一応ドキュメントも書いておきたいですというものに関してはこのメインのタスクではないのでドキュメントを書くっていうのはサブエージェントに任した方がいいと。
必要なのはドキュメントを書くという結果だけなのでこれはサブエージェントに渡しましょうという話ですね。
これらいろんな手法を使ってうまくこの100万トークンを使いこなしましょうという話です。
なのでアンソロピックが言いたいのは100万トークンあるぞやったぞやった全部使おうではなくて100万トークンがあるからこそケチケチ使おうじゃないですか。
よく考えて使いましょうってことですね。
AIの特徴この利益を全部覚えているから汚いコンテキストウィンドウになってしまうと結果が悪くなってしまうよねっていうのを理解した上で定期的に新しいセッションに分けるとかサブエージェントを使うとかコンパクトをしましょうっていうのを
やっていきましょうってことが改めて書かれておりました。
長々と語ってきましたけれども今回はオーパス4.7が新しく出たのでそれのどういう特徴があるのかという解説とそれから1メガ100万トークンの使い方という話をしてみました。
ということで最後に番組のご紹介をさせてください。
この番組はYouTube、Apple Podcast、Spotifyなどで配信しております。
ぜひお好きなプラットフォームからサブスクライブお願いします。
ご感想リクエストなどもしございましたら、ハッシュタグDevelopFMで呟いていただくか、概要欄のフォームコメント欄よりいただけますと幸いです。
それでは次回の配信でお会いしましょう。ご視聴ありがとうございました。
25:35
コメント
スクロール