Duet AI for Developers の概要

1. はじめに

このラボでは、Google Cloud の AI を活用したコラボレーターである Duet AI を使用します。Duet AI Chat とインライン コード アシスタンスを使用してコードを生成したり、コードを理解したりする方法を学びます。

演習内容

  • Cloud Shell IDE を使用して、ウェブ アプリケーションの既存のコード テンプレートをダウンロードします。
  • Cloud Shell IDE で Duet AI Chat を使用して、Google Cloud に関する一般的な質問をします。
  • Cloud Shell IDE で Duet AI インライン コード アシスタンスを使用して、コードの生成、要約、補完を行います。

学習内容

  • コード生成、コード補完、コード要約など、さまざまなデベロッパー タスクに Duet AI を使用する方法。
  • Duet AI を使用して Google Cloud について理解する方法。

必要なもの

  • Chrome ウェブブラウザ
  • Gmail アカウント
  • 課金が有効になっている Cloud プロジェクト
  • Cloud プロジェクトで有効になっている Duet AI

このラボは、初心者を含むあらゆるレベルのデベロッパーを対象としています。サンプルアプリは Python 言語で記述されていますが、内容を理解するために Python プログラミングに精通している必要はありません。デベロッパー向け Duet AI の機能に慣れていただくことを目的としています。

2. セットアップ

このセクションでは、このラボを始めるために必要なすべての手順について説明します。

Google Cloud プロジェクトで Duet AI を有効にする

Google Cloud プロジェクトで Duet AI API を有効にします。以下の手順に沿って操作してください。

  1. https://console.cloud.google.com にアクセスし、このラボで使用する Google Cloud プロジェクトが選択されていることを確認します。右上にある Duet AI アイコンをクリックします。

e28d7b796fb2ab47.png

  1. コンソールの右側に Duet AI のチャット ウィンドウが開きます。下図の [有効にする] ボタンをクリックします。[有効にする] ボタンが表示されず、Chat インターフェースが表示されている場合は、プロジェクトで Duet AI がすでに有効になっている可能性が高いため、次のステップに進んでください。

f207244ecb9d6b0d.png

  1. Duet AI を有効にすると、クエリを 1 つまたは 2 つ実行してテストできます。サンプルクエリがいくつか表示されますが、「What is Cloud Run?」のようなクエリを試すことができます。

faa821f22611784a.png

Duet AI が質問に対する回答を返します。右上の f68286b2b2ea5c0a.png アイコンをクリックすると、Duet AI のチャット ウィンドウが閉じます。

Cloud Shell IDE で Duet AI を有効にする

この Codelab の以降の部分では、Cloud Shell IDE を使用します。Cloud Shell IDE で Duet AI を有効にして構成する必要があります。手順は次のとおりです。

  1. 下に示すアイコンで Cloud Shell を起動します。Cloud Shell インスタンスの起動には 1~2 分かかる場合があります。

72dc3df7b007fcde.png

  1. [エディタ] または [エディタを開く] ボタンをクリックし、Cloud Shell IDE が表示されるまで待ちます。[新しいエディタを試す] ボタンが表示されている場合は、クリックします。

1e0437ef773faca8.png

  1. 下のステータスバーにある [Cloud Code - Sign in] ボタンをクリックします。指示に従ってプラグインを承認します。ステータスバーに「Cloud Code - no project」と表示されている場合は、それを選択して、使用するプロジェクトのリストから特定の Google Cloud プロジェクトを選択します。

3c448ebc5cef03e4.png

  1. (省略可)右下のステータスバーに Duet AI が表示されない場合は、Cloud Code で Duet AI を有効にする必要があります。まず、IDE で Duet AI が有効になっていることを確認します。[Cloud Code Extension] → [Settings] に移動し、下の図のように「Duet AI: Enable」と入力してください。チェックボックスがオンになっていることを確認します。IDE を再読み込みする必要があります。これにより、Cloud Code で Duet AI が有効になり、IDE に Duet AI ステータスバーが表示されます。

d5743fc11ee117bc.png

  1. 図のように右下の [Duet AI] ボタンをクリックし、Cloud AI Companion API が有効になっている正しい Google Cloud プロジェクトを選択します。

