Vertex AI Agent Builder を使用した AI エージェントの構築

1. 始める前に

このペースで進められる Codelab では、Google Cloud の Vertex AI Agent Builder を使用して AI エージェントを構築する方法について説明します。各ステップでは、Agent Builder の特定の機能に焦点を当て、その目的を説明します。

前提条件

学習内容

  • Vertex AI Agent Builder を使用してシンプルな AI エージェントを作成する方法
  • データストアを接続して作成したエージェントをグラウンディングする方法
  • AI エージェントをウェブサイトに統合する方法(省略可)

必要なもの

  • 好奇心
  • 動作するパソコンと信頼できる Wi-Fi
  • 課金が設定された Google Cloud プロジェクト。

注: Google Cloud プロジェクトがまだない場合は、手順に沿って作成できます。Google Cloud の無料枠サービスもご確認ください。

2. 最初の AI エージェントを設計する

これで、独自の AI エージェントを作成する準備が整いました。開発に入る前に、エージェントの明確なビジョンを確立することが重要です。次の重要な質問について考えてみましょう。

  • どのような問題を解決しますか?タスクの自動化、情報の提供、エンタメの提供、創造的な探索の促進を行いますか?
  • 主な機能は何ですか?タスクを実行しますか、タスクを委任しますか?テキストを生成しますか、さまざまなメディアの組み合わせを生成しますか?
  • 制限事項は何ですか?すべてを自律的に行うことができますか?
  • どのような個性やペルソナを持つべきですか?フォーマル、カジュアル、ユーモラス、親切、情報提供型ですか?
  • 成功指標は何ですか?エージェントの有効性をどのように測定しますか?

プロセスを迅速に進めるために、今日作成する旅行代理店に関するこれらの質問への回答を以下に示します。

  • どのような問題を解決しますか?
  • 旅行の計画は時間がかかり、大変な作業になることがあります。この旅行代理店は、ユーザーが目的地を見つけ、旅程を計画し、フライトと宿泊施設を予約するのに役立ちます。
  • 主な機能は何ですか?
  • エージェントは次のことができる必要があります。
  • ビザの要件など、目的地に関する質問に回答する
  • ユーザーのスケジュールと目標に合った旅程を計画する
  • フライトと宿泊施設を予約する
  • 制限事項は何ですか?
  • エージェントはデフォルトで複雑なクエリに回答できない場合があります
  • エージェントはビジュアル イメージを生成できません
  • エージェントの知識は基盤となるモデルによって制限されます
  • どのような個性やペルソナを持つべきですか?
  • このエージェントは、知識が豊富で、親切で、旅行に熱心である必要があります。情報を明確かつ簡潔に伝えることができる必要があります。
  • 成功指標は何ですか?
  • このエージェントの成功は、ユーザーが推奨事項(探索、計画、予約)にどれだけ満足しているかによって測定できます。

3. Vertex AI Agent Builder を使用して AI エージェントを構築する

Vertex AI Agent Builder を使用すると、AI エージェントを数ステップで作成できます。

ステップ 1:

  • Vertex AI Agent Builder に移動します。
  • スタートページが表示されます。 833886ce0d2645ba.png
  • [続行して API を有効にする] ボタンをクリックします。

ステップ 2:

  • アプリの作成ページにリダイレクトされます。 f2d45cc76d62edeb.png
  • [新しいアプリを作成] ボタンをクリックします。

ステップ 3:

  • [**会話エージェント**] を選択し、[**作成**] をクリックします。

732d2cd9e10c9a79.png

注:

  1. [作成] をクリックすると、[Diaglogflow 会話エージェント] の新しいタブが開きます。
  2. [**Google Cloud プロジェクトを選択**] するよう求められたら、正しい Gmail アカウント に関連付けられている Google Cloud プロジェクトを選択してください。
  3. 新しいアカウントでこのラボを実施する場合は、Dialogflow API を有効にするよう求められます。[API を有効にする] をクリックして有効にします。

