MEGAZONE

MEGAZONEブログ

Best practices for Amazon CodeWhisperer
DevOps and Developer Productivity re:Invent 2023

Best practices for Amazon CodeWhisperer

Pulisher : Managed & Support Center イ・スンヒ
Description : Amazon CodeWhispererが提供する機能について紹介するセッション

今年4月にCodeWhispererサービスがリリースされ、実際のお客様の使用事例をあまり見たことがありませんでしたが、生成型AIベースのサービスとして当該サービスが提供する機能についてもっと知りたいと思い、セッションを申し込みました。

このセッションでは、CodeWhispererサービスを使用するベストプラクティスについて確認します。さらに、このサービスが持つ機能について実際に見ていきます。

4月にCodeWhispererがGA(Generally Available)になってからこれまでの変化のスピードを考えると、生成型AIを活用して開発者エクスペリエンスをさらに向上させました。 このサービスを開発するAWSの目標は、開発者の負担を軽減し、より生産的で創造的で、より良い品質のコードを生産できるようにすることです。 このサービスの仕組みについて説明する前に、次の章で簡単なユースケースを紹介します。

CodeWhispererはVS CodeやJetBrains製品群の拡張機能としてAWSツールキットからインストールされます。AWSツールキットをインストールすると「CodeWhisperer included」と表示され、CodeWhispererを使用することができます。CodeWhispererの主な使用事例を紹介するため、JavaScriptで始める予定ですが、これはユーザーがコーディングすることを検知して提案をします。 例えば、「topological sort」という関数を作成すると、CodeWhispererが提案したコードをタブキーを押してファイルに書き込むことができます。そうすると、提案されたコードがファイルに書き込まれます。

最近、Rust、SQL、C#のサポートが発表されましたが、クラウドフォーメーション、AWS CDK、そして個人的に最も重要だと思うTerraformのサポートも発表しました。 インフラをコードで拡張することで、より多くの機能を提供します。SQLをサポートすることで、組織内で過去に使用したパターンを基に、より効率的なクエリを作成することができます。これにより、アプリケーションレイヤーを越えてデータベースレイヤーまで拡張できるようになり、構築するすべてのアプリケーションでより統合された普遍的なエクスペリエンスを提供することができます。

これは「プロンプトエンジニアリング」と呼ばれる、最近よく使われるようになった用語で、入力コンテキストに適したものを記述して目的の出力を得る方法です。 このような基礎モデルの仕組みについて非常に興味深いのは、入力コンテキストを見て、可能な限りそのコンテキストを出力に反映させようとすることです。 つまり、パターンマッチングを試みることです。

これをCode Whispererにも適用し、別のものをプロンプトするときにも、同じように行われます。

コンテキストについて詳しく説明します。 コンテキストは、モデルに入力されるすべてのものに関係しています。つまり、クライアントで実行されている機械学習分類器は、モデルをトリガーする適切なタイミングを探しており、「コンテキストウィンドウ」と呼ばれる範囲内のすべてのものを収集します。CodeWhispererが最初にリリースされたとき、コンテキストウィンドウは作業中のファイルに限定されていました。 そのため、作業中のファイルだけを見ることができました。 しかし、作業中のファイルが他のファイルに関連している場合もあるため、コンテキストウィンドウを「クロスファイルコンテキスト」に拡張しました。 これは、他のファイルを開いている場合、開いているすべてのファイルをコンテキストウィンドウ全体で見ることを意味します。 そのため、あるファイルで行っている作業が他のファイルの内容に関連している場合、それを理解して使用することができます。

CodeWhispererはそれを推論し、そのコメントからコードを書くことができます。 適切な構造で入力コンテキストを提供することで、関数を作成し、基礎モデルに要件をより詳細に提供します。

上の画面で提示された例のように、「文字列を引数として受け取り、合計する関数を書きたい」と始めました。ほとんどの加算関数は数値を入力として受け付けますが、私はやりたいことの非常に具体的な要件を提供しました。 次に、関数が実行すべき5つの要件を追加しました。 最初の行だけ「文字列を受け取って加算する関数を作成してください」と言っただけなら、非常に単純な関数ができたでしょう。 しかし、これらすべての要件のおかげで、例えば「throw new Error(‘Function not implemented.’)」のような素晴らしい例ができました。

VS Codeのターミナルでコマンドラインを使用していたので、「CW AI」と入力しました。CodeWhisperer AIはターミナル用です。 ターミナル用のCodeWhispererは約1週間前にリリースされ、500以上のCLIにオートコンプリートと自然言語機能を追加しました。

これで、「CodeWhisperer、私がやろうとしていることはこれです」と言うと、必要なコマンドを教えてくれ、そのコマンドを実行したり、修正したり、不正確であったり、間違った表現をした場合は取り消すことができます。

時には、モデルに入るデータをより選択的に選択することで、異なる結果、時にはより良い結果をもたらすことができることがわかりました。 CodeWhispererをあなたのコードリポジトリに指定することで、CodeWhispererが好みの方法でコードを書く方法を学習し、それに応じて推奨事項を作成することで、より良い結果をもたらすことができるようになります。環境に基づいてモデルを訓練させることを意味します。

今回のセッションを聞いて、CodeWhispererサービスはAI基盤のコード作成のツールにとどまらず、新しくリリースされたカスタマイズ機能を通じて、よりユーザーフレンドリーなサービスを目指していることを理解しました。サービスの各機能について、実際のデモ画面を一緒に確認することができ、理解に役立ちました。このサービスを利用することで、より効率的にコードを作成することができると期待されます。

ブログ一覧

この記事の読者はこんな記事も読んでいます