d98bff6476bb15a.png

  1. Google Cloud プロジェクトを選択したら、下の図のようにステータスバーの Cloud Code ステータス メッセージが表示されていることと、その右側で Duet AI が有効になっていることを確認します。

31002a565ea80e72.png

Duet AI を使用する準備ができました。

3. サンプル アプリケーションを作成する

Duet AI の機能を検証するために使用するサンプル アプリケーション(Python Flask アプリケーション)を作成します。

手順は次のとおりです。

  1. 下のステータスバーで Google Cloud プロジェクト名をクリックします。

a09e8f79daad1643.png

  1. オプション一覧が表示されます。下のリストで [New Application] をクリックします。

ed0e37d92af49b65.png

  1. [Cloud Run] アプリケーションを選択します。
  2. [Python (Flask): Cloud Run] アプリケーション テンプレートを選択します。
  3. 新しいアプリケーションを任意の場所に保存します。
  4. アプリケーションが作成されたことを確認する通知が表示され、下に示すように、アプリケーションが読み込まれた状態で新しいウィンドウが開きます。README.md ファイルが開きます。このビューは一旦閉じて構いません。

b29976a316b5bc21.png

4. Duet AI とチャットする

まず、Duet AI とチャットする方法について説明します。Duet AI は、VS Code の Cloud Code 拡張機能の一部として、Cloud Shell IDE 内でチャット アシスタントとして使用できます。左側のナビゲーション バーにある Duet AI ボタンをクリックして表示できます。左側のナビゲーション ツールバーで Duet AI アイコン 94e547b05e30e432.png をクリックしてください。

Cloud Shell IDE 内に Duet AI ペインが表示され、Duet AI とチャットして Google Cloud に関するサポートを受けられます。

b99f4f97fd1a1b62.png

Duet AI ペインを使用してプロンプトを入力し、Duet AI からの回答を確認しましょう。次のプロンプトを入力します。

What is Cloud Run? 

Duet AI から Cloud Run の詳細が返されます。プロンプトとは、必要なサポートについて説明する質問やステートメントのことです。プロンプトには、より有用な、または完全な回答を提供するために Google Cloud が分析する既存のコードからのコンテキストを含めることができます。良い回答を生成するプロンプトの作成方法については、Duet AI により適したプロンプトを作成するをご覧ください。

次のサンプル プロンプトまたは独自のプロンプトを使用して、Google Cloud に関する質問をしてみてください。

  • What is the difference between Cloud Run and Cloud Functions?
  • What services are available on Google Cloud to run containerized workloads?
  • What are the best practices to optimize costs while working with Google Cloud Storage?

5. コードの説明

コンテキストの切り替えを最小限に抑えながら生産性を向上させるため、Duet AI では AI を活用したスマート アクションをコードエディタに直接提供します。コードエディタでコードを選択すると、コンテキストに関連するアクションのリストを表示して選択できます。

Duet AI は、アプリケーション コードのパーツについての理解をサポートします。前の手順で作成したアプリケーションに戻り、Duet AI を使用して、IDE で使用可能なファイルとコードについての説明を表示できます。

  1. ファイルが表示されない場合は、IDE のアクティビティ バーで [Explorer](Code OSS Explorer メニュー)をクリックします。
  2. [Explorer] ペインで、[Dockerfile] を選択します。
  3. ファイルの内容の任意の部分を選択し、電球アイコン(Code OSS Duet AI 電球)をクリックして、[Explain this] をクリックします。たとえば、「ENTRYPOINT」で始まる行を選択し、電球アイコン(Code OSS Duet AI 電球)をクリックして、[Explain this] をクリックします。Duet AI は、詳細が知りたい Dockerfile の特定のセクションについて自然言語による説明を生成します。Duet AI は、ENTRYPOINT 命令の詳細を返します。この手順では、コンテナの起動時に Docker が app.py ファイルを実行します。
  4. app.py ファイルの内容を表示するには、アクティビティ バーで [Explorer](Code OSS Explorer メニュー)をクリックし、app.py を選択します。
  5. hello() 関数定義で、詳細情報を取得する行を選択してください。次に、電球アイコン(Code OSS Duet AI 電球)をクリックし、[Explain this] をクリックします。この例では、次の 2 行のコードを選択し、[Explain this] アクションをトリガーしました。