238281df06301db0.png

  • ボタンをクリックしても機能しない場合は、 API ページ に直接移動して手動で有効にできます。
  • 新しく開いた Diaglogflow ページで、[エージェントを作成] をクリックします。

42515e46bc63506d.png

  • エージェントを作成するためのオプション が表示されるので、[独自に作成] を選択します。

8af6bf0853f20768.png

ステップ 4:

  • 表示名 を選択します(例: Travel Buddy)。
  • [ロケーション] で、[global(Global serving, data-at-rest in US)]リージョン として選択します。
  • 他の構成はデフォルト のままにします。
  • [作成] ボタンをクリックします。

4e0dea29e5d8acde.png

ステップ 5:

  • Playbook 名 を選択します(例: Info Agent)。
  • 目標 を追加します(例: 旅行関連のクエリに回答する)。
  • 手順 を定義します(例: ユーザーに挨拶し、用件を聞きます)。
  • すべてが完了したら、[保存] を押します。

f8bfd605ddd97cf8.png

ステップ 6:

  • [Toggle Simulator] アイコン 72588cbe8734f54e.png をクリックします。
  • 作成したエージェント(例: Info Agent)を選択します。
  • エージェントの基盤となる生成 AI モデルを選択します(例: gemini-1.5-flash)。
  • エージェントと会話してエージェントをテストします([ユーザー入力] テキスト ボックスに何か入力します)。

3ac3cf54a1e2098.png

おめでとうございます。Vertex AI Agent Builder を使用して AI エージェントを作成できました。

4. エージェントにデータストアを接続する

エージェントにワカンダへの行き方について質問してみます(例: 「ワカンダに行くにはどうすればよいですか?」)。次のような回答が返されます。

5baa2dbabe2941a2.png

これは事実として正しいですが、「情報を提供できません」とだけ言って会話を終了するのではなく、エージェントが類似の場所を提案する方がユーザーにとって役立ちます。このアプローチにより、ユーザーがエージェントを通じて実際に旅行を予約する可能性があります。

エージェントが類似の場所を推奨できるようにするには、データストアを通じてエージェントに詳細情報を提供します。これは、エージェントが組み込みの知識に基づいてユーザーの質問に回答できない場合に参照する追加のナレッジベースとして機能します。

注: シミュレータを閉じる場合は、シミュレータ切り替えアイコンをもう一度クリック します。

データストアの作成は簡単です。[エージェントの基本] ページの最下部にある [+ データストア] ボタンをクリックします。

6c3ef19fefc46af7.png

次の情報を入力します。

  • ツール名: Alternative Location
  • タイプ: データストア
  • 説明: ユーザーのリクエストに存在しない場所が含まれている場合は、このツールを使用します

完了したら [保存] をクリックします。

これにより、エージェントがデータストアと通信するためのデータストア ツールが作成されますが、情報を含む実際のデータストアを作成する必要があります。これを行うには、[データストアを追加してデータストアを作成] をクリックします。

65c790a87de8fba8.png

7648d478a6f35cf0.png

[新しいデータストアを作成] をクリックすると、次のように Vertex AI Agent Builder ページにリダイレクトされます。

Cloud Storage オプションを選択します。

bff5455fac531509.png

このステップが完了したら、

  • [ファイル] をクリックします(非常に重要 です。そうしないとインポートが失敗します)。
  • ai-workshops/agents/data/wakanda.txt 」と入力します。
  • [続行] をクリックします。

d1983baa579eb78c.png

参考までに、提供されたテキスト ファイルの内容を以下に示します。

Places that are similar to Wakanda

- Oribi Gorge in South Africa: The rock formations here are reminiscent of the Warrior Falls in Wakanda.

- Iguazu Falls: Located on the border of Argentina and Brazil, these massive waterfalls were a major inspiration for the Warrior Falls.

- Immerse yourself in Wakandan culture: Read the Black Panther comics, watch the movies, and explore online resources to learn more about Wakandan culture, language, and technology.

