🦄

Q Developer縛りでGameDay攻略

に公開

はじめに

Amazon Q DeveloperはCLI Agentの登場や日本語サポートなど目覚ましい進化を続けていますが、そんなQを実際にGameDayで使ってどれくらいすごいのか体験してみようという素晴らしいイベントに参加させていただきました。その名も「AWS GameDay ~Secure Legends ハードモード(再演) with Amazon Q Developer~」!

再演とあるように、シナリオは昨年7月に2024年のTop Engineers向けに開催されたものと同じでした。自分を含めて一度やったことがある人が多かったと思いますが、Qを使った場合とそうでなかった場合の比較にはもってこいのシナリオだったと思います。

結論としては、自分は(AWSさんの思惑通り?)Q Developerに感動しちゃったんですが、昨年一位だった自分たちのチーム「ガチQ縛り」 でどこまで行けたのか、Qの実力、Qにうまく働いてもらうためのコツなどを、熱が冷め切る前に書き残しておこうと思います。

Q Developer について

Q Developerには、FreeとProの2つの料金プランがあります。FreeとProの違いや最新の利用料金はこちらを見ていただくのが良いと思いますが、FreeにはCLIでのチャット回数やAWSアカウントリソースに関するクエリ数などに制限があります。

Q DeveloperはSDLCを広くカバーしているのですが、今回の使用範囲はFreeプランでも全く使えないわけではないので、Builder IDを作ってとりあえずお試ししてみるのもよいですし、Proも月額わずか19ドルなので1ヶ月間使い倒してみるのもよいと思います。

今回はProを使わせていただきました。code-serverも用意していただいていたので、code-serverのターミナルからQ CLIを使用しました。メモをとったり、Qにスクリプトを書いてもらったりすることも考えると、エディタやIDEから使うのは理にかなっていると思います。あと、Qが大量のログをダウンロードしてきて展開したりもしてたので、自分のPCを使わなくてよかったのも精神衛生上よかったです。

Proを使う際は、IAM Identity Centerが必須であることの方が金額よりもネックになるかもしれませんが、アカウントインスタンスでも利用できるのでぜひトライしてみてください。なお、今回のGameDayの環境もアカウントインスタンスを使用しているように見えました。

Q Developerの実力

使う側のスキル

Qの実力を引き出すには使う側のスキルも重要です。今回のチームメンバーは4人ともAIから縁遠い仕事をしており、Q DeveloperのCLI Agentを使用するのも全員初めてでした。GenAI利用者として基礎的な知識がある程度と考えていただくと良いと思います。

ガチ「Q縛り」の結果

いざGameDayの画面を目にすると自分たちの力で解きたい衝動を抑えるのに苦労しましたが、「今日はスコアを気にせず、Qを使い倒して楽しんで欲しい!」ということだったので、ぐっと我慢w Qをどれくらい使うかは各チームに委ねられていたように思いますが、うちのチームは「自分で考えるのも、Q以外からの変更操作も禁止」というガチの「Q縛り」で臨むことにしました。

結果としては、自分の担当したクエストはいろいろ苦労はしたものの、マネコンでの変更操作を一切することなく、私の推測も操作もゼロでQだけでクリアすることができました。プレイ中にマネコンを見たのは、指示した結果がちゃんと実行されたかの確認程度でした。当日GameDayのシステムにいくつか問題があり、Qが使える状態になるまで30分くらいかかってしまったのですが、それでもクエストクリア順序も一番だったかもしれない。

チームメンバーが担当したクエストも似た感じだったようで、Qの使いこなしを探る中で壊してしまったリソースを修復した程度だったようです。メンバーのひとりは、インスタンス内の調査までQがやってくれたことに感動していました。Session Managerプラグインが必要ですが、そのインストールの必要性もQが指示してくれたとのこと。

全体としては、全クエストのクリア時間は参加チームの中で最速でした。順位も終了15分くらい前までは1位で、最終的には3位でした。今回順位は二の次ですが、1位と2位に大きく差をつけられてしまった(見た限りでは2位のチームは全クエストをクリアできているように見えなかった)のですが、点差がプレイ時間から考えても減点では説明がつかず少々不可解でした。

プレイ中、クエストが動いているのにクエスト起動のためのチャレンジがなぜか未クリアに戻ったり、クリア済マークのついているチャレンジが未クリアに戻ったりと、GameDayのシステムの動きがちょっと怪しかったので、どこかでポイントを取り損ねたのかなと。

それはさておき、Top Engineers相手に最速クリア&3位入賞って、Qすごくないですか?

所感

トラシューでQなんて使い物にならんやろって思ってたんですが、それは完全に間違いでした。正直自分でやればもっと早く解く自信はありますが、他の人に指示してやってもらうことを考えるとQに勝てる人はそんなに多くないと思います。

いつものチームメンバーは、雑い指示で勝手にバッチリやってくれるので最高ですが、あまりAWSに詳しくない人に背景や問題調査の方法を説明したり、調査結果を解説したりして対処することを考えると、操作時間の差でQに軍配が上がるように思います。

全体的な見通しを持ってQがわかるように指示する力は必要ですが、それは人間相手でも同じことなので、これが月額わずか19ドルで使えるのは驚きしかありません。同じ土俵で戦うのはやめた方がいいですね。