14d9c56af016b65d.png

  1. Duet AI は、これらの 2 つの Cloud Run 環境変数(K_SERVICE, K_REVISION)と、それらがアプリケーション コードでどのように使用されているかについて、詳細な説明を返します。なお、Duet AI は、Google Cloud と Cloud Run などのサービスに関する知識に基づいて、Python コードの説明だけでなく、Cloud Run 内の変数の意味についても説明します。

他にも以下の方法でコードの説明を取得できます。

  1. IDE で現在開いているファイルとして app.py を保持します。VS Code の左側のナビゲーション バーにある Duet AI チャットペインに移動し、「Explain this file」というプロンプトを入力します。ファイル全体が検討され説明が表示されます。
  2. ファイルの任意の部分を選択して、左側の Duet AI チャットペインで [Explain this] とプロンプトを入力することもできます。ファイルの選択箇所のみについて説明が表示されます。これは、電球アイコン(Code OSS Duet AI 電球をクリックしてから [Explain this] をクリックするのと類似の操作です。
  3. また、テキストの一部を選択して、IDE の右上にある [Duet AI Smart Actions] をクリックすると、選択したテキストに対して実行可能なアクションのリストが表示されます。そのなかに [Explain this] アクションのオプションがあります。

35b59223f0726492.png

6. プロンプトを使用してコードを生成する

このセクションでは、Duet AI を使用してコメントからコードを生成する方法について説明します。

機能を試してみましょう。以下の手順に沿って操作してください。

  1. utils.py という名前の新しいファイルを作成します。
  2. 新しいコードファイルの新しい行に「# Function to print a list of blobs in a Google Cloud Storage bucket」と入力し、Enter キー(Windows および Linux)または Return キー(MacOS)を押します。入力時に Duet がコードを生成しようとする場合がありますが、受け入れないでください。コード生成は次のステップでトリガーします。
  3. コード生成をトリガーするには、Control+Enter キー(Windows および Linux)または Control+Return キー(MacOS)を押します。コードは、Python ファイルのプロンプト テキストの横に、Duet AI がゴースト テキスト形式で生成します。ツールバーを使用して 1 つまたは複数のコード候補が提案されます。候補が複数ある場合は、ツールバーで候補間を移動できます。ツールバーでコード候補を受け入れることもできます。ツールバーが表示されない場合や消えてしまった場合は、生成されたコードにカーソルを合わせると再び表示されます。
  4. 省略可: 生成されたコードを受け入れるには、Tab キーを押します。候補が複数ある場合は、Tab キーを複数回押すと候補のコード スニペット間を順に移動できます。

これにより、受け入れたコードが utils.py ファイルに挿入されます。以下のスクリーンショットに例を示します。提供されるコードは、下記のコードとは異なる場合があります。

ef132e1f83eaf508.png

コードの周りに波線が表示されています。これは Code citation 機能によるものです。任意の行にカーソルを合わせると、コード帰属とライセンスに関するその他の関連情報が表示されます。以下に例を示します。

84b8d1024b867a48.png

その後、[Quick Fix...] をクリックすると、引用に関する警告を無視できます。これにより、クイック修正の提案が表示されます。以下に例を示します。

10f4672830954c90.png

コードのライセンスを受け入れる場合は、[Ignore Citation Warning] を選択できます。

(省略可)コード生成の際に試せる他の方法を以下に示します。

  1. Duet AI のチャット機能を使用して、チャット ウィンドウに同じプロンプトを入力し、回答を取得することもできます。Chat インターフェースに、コードをコピーするか、現在のファイルに挿入するかを選択するオプションが表示されます。
  2. ご希望のサンプルコードを得るための独自プロンプトを作成してみてください。以下に提案をいくつか示します(いずれかの Python ファイルで作業していることを前提とします)。以下のプロンプトから選択して使用することもできます。
  • Google Cloud Pub/Sub にメッセージをパブリッシュする Python コードを作成してください
  • BigQuery クライアントを初期化するための Python コードを作成してください
  • アプリケーションを Cloud SQL に接続する Python コードを記述してください

7. コーディング中にインライン コード候補を表示する

Duet AI は、コードの記述中にインライン コードの候補を作成します。ユーザーはこれを取捨選択できます。この機能を試すために、前のセクションで作成した utils.py ファイルを編集します。

  1. Cloud Shell IDE で、utils.py ファイルを現在のファイルとして開きます。
  2. 生成されたコードに正しい import ステートメントが含まれていない場合は、ステートメントを指定してください。
  3. import」と入力すると、Duet AI がゴースト テキスト形式でコードの候補を表示します。Duet AI のコード候補を受け入れるには、Tab キーを押します。または候補を無視するには、Esc キーを押すか、引き続きコードを記述します。以下のサンプル画面では、コードで使用されている storage クラスのインポートが提案されています。Tab キーを押してコード候補を受け入れます。import os ステートメントも提案されていますが、これは不要なので削除できます。

cb3dfff74172959d.png

  1. utils.py ファイルの末尾に移動し、関数を呼び出す行を追加します(指定されていない場合)。この場合、list_blobs 関数です。関数名を入力し始めると、コード補完を使用してステートメントを完成できます。
  2. bucket_name を指定する必要があり、「duetai-tour-bucket」という公開バケット名を使用できます。関数呼び出しの例を以下に示します。関数名などには若干の違いがある場合があります。

ac3818b516ef228f.png

(省略可)サンプルコードを実行する

Google Cloud Storage バケットの blob を一覧表示するコードを作成したので、google-cloud-storage Python ライブラリをインストールする必要があります。

requirements.txt ファイルに移動し、google-cloud-storage の依存関係を含む新しい行を追加します。requirements.txt ファイルの例を以下に示します。

Flask==2.3.3
requests==2.31.0
debugpy # Required for debugging.
google-cloud-storage

requirements.txt ファイルを保存します。

コードを実行するには、左上のメニュー アイコンから Cloud Shell IDE で新しい Terminal セッションを起動する必要があります。メニュー アイコンをクリックし、下に示すように [Terminal] → [New Terminal] を選択します。

6bd5bec67de34b2a.png

Terminal セッションで、次のコマンドを使用して Python の依存関係をインストールします。

pip install -r requirements.txt

最後に、次のコマンドで utils.py ファイルを実行します。

python utils.py

公開の Google Cloud Storage バケットにある blob が表示されます。出力に 2 つの blob(file1.txtfile2.txt)が表示されているのが望ましい状態です。

トラブルシューティング

上記の公開バケット内のオブジェクトを表示する際に「アクセス」エラーが発生した場合は、独自の Google Cloud Storage バケットを作成して、duetai-tour-bucket の代わりに使用できます。次のセクションでは、その方法について説明します。

(省略可)独自の Cloud Storage バケットを作成する

Duet AI を使用して、バケットを作成、一般公開し、サンプル オブジェクトをバケットにアップロードするコマンドを実行します。

What is the gcloud command to create a public bucket in Google Cloud Storage?」というプロンプトから始めます。

このプロンプトにより、バケットを作成するための gcloud コマンドが取得できます。正確なコマンドは次のとおりです。

gcloud storage buckets create gs://<BUCKET_NAME>

<BUCKET_NAME> の一意の名前を選択し、ターミナルでコマンドを実行します。

バケットが作成できたので、バケットを一般公開します。「How do I make a google cloud storage bucket publicly accessible?」というプロンプトを使用して、Duet AI にそのコマンドを質問してみましょう。

これにより、一般公開するための gcloud コマンドが提供されます。回答は次のようになります。

gcloud storage buckets add-iam-policy-binding gs://<BUCKET_NAME> --member=allUsers --role=roles/storage.objectViewer

<BUCKET_NAME> を、前に使用したバケット名に置き換えてコマンドを実行します。

最後に、いくつかのサンプル ファイルをバケットにアップロードします。ターミナルで次のコマンドを実行します(<BUCKET_NAME> 変数をバケット名に置き換えてください)。

touch f1.txt
touch f2.txt

gcloud storage cp f1.txt gs://<BUCKET_NAME>
gcloud storage cp f2.txt gs://<BUCKET_NAME>

これで、duetai-tour-bucket の代わりに、<BUCKET_NAME> を使用して utils.py ファイルを実行できるようになりました。

8. 完了

サンプル プロジェクトで Duet AI を利用し、コード生成、コード補完、コード要約を行う方法、および、Google Cloud に関する質問への回答を得る方法が理解できました。

リファレンス ドキュメント