1. 概要
このラボでは、GenAI エージェントを作成し、Cloud Run アプリケーションに接続して、エージェントを Slack ワークスペースに統合します。
学習内容
このラボは主に次の部分で構成されています。
- Cloud Run アプリケーションをデプロイして Gemini API と統合する
- Vertex AI エージェントを作成してデプロイする
- エージェントを Slack に統合する
- PDF ドキュメントを介した Q&A 用のデータストアを構成する
前提条件
- このラボは、Cloud コンソールと Cloud Shell 環境に精通していることを前提としています。
2. 設定と要件
Cloud プロジェクトの設定
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。
- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_ID
と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
環境設定
Gemini チャットを開きます。
Cloud AI Companion API を有効にします。
[Start chatting
] をクリックして、サンプルの質問のいずれかを使用するか、独自のプロンプトを入力して試します。
プロンプトの例:
- Cloud Run の 5 つの主なポイントについて説明します。
- Google Cloud Run プロダクト マネージャーとして、Cloud Run を 5 つの重要なポイントにまとめ、学生に説明します。
- Google Cloud Run プロダクト マネージャーとして、認定 Kubernetes デベロッパーに Cloud Run を 5 つの重要なポイントで説明します。
- Google Cloud Run プロダクト マネージャーとして、Cloud Run と GKE のどちらを使用するかを、シニア デベロッパーに 5 つの重要なポイントで説明します。
より良いプロンプトの作成方法については、プロンプト ガイドをご覧ください。
Gemini for Google Cloud がデータを使用する方法
Google のプライバシーに関する取り組み
Google は、AI/ML プライバシー コミットメントを業界で最初に発表した企業の 1 つです。これは、お客様がクラウドに保存されている自社のデータについて最高レベルのセキュリティとコントロールを得るべきだという、Google の信念を概説したものです。
送信および受信するデータ
Gemini に尋ねる質問(Gemini に送信して分析または完成される入力情報やコードなど)は、プロンプトと呼ばれます。Gemini から受け取る回答やコード補完は、レスポンスと呼ばれます。Gemini がプロンプトやそのレスポンスをデータとして使用してモデルをトレーニングすることはありせん。
プロンプトの暗号化
Gemini にプロンプトを送信すると、Gemini の基盤モデルへの入力としてデータが転送中に暗号化されます。
Gemini によって生成されたプログラム データ
Gemini は、ファーストパーティの Google Cloud コードと、選択したサードパーティ コードでトレーニングされます。コードのセキュリティ、テスト、有効性(Gemini によるコード補完、生成、分析など)については、ユーザーが責任を負います。
Google がメッセージを取り扱う方法について詳しくは、こちらをご覧ください。
3. プロンプトをテストするオプション
プロンプトをテストする方法はいくつかあります。
Vertex AI Studio は Google Cloud の Vertex AI プラットフォームの一部であり、生成 AI モデルの開発と使用を簡素化、高速化するために特別に設計されています。
Google AI Studio は、プロンプト エンジニアリングと Gemini API のプロトタイピングとテストを行うためのウェブベースのツールです。
- Gemini ウェブアプリ(gemini.google.com)
Google Gemini ウェブアプリ(gemini.google.com)は、Google の Gemini AI モデルの機能を探索して活用できるように設計されたウェブベースのツールです。
- Android 版 Google Gemini モバイルアプリと iOS 版 Google アプリ
4. リポジトリのクローンを作成する
Google Cloud コンソールに移動し、検索バーの右側にあるアイコンをクリックして Cloud Shell を有効にします。
開いたターミナルで、次のコマンドを実行します。
git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git
cd genai-for-developers
git checkout slack-agent-jira-lab
[エディタを開く] をクリックします。
[File / Open Folder
] メニュー項目を使用して [genai-for-developers
] を開きます。
新しいターミナルを開く
5. サービス アカウントを作成する
新しいサービス アカウントとキーを作成する。
このサービス アカウントを使用して、Cloud Run アプリケーションから Vertex AI Gemini API への API 呼び出しを行います。
Qwiklabs のプロジェクトの詳細を使用して、プロジェクトの詳細を構成します。
例: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
サービス アカウントを作成し、ロールを付与します。
export LOCATION=us-central1
export PROJECT_ID=$(gcloud config get-value project)
export SERVICE_ACCOUNT_NAME='vertex-client'
export DISPLAY_NAME='Vertex Client'
export KEY_FILE_NAME='vertex-client-key'
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID --display-name "$DISPLAY_NAME"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/storage.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/run.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor"
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
承認を求められたら、[承認] をクリックして続行します。
Vertex AI API と Gemini チャットを使用するのに必要なサービスを有効にします。
gcloud services enable \
generativelanguage.googleapis.com \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
Vertex AI API と Gemini チャットを使用するのに必要なサービスを有効にします。
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
runapps.googleapis.com \
workstations.googleapis.com \
servicemanagement.googleapis.com \
secretmanager.googleapis.com \
containerscanning.googleapis.com
Gemini Code Assist を有効にする
[Gemini] アイコンをクリックし、右下の [Sign-in
] と [Select Google Cloud project
] をクリックします。
ポップアップ ウィンドウで、Qwiklabs プロジェクトを選択します。
例:
ファイル「devai-api/app/routes.py
」を開き、ファイル内の任意の場所を右クリックして、コンテキスト メニューから [Gemini Code Assist > Explain
this"
] を選択します。
選択したファイルに関する Gemini の説明を確認します。
6. Devai-API を Cloud Run にデプロイする
正しいフォルダにいることを確認します。
cd ~/genai-for-developers/devai-api
このラボでは、ベスト プラクティスに沿って Secret Manager を使用して、アクセス トークンと LangChain API キーの値を Cloud Run に保存して参照します。
環境変数を設定します。
export JIRA_API_TOKEN=your-jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true
export GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
export GITLAB_REPOSITORY="GITLAB-USERID/GITLAB-REPO"
export LANGCHAIN_API_KEY=your-langchain-key
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
JIRA アクセス トークンを Secret Manager に保存します。
echo -n $JIRA_API_TOKEN | \
gcloud secrets create JIRA_API_TOKEN \
--data-file=-
GitLab アクセス トークンを Secret Manager に保存します。
echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
--data-file=-
LangChain API キーを Secret Manager に保存します。
echo -n $LANGCHAIN_API_KEY | \
gcloud secrets create LANGCHAIN_API_KEY \
--data-file=-
アプリケーションを Cloud Run にデプロイします。
gcloud run deploy devai-api \
--source=. \
--region="$LOCATION" \
--allow-unauthenticated \
--service-account vertex-client \
--set-env-vars PROJECT_ID="$PROJECT_ID" \
--set-env-vars LOCATION="$LOCATION" \
--set-env-vars GITLAB_URL="$GITLAB_URL" \
--set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
--set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
--set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
--set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
--set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
--set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
--set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
--set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
--update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
--update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
--update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
--min-instances=1 \
--max-instances=3
Y
と回答して、Artifact Registry Docker リポジトリを作成します。
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in
region [us-central1] will be created.
Do you want to continue (Y/n)? y
Gemini にコマンドの説明を依頼します。
以下の gcloud run deploy SERVICE_NAME --source=.
フローをご確認ください。詳細
このコマンドはバックグラウンドで Google Cloud の buildpacks
と Cloud Build
を使用して、Docker マシンへのインストール、Buildpack や Cloud Build の設定を行わずに、ソースコードからコンテナ イメージを自動的にビルドします。つまり、上記のコマンドで必要とするのは gcloud builds submit
コマンドと gcloud run deploy
コマンドだけです。
Dockerfile を指定した場合(このリポジトリでは指定しています)、Cloud Build はそれをコンテナ イメージのビルドに使用します。Buildpack に依存してコンテナ イメージを自動的に検出してビルドすることはありません。Buildpack の詳細については、ドキュメントをご覧ください。
コンソールで Cloud Build のログを確認します。
Artifact Registry で作成された Docker イメージを確認します。
cloud-run-source-deploy/devai-api
を開き、自動的に検出された脆弱性を確認します。修正が可能な問題を確認し、説明に基づいて修正方法を確認します。
Cloud コンソールで Cloud Run インスタンスの詳細を確認します。
curl コマンドを実行してエンドポイントをテストします。
curl -X POST \
-H "Content-Type: application/json" \
-d '{"prompt": "PROJECT-100"}' \
$(gcloud run services list --filter="(devai-api)" --format="value(URL)")/generate
出力を確認します。
7. Vertex AI Agent Builder
「エージェント ビルダー」を検索して開きます。
API の有効化
エージェント アプリを作成する:
[表示名] に「エージェント」と入力し、[同意して作成] をクリックします。
エージェント名を設定します。
Agent
目標を設定:
Help user with questions about JIRA project
セットアップ手順:
- Greet the users, then ask how you can help them today.
- Summarize the user's request and ask them to confirm that you understood correctly.
- If necessary, seek clarifying details.
- Thank the user for their business and say goodbye.
[保存] をクリックします。
右側のエミュレータ チャットを使用してエージェントをテストします。
[ツール] メニューを開き、新しいツールを作成します。
[Type] プルダウンから [OpenAPI
] を選択します。
ツール名を設定する:
jira-project-status
セットの説明:
Returns JIRA project status
スキーマを設定する(YAML)- YOUR CLOUD RUN URL を置き換えます。
openapi: 3.0.0
info:
title: CR API
version: 1.0.0
description: >-
This is the OpenAPI specification of a service.
servers:
- url: 'https://YOUR CLOUD RUN URL'
paths:
/create-jira-issue:
post:
summary: Request impl
operationId: create-jira-issue
requestBody:
description: Request impl
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Prompt'
responses:
'200':
description: Generated
content:
application/json:
schema:
type: string
/generate:
post:
summary: Request impl
operationId: generate
requestBody:
description: Request impl
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Prompt'
responses:
'200':
description: Generated
content:
application/json:
schema:
type: string
/test:
get:
summary: Request impl
operationId: test
responses:
'200':
description: Generated
content:
application/json:
schema:
type: string
components:
schemas:
Prompt:
type: object
required:
- prompt
properties:
prompt:
type: string
ツールの構成を保存します。
ツールを使用するには、エージェントの構成と更新手順に戻ります。
新しいツールを使用する手順を追加しました。
- Use ${TOOL: jira-project-status} to help the user with JIRA project status.
[例] タブに切り替えて、新しい例を追加します。
表示名を設定する:
jira-project-flow
下部にあるメニューを使用して、ユーザーとエージェント間の会話をモデル化します。
ツールの呼び出し構成:
[保存] と [キャンセル] をクリックします。エージェント エミュレータに戻り、フローをテストします。
Vertex AI エージェントのベスト プラクティスを確認する
エージェントの設定
ロギングの設定
モデルの構成。
GitGub 統合によるエージェント構成の push と復元。
エージェント エミュレータのコントロール:
8. Slack との統合
[Integrations] メニューを開き、[Slack] タイルの [Connect] をクリックします。
リンクを開き、https://api.slack.com/apps で新しい Slack アプリを作成します。
[マニフェスト] から選択します。
アプリを開発するワークスペースを選択する
YAML に切り替えて、次のマニフェストを貼り付けます。
display_information:
name: Agent
description: Agent
background_color: "#1148b8"
features:
app_home:
home_tab_enabled: false
messages_tab_enabled: true
messages_tab_read_only_enabled: false
bot_user:
display_name: Agent
always_online: true
oauth_config:
scopes:
bot:
- app_mentions:read
- chat:write
- im:history
- im:read
- im:write
- incoming-webhook
settings:
event_subscriptions:
request_url: https://dialogflow-slack-4vnhuutqka-uc.a.run.app
bot_events:
- app_mention
- message.im
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: false
[作成] をクリックします。
Workspace にインストールする:
[#general] チャンネルを選択し、[許可] をクリックします。
[基本情報 / アプリの認証情報] で [署名シークレット] をコピーし、Slack 統合で設定します。
[OAuth と権限] を開き、[Bot User OAuth Token] をコピーして Slack 統合に設定します。
必須項目を設定し、[開始] をクリックします。
エージェントの [アクセス トークン] の値は、Slack の「ボットユーザーの OAuth トークン」です。
エージェントの [Signing Token] の値は、Slack の「Signing Secret」です。
[Webhook URL] をコピーして、Slack アプリの設定に戻ります。
[イベント サブスクリプション] セクションを開き、URL を貼り付けます。
変更を保存します。
「Slack」を開き、「@Agent」と入力してエージェントを追加します。
たとえば、アプリの名前を「@CX」に追加します。
エージェントに JIRA プロジェクトの概要を尋ねます。
9. PDF ドキュメントに関する Q&A
Cloud Storage バケットを作成する
Cloud コンソールで GCS を開きます(https://console.cloud.google.com/storage/browser)。
バケットを新規作成します。
バケット名には、「pdf-docs
」+ GCP プロジェクトの末尾 5 桁を入力します。
ロケーション タイプ: multi-region, us
ストレージ クラス: Standard
アクセス制御: Uniform
データ保護: uncheck soft delete policy
[Create
] をクリックしてください。
[公開アクセスの防止] を確定します。
PDF レポートをダウンロードしてバケットにアップロードします。https://services.google.com/fh/files/misc/exec_guide_gen_ai.pdf
アップロードされたファイルを含むバケットのビュー:
データストアの構成
エージェント コンソールに戻り、[Agent
] を開き、下にスクロールして [+ Data store
] をクリックします。
次の値を使用します。
ツール名: pdf-docs
タイプ: Data store
説明: pdf-docs
[Save
] をクリックします。
ページ下部の [Create a data store
] をクリックします。
[検索と会話のデータストアを米国リージョンに配置することに同意しますか?] と尋ねられたら、[AGREE
] をクリックします。
[会社名を入力] フィールドに「Google
」と入力します。
次の画面で [CREATE DATA STORE
] をクリックします。
データソースとして [Cloud Storage
] を選択します。
取り込み用にデータを準備する
https://cloud.google.com/generative-ai-app-builder/docs/prepare-data
HTML ファイルと TXT ファイルは 2.5 MB 以下にする必要があります。
PDF、PPTX、DOCX ファイルは 100 MB 以下にする必要があります。
一度にインポートできるファイル数は最大 100,000 個です。
選択: unstructured documents
GCS バケットまたはフォルダを選択します。
[続行] をクリックします。
データストア名のタイプ: 「pdf-docs
」
プルダウンから [Digital parser
] を選択します。
高度なチャンクを有効にします。
チャンクで上位の見出しを有効にします。
[Create
] をクリックしてください。
データストアを選択し、[Create
] をクリックします。
データストアをクリックし、[ドキュメント]、[アクティビティ]、[処理構成] を確認します。
インポートが完了するまでに 5 ~ 10 分ほどかかります。
解析とチャンキングのオプション
コンテンツの解析は、次の方法で制御できます。
- デジタル パーサー。別のパーサータイプが指定されていない限り、すべてのファイル形式でデジタル パーサーがデフォルトでオンになります。データストアに他のデフォルト パーサーが指定されていない場合、または指定されたパーサーが取り込まれたドキュメントのファイル形式をサポートしていない場合、デジタル パーサーは取り込まれたドキュメントを処理します。
- PDF の OCR 解析。公開プレビュー版。スキャンした PDF や画像内にテキストを含む PDF をアップロードする場合は、OCR パーサーをオンにして PDF のインデックス登録を改善できます。PDF の OCR 解析についてをご覧ください。
- レイアウト パーサー。公開プレビュー版。RAG に Vertex AI Search を使用する場合は、HTML、PDF、DOCX ファイルのレイアウト パーサーをオンにします。このパーサーおよびそれを有効にする方法については、RAG 用にドキュメントをチャンクするをご覧ください。
ツール構成
ツールの設定があるタブに戻ります。
ブラウザを更新し、[非構造化] プルダウンから [pdf-docs
] を選択します。
接地を構成します。
会社名として「Google
」と入力します。
ペイロードの設定 - [Include snippets in the response payload
] をオンにする
[Save
] をクリックしてください。
エージェントの手順の構成
エージェントの構成に戻ります。
新しい手順を追加します。
- Provide detailed answer to users questions about the exec guide to gen ai using information in the ${TOOL:pdf-docs}
構成を保存します。
PDF-Docs ツールのサンプルを作成する
[例] タブに切り替えます。新しい例を作成します。
アクション「+
」を使用する:
「ユーザー入力」を追加します。
What are the main capabilities?
「ツールの使用」を追加しました。
- ツールとアクション: 「
pdf-docs
」
入力(requestBody)
{
"query": "Main capabilities",
"filter": "",
"userMetadata": {},
"fallback": ""
}
ツールの出力:
{
"answer": "Detailed answer about main capabilities",
"snippets": [
{
"uri": "https://storage.cloud.google.com/pdf-docs-49ca4/exec_guide_gen_ai.pdf",
"text": "Detailed answer about main capabilities",
"title": "exec_guide_gen_ai"
}
]
}
「エージェントの回答」を追加
Detailed answer about main capabilities.
https://storage.cloud.google.com/pdf-docs-49ca4/exec_guide_gen_ai.pdf
構成例:
ツールの呼び出し構成:
エミュレータでエージェントに質問を送信して、構成をテストします。
質問:
What are the 10 steps in the exec guide?
[Agent
] を選択し、[Save example
] をクリックします。
名前を「user-question-flow
」として保存します。
エージェントの回答をフォーマットし、ツールの出力セクションの PDF ドキュメントへのリンクを含めます。
サンプルを保存します。
エミュレータに戻り、[Replay conversation
] をクリックして、更新されたレスポンス形式を確認します。
別の質問を投稿:
What are the main capabilities in the exec guide?
ソースの PDF ドキュメント。
質問:
What should I consider when evaluating projects?
ソースの PDF ドキュメント。
質問:
What are the priority use cases in Retail and CPG in the exec guide?
ソースの PDF ドキュメント。
10. Prebuilt Agent
左側のメニューから、ビルド済みエージェントを調べます。
いずれかのエージェントを選択してデプロイします。エージェントの設定、手順、ツールを確認する。
11. 完了
お疲れさまでした。ラボはこれで完了です。
学習した内容
- Cloud Run アプリケーションをデプロイして Gemini API と統合する方法
- Vertex AI エージェントを作成してデプロイする方法
- エージェントの Slack 統合を追加する方法
- PDF ドキュメントを介した Q&A 用のデータストアを構成する方法
次のステップ:
- Vertex AI エージェントのベスト プラクティスを確認する
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
©2024 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。