Qが調査して応答するまでに待ち時間が結構あるので、Q CLIを複数起動して並行して作業を進めていましたが、エージェントを同時に使ってクエストを一人で同時に解くとかもできるかもしれません。むしろ、使う側のコンテキストスイッチの方が不安ですw

Q Developerで調査する際のコツ

1. Qに考えさせる

後から知ったことですが、現時点でCLI Agentが利用しているClaude 3.7 Sonnetは拡張思考モードをサポートしており、AnthropicのDeveloper Guideでは「まず一般的な指示を出し、その後より詳細なステップバイステップの指示でトラブルシューティングを行う」というテクニックが紹介されています。

「自分ならこうする」というのが頭にあることもあり、詳しくない人に指示する時のように、Qにもやってほしいことをステップバイステップでリストして一気に指示したくなるのですが、今回はQの力で解くというのを意識していたこともあり、何も分かってない体でQに考えてもらうようにしていたのが功を奏したのかもしれません。

2. 指示は分割し、サマリーを引き継ぐ

いきなり現象の根本要因を答えさせたり解決を指示したりすると、無関係な調査を始めたり、おかしな対処を提案してきたりします。

詳しくない人にいろんなことを一気にお願いすると混乱させてしまうのと同様に、Qもあまり関連のない指示を一気に入力されると精度が落ちるようです。

マルチターンでチャットを続けられるので、ついつい次の指示を出してしまいますが、チャットが長くなる場合も精度が低くなると感じました。

ある程度全体が見通せていないと難しいと思いますが、区切りの良いところでチャットを一旦終了させていました。終了前にQにサマリーを出してもらって、それを次のチャットの入力に使うと、コンテキストを保持しながら精度を維持することができていたように思います。

分割については、AnthropicのDeveloper Guideでも、プロンプトのチェーン化が言及されています。後から知ったのですが、マルチターンでのチャットが長くなるほど信頼性が低下することを指摘する論文「LLMs Get Lost In Multi-Turn Conversation」も今月発表されているようです。

3. やらなくてよいことは明に指示する

Qに考えさせろと書いておいて一見矛盾しているようですが、やらなくてよいことはQに明に指示した方が良いです。現象だけを書いてQに調査させると、無関係なリソースや全期間のログをすべてイテレートして、各エントリを理解しようとする傾向がありました。長時間待たされた挙句、回答精度も低いという状況を回避するためにも、対象リソースや日付を明示的に限定することをお勧めします。

4. ダメなら言い方を変えてみる

Q DeveloperのCLI Agentは日本語をサポートしています。最初に日本語で指示すると応答も大抵は日本語で返ってきます。明示的に日本語で答えるよう指示してなかったせいもあるかもしれませんが、対話を重ねてるうちに気づいたらさっきから英語で回答してくるなぁ、ということが結構ありました。なお、英語の応答に対して日本語で指示したからといって、特に問題があるようなケースはありませんでした。

AnthropicのDeveloper Guideには「拡張思考は英語で最高のパフォーマンスを発揮する」と書かれており、そのせいなのかは定かではありませんが、日本語での指示がうまく解釈されていないと感じることはありました。英語で同じ内容を指示すると意図通りに動いてくれましたが、日本語でも言い方を変えるとうまくいく場合もあったので、単に伝え方の問題なのかもしれません。人間相手でも言い方を変えると分かってもらえることは多々ある気がするので、伝え方は大事ですね。

5. Qだけで解こうとしない

ネタバレになるので詳しくは書けないのですが、Secure Legendsにはパズルのような要素が含まれています。LLMはその仕組みからも、数を数えたりするのは得意ではありませんが、パズルについて考えさせたのち、パズルを解くスクリプトを生成させて、そのスクリプトを使って解くことで、完璧とはいえませんが高い精度で正解を得ることができました。課題によっては、Qに最後まで考えさせるより、LLMの苦手なところをカバーする中間的な生成物(今回でいうとスクリプト)を作らせて、それを使用して解くというアプローチがうまくいくと思います。

あと、今回パズルを解かせようとすると拒否してくることもありましたが、「あなたはパズルマスターです」とロールを指示すると、積極的に取り組んでくれるようになりました。

まとめ

Q Developerに丸投げで同じシナリオを攻略してきました。QはTop Engineersを相手に最速クリア&3位入賞と、素晴らしい成果をあげてくれました。今回はセキュリティに関するGameDayでしたが、コーディングがあるようなGameDayだとQ Developerがもっと活きるかもしれません。

GameDayの環境ということで、気軽にQ Developerを「Trust」できたのですが、Qが提案してきたこと以外を実行しているケースもありました。本番環境での使用にはまだ注意が必要ですが、Qが人間を上回るのも時間の問題だと思います。

自分は自然言語のプロンプトを書くのが面倒でなんとなくGenAIを避けてきたのですが、Qで解くことにこれまでのGameDayとは違う楽しさを見出せたので、Q以外で操作したら減点されるようなQ縛りGameDayを作ってほしいです!

完全に余談ですが、語尾に「ぴょん」をつけるように指示すると、「攻撃を受けていますぴょん」とかシリアスな状況を和ませてくれるのでオススメです。

Discussion