- Visit a Disney theme park: While there isn't a dedicated Wakanda land yet, you might be able to meet Black Panther at Disneyland or on a Marvel Day at Sea Disney cruise.

次のページで、データストアに名前(例: Wakanda Alternative)を付けて [作成] をクリックします。

93eb71e8d019ae24.png

最後のステップとして、作成したデータソースを選択し、[作成]をクリックします。データストアのインポートの進行状況は、データストアをクリックすると確認できます。

de1ac9256cc96f29.png

注: インポート アクティビティが正常に完了するまでに時間がかかります。このアクティビティが進行中の場合は、Vertex AI エージェントで使用できるその他のデータストア オプションをこちらで確認できます。

9b5c4a2831728a6b.png

すべてがスムーズに進んだら、dialogflow タブ に戻って [更新] をクリックします。[使用可能なデータストア] ページに作成されたデータストアが表示されます。

a44373b78bd95ff0.png

エージェントがハルシネーションしないように、データストアのグラウンディング構成で、設定を [非常に低い] に設定します。これにより、エージェントがでたらめを言うことが厳しく制限されます。今のところはデフォルトのままにしておきますが、いつでもさまざまな設定で試すことができます。

c1605bd076258050.png

追加したデータストアを選択し、[確認] をクリックして、[保存] をクリックします。

40082aebe8b82d7c.png

[エージェントの基本] ページに戻ります。ハンドブック構成の下部に、新しく作成したデータストア(例: Alternative Location)が使用可能になっていることがわかります。データストア(例: Alternative Location)をオンにして、ページ上部の [保存] ボタンをクリックします。

1b6b82fd7f30a598.png

e09af18697b0fd7f.png

もう少しで万全です。最後のステップは、エージェントの手順に [Alternative Location] ツールを含めることです。エージェントの手順に「- Use ${TOOL: Alternative Location} if the user's request contains a location that does not exist」という行を追加して、[保存]をクリックします。

3134d9eadca34e21.png

準備が整いましたので、シミュレータ切り替えをもう一度開き、同じ質問をします(例: ワカンダに行くにはどうすればよいですか?)。

6cdee598391fc82a.png

おめでとうございます。エージェントは、テキスト ファイルから提供された情報を使用して場所を推奨するようになりました。

これで、独自のエージェント ビルダー AI エージェントの構築が完了しました。エージェントをカスタマイズしてエクスペリエンスを向上させる方法について詳しくは、以下の追加アクティビティをご覧ください。

5. 追加アクティビティ - AI エージェントを公開する

前のステップでは、AI エージェントを開発し、関連する参照データでグラウンディングしました。次のセクションでは、このエージェントをウェブサイトに埋め込み、訪問者とのリアルタイム インタラクションを可能にする方法という重要な問題に対処します。

エージェントを公開する方法はたくさんあります。エクスポートすることも、直接公開することもできます。可能なオプションについては、ドキュメントをご覧ください。

Dialogflow タブの右上にあるオーバーフロー メニュー をクリックし、[エージェントを公開] をクリックします。

a1b109fa9d7cb51d.png

すべての構成をデフォルトのままにして、[認証されていない API を有効にする]をクリックします。

注: 認証されていない API を有効にするのはデモのみを目的としており、本番環境のワークロードでの使用はおすすめしません。安全に公開する方法については、こちらのドキュメントをご覧ください。

ef0f24db780a185e.png

クリックすると、小さな CSS コード スニペットが表示されます。

c40d12f6207bf5b4.png

コード スニペットをコピー します。このコード スニペットは後でウェブサイトに統合します。

ウェブサイトを作成するには、Cloud Editor 環境を使用します。Cloud Editor を開く手順は次のとおりです。

  1. 別のタブで Google Cloud コンソールを開きます。
  2. 右上にある [Cloud Shell をアクティブにする] ボタンをクリックします。
  3. [エディタを開く] ボタンをクリックします。

Cloud Shell の承認を求めるプロンプトが表示されたら、[承認] をクリックして続行します。

d23192eca480f00c.png

次のセクションでは、Gemini Code Assist を使用して、エージェント スニペットと統合するサンプル Python Flask ウェブ アプリケーションを作成します。

Cloud Shell Editor が開いたら、[Gemini Code Assist] をクリックしてGoogle Cloud プロジェクトにログイン します。API を有効にするよう求められたら、[有効にする] をクリックします。

93112cce3e8d963b.png

完了したら、Gemini Code Assist に Flask アプリを作成して AI エージェント コード スニペットを統合するよう依頼します。

使用できるサンプル プロンプトを次に示します。

Here is my Travel buddy Vertex AI agent builder agent publish code snippet,

<REPLACE IT WITH YOUR AI AGENT PUBLISH CODE SNIPPET>

can you create a sample flask app to use it

注: ここでは、Python Flask アプリをリクエストしました。他のプログラミング言語やフレームワークを使用する場合は、自由に使用してください。Gemini Code Assist には、さまざまなプログラミング言語を生成する機能があります。詳細については、サポートされている言語、IDE、インターフェースをご覧ください。

提供されたコード スニペットが AI エージェントとすでに統合されていることがわかります。提供されたコードが有効で、意図したとおりに動作しているかどうかをテストするには、出力レスポンスのこのコードセクションを実行する方法について Gemini Code Assist が提供する手順に沿って操作します。

出力レスポンス コード スニペットの例 -

from flask import Flask, render_template_string

app = Flask(__name__)

# HTML template string with the provided Dialogflow Messenger code

html_template = """

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Travel Buddy Chatbot</title>

<link rel="stylesheet" href="https://www.gstatic.com/dialogflow-console/fast/df-messenger/prod/v1/themes/df-messenger-default.css">

<script src="https://www.gstatic.com/dialogflow-console/fast/df-messenger/prod/v1/df-messenger.js"></script>

<style>

df-messenger {

z-index: 999;

position: fixed;

--df-messenger-font-color: #000;

--df-messenger-font-family: Google Sans;

--df-messenger-chat-background: #f3f6fc;

--df-messenger-message-user-background: #d3e3fd;

--df-messenger-message-bot-background: #fff;

bottom: 16px;

right: 16px;

}

body {

font-family: sans-serif;

margin: 20px;

}

</style>

</head>

<body>

<h1>Welcome to Travel Buddy!</h1>

<p>Start chatting with our AI Travel buddy, in the bottom right corner.</p>

<df-messenger

project-id="<SAMPLE>"

agent-id="<SAMPLE>"

language-code="en"

max-query-length="-1">

<df-messenger-chat-bubble

chat-title="Travel Buddy">

</df-messenger-chat-bubble>

</df-messenger>

</body>

</html>

"""

@app.route("/")

def index():

"""Renders the HTML template with the Dialogflow Messenger."""

return render_template_string(html_template)

if __name__ == "__main__":

app.run(debug=True)

3dd3246c5fceb1d4.png

指定された手順に沿って操作します。

  1. 提供されたサンプル Flask アプリのコード スニペットをコピーします。
  2. app.py という名前の新しいファイルを作成して保存します。

4e58cfcf95f65d38.png

次のステップでは、このスニペットを実行するために Flask をインストールするよう求められますが、Cloud Shell には一般的に使用されるユーティリティがすべてデフォルトでインストールされているため、現時点では必要ありません。

b657b535710fd8f3.png

ファイルを保存(Ctrl+S または CMD+S)して、[ターミナルを開く] をクリックします。ここで、提供されたコードを実行します。

ターミナルで、次のコマンドを実行します。

python app.py

注: app.py ファイルが存在する正しいフォルダにいることを確認してください。

Python Flask アプリはポート 5000 で実行されます。このウェブ アプリケーションのプレビューを表示するには、Cloud Shell の [ウェブでプレビュー] アイコンをクリックします。次に、[ポートの変更] をクリックして「5000」と入力 し、[変更してプレビュー] をクリックして保存します。

59ed7b08133b82bf.png

サンプル ウェブサイトが表示され、AI エージェントがすでに使用可能になっています。AI エージェントをクリックしてチャットを開始します。

35a4b5abdd299efe.png

さまざまなプロンプトでテストしてみてください。Gemini Code Assist にウェブサイトの美化を依頼したり、AI エージェントにグラウンディング データを追加して、より多くのリソースを利用できるようにすることもできます。

準備ができたら、次のステップとして、この AI エージェントを Google Cloud でホストして、誰でもどこからでもアクセスできるようにします。この Codelab の残りの部分では、このサンプル Flask アプリケーションをコンテナとして Cloud Run にデプロイします。

注: Cloud Run に限定されません(Cloud Run がわからない場合は、質問することもできます)。Gemini Code Assist に、効果的な手法に沿って Google Cloud または任意の場所にデプロイするよう依頼できます。この部分についてもサポートを受けることができます。

Cloud Shell ターミナル に戻り、Ctrl+C キーを押してプロセスを終了します。もう一度 [エディタを開く] をクリックし、Gemini Code Assist にアプリケーションのコンテナ化とCloud Run へのデプロイを依頼します。

Can you help me deploy this sample flask app to cloud run service

Cloud Run サービスでアプリをホストする手順とコマンドが提供されます。手順に沿って操作します。

出力レスポンスの例を次に示します。

Cloud Run にデプロイする手順

  1. 前提条件:
  • Google Cloud アカウント: 課金が有効になっている Google Cloud アカウントが必要です。
  • gcloud CLI: ローカルマシンに Google Cloud SDK(gcloud CLI)をインストールして初期化します。これを使用して、ターミナルから Google Cloud を操作します。
  • Docker: ローカルマシンに Docker をインストールします。Cloud Run は Docker を使用してアプリケーションをコンテナ化します。
  • プロジェクトの設定: gcloud CLI で Google Cloud プロジェクトが選択されていることを確認します。gcloud config list project で確認し、gcloud config set project YOUR_PROJECT_ID で設定できます。

注: このアクティビティ全体は Cloud Shell で実行するため、プロジェクトを設定する必要はありません。

  1. **requirements.txt**を作成する:
  • このファイルには、アプリに必要なすべての Python パッケージがリストされています。プロジェクト ディレクトリ(main.py がある場所)に requirements.txt という名前のファイルを作成し、次の行を追加します。
  1. **Dockerfile**を作成する:
  • Dockerfile は、アプリケーションの Docker イメージをビルドする方法を定義します。プロジェクト ディレクトリに Dockerfile という名前のファイル(拡張子なし)を作成し、次の内容を追加します。

# Use an official Python runtime as a parent imageFROM python:3.9-slim-buster

# Set the working directory to /appWORKDIR /app

# Copy the current directory contents into the container at /app

COPY . /app

# Install any needed packages specified in requirements.txt

RUN pip install --no-cache-dir -r requirements.txt

# Make port 5000 available to the world outside this container

EXPOSE 5000

# Define environment variable

ENV NAME World

# Run app.py when the container launches

CMD ["python", ".py"]

  1. Docker イメージをビルドする:
  • ターミナルを開き、プロジェクト ディレクトリに移動して、次のコマンドを実行します。

gcloud builds submit –tag gcr.io/bgr-workshop-23rd/travel-buddy

  1. Cloud Run にデプロイする:
  • イメージをビルドしてアップロードしたら、次のコマンドで Cloud Run にデプロイします。

gcloud run deploy travel-buddy --image gcr.io/bgr-workshop-23rd/travel-buddy --region us-central1

これらの手順が完了すると、統合された AI エージェントを含むアプリケーションがエンドユーザー向けに公開されます。

おめでとうございます。学習をお楽しみください。

6. クリーンアップ

この Codelab で使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。
  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
  4. または、コンソールで Cloud Run に移動し、デプロイしたサービスを選択して削除することもできます。