
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Enable the Vertex AI API
/ 10
Create a Vertex AI Search app
/ 30
Build and deploy your app on Cloud Run
/ 25
Make changes to the website's content
/ 35
生成 AI は、テキスト、動画、画像、コードなどのコンテンツを作成するために使用できるテクノロジーです。Google Cloud には、Gemini や Vertex AI など、生成 AI の導入を支援するさまざまな大規模言語モデル(LLM)とツールが用意されています。LLM を活用したツールを使用して、ウェブサイトのコンテンツを作成、強化し、会話型検索エクスペリエンスを追加できます。また、ウェブページの検出を促進し、ウェブサイトのナビゲーションを強化することもできます。
このラボでは、次の目的でウェブサイトのモダナイゼーション ソリューションを実装します。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
Qwiklabs にシークレット ウィンドウでログインします。
ラボのアクセス時間(例: 1:15:00
)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
Cloud Shell は、開発ツールが組み込まれた仮想マシンです。5 GB の永続ホーム ディレクトリを提供し、Google Cloud 上で実行されます。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。gcloud
は Google Cloud のコマンドライン ツールで、Cloud Shell にプリインストールされており、Tab キーによる入力補完がサポートされています。
Google Cloud Console のナビゲーション パネルで、「Cloud Shell をアクティブにする」アイコン()をクリックします。
[次へ] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続の際に認証も行われ、プロジェクトは現在のプロジェクト ID に設定されます。次に例を示します。
有効なアカウント名前を一覧表示する:
(出力)
(出力例)
プロジェクト ID を一覧表示する:
(出力)
(出力例)
Vertex AI を使用するには、まず Vertex AI API を有効にする必要があります。
API を有効にするには、Cloud Shell で次のコマンドを実行します。
プロンプトが表示されたら、[承認] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このラボでは、事前構築済みのウェブサイト アプリを使用します。このアプリは、FastAPI を使用して構築されたバックエンド API と、HTML、CSS、および JavaScript を使用して構築されたフロントエンドで構成されています。このタスクでは、ウェブサイトのコードをダウンロードしてコードとファイル構造を確認します。
Cloud Shell で、Cloud Storage からウェブサイトのコード アーカイブをダウンロードします。
アーカイブの内容を抽出します。
ウェブサイトのコードとファイル構造を表示するには、Cloud Shell のメニューバーで [エディタを開く] をクリックします。
Cloud Shell エディタのナビゲーション バーで、genai-website-mod-app
フォルダを展開します。
このフォルダには、ウェブサイト アプリの構築とデプロイに必要なすべてのファイルが含まれています。各ファイルとそれぞれの目的の概要は次のとおりです。
ファイル / フォルダ | 説明 |
---|---|
Dockerfile | Cloud Run を使用してウェブサイト アプリケーション コンテナをビルドするための Dockerfile |
config.toml | 変数を使用してアプリケーションを構成する |
main.py | ウェブサイト アプリケーションのメインの FastAPI エントリポイント |
models/ | ウェブサイト アプリケーションで使用されるデータモデルを含むフォルダ |
routers/ | さまざまなアプリケーション機能に対応する FastAPI API ルーター |
static/ | 静的なウェブサイト アセット(CSS、画像、JS ファイルなど)が含まれている |
templates/ | ウェブサイト アプリケーション ページの Jinja テンプレート |
utils/ | ウェブサイト アプリケーション用のユーティリティ モジュール |
views/ | ウェブサイト アプリケーションのビューの実装 |
このタスクでは、ブログ投稿などの非構造化データを検索する検索アプリケーションを Vertex AI で作成して、ウェブサイトに検索機能を実装します。
Google Cloud コンソールのナビゲーション メニュー()をクリックし、[Agent Builder] を選択します。
[続行して API を有効化] をクリックします。
[アプリを作成する] ページに自動的にリダイレクトされた場合は、次のステップに進みます。リダイレクトされない場合は、[新しいアプリ] をクリックします。
[アプリを作成する] ページの [ウェブサイト検索] で [作成] をクリックします。
[構成] ページで、次の設定値を使用して一般的な検索アプリを構成します。残りの設定はデフォルトのままにします。
プロパティ | 値(入力または選択) |
---|---|
アプリ名 | my-search-app |
会社名または組織名 | my-company |
アプリのロケーション | global(グローバル) |
[続行] をクリックします。
[データストア] ページで、[データストアを作成] をクリックします。
このページでは、ウェブサイトの検索結果に使用される独自のデータソースで検索アプリを構成します。
[Cloud Storage] を選択します。
[フォルダ] が選択されている状態(デフォルト)で、[参照] をクリックします。
Cloud Storage バケット
blog_posts
フォルダを選択し、[選択] をクリックします。
フォルダの gs:// URI が取り込まれます。
インポートするデータの種類としてデフォルトの [非構造化ドキュメント] がオンになっている状態のまま、[続行] をクリックします。
データストア名に「my-data-store」と入力します。
[作成] をクリックします。
[データストア] ページで、新しく作成したデータストアを選択します。[作成] をクリックして検索アプリを作成します。
これで、Agent Builder が検索アプリ用に Cloud Storage バケットからブログ投稿の HTML データの取り込みを開始します。
データの取り込みのステータスを確認するには、my-data-store
の [データ] ページで [アクティビティ] タブをクリックします。
[ステータス] 列に、現在のステータスが表示されます。インポート プロセスが完了すると、この列に [インポートが完了しました
] と表示されます。
ドキュメントが正常にインポートされたことを確認するには、[ドキュメント] タブをクリックします。
Agent Builder で検索アプリの機能をテストすることで、アプリをプレビューできます。
Agent Builder のナビゲーション メニューで、[プレビュー] をクリックします。
検索ボックスに「What is dollar cost averaging and how can it help me?」(ドルコスト平均法とは?どのようなメリットがある?)と入力し、Enter キーを押します。
アプリは、dollar cost averaging
(ドルコスト平均法)についての回答を生成し、Cloud Storage からインポートされた関連ファイルの抜粋とリンクを提供します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
検索アプリを作成したら、ウェブサイトやアプリケーションと統合できます。このラボでは、検索 API を使用して呼び出しを行い、サイトに表示する回答を受け取ります。検索バーと拡張可能な検索インターフェースを自動的に提供する検索ウィジェットをウェブサイトに埋め込むこともできます。この方法について詳しくは、ラボの最後に記載されているリンクからドキュメントをご覧ください。
このタスクでは、前のタスクで作成した検索アプリと統合するようにウェブサイトのコードを構成します。次に、ウェブサイト アプリケーションを Cloud Run にデプロイしてテストします。
このウェブサイト アプリケーションは、Python で API を構築するためのウェブ フレームワークである FastAPI を使用して構築されています。genai-website-mod-app/routers
フォルダには、検索
などのさまざまなウェブサイト機能に対応するルーター API の実装が含まれています。
Cloud Shell エディタで genai-website-mod-app/routers
フォルダに移動し、vertex_search.py
ファイルを開きます。
このファイルには、Python 用の Cloud クライアント SDK の discoveryengine
モジュールを使用して検索 API 呼び出しを実装するコードが含まれています。このコードは、構成ファイルを解析する Python の tomllib
モジュールも使用します。
trigger_first_search()
関数のコードを確認します。
この関数は、パスパラメータを含む projects/{project_id}/locations/{datastore_location}/collections/default_collection/dataStores/{datastore_id}
パスを使用した、Discovery Engine API の呼び出しを設定します。
パスパラメータの値を指定するには、genai-website-mod-app
フォルダの config.toml
ファイルを編集します。
[global]
セクションで、構成プロパティの値を以下のように置き換えます。
セクション | プロパティ | 値 |
---|---|---|
global | project_id | |
global | location | |
global | datastore_id | 次のステップを参照 |
datastore_id
構成プロパティの値を、検索アプリのデータストア ID の値に置き換えます。
a. datastore_id
の値を取得するには、Google Cloud コンソールで [Agent Builder] に移動し、[データ] を選択します。
b. my-data-store
の [データストアの ID] の値をコピーして、config.toml
ファイルに貼り付けます。
関連する構成セクションで、以下の構成プロパティを置き換えます。
セクション | プロパティ | 値 |
---|---|---|
imagen | bucket_name | |
blog | image_bucket | |
blog | blog_bucket |
ファイルへの変更を保存します。
Cloud Run は、Google のスケーラブルなインフラストラクチャを基盤にアプリケーション コンテナを実行できるマネージド コンピューティング プラットフォームです。
このタスクでは、ウェブサイト アプリケーションを構築して Cloud Run にデプロイします。また、ウェブサイトに統合した検索機能もテストします。
現在のディレクトリが website application
であることを確認します。
プロジェクト ID、リージョン、ウェブサイト アプリケーション サービスの環境変数を設定します。
次のコマンドを実行して、アプリを構築して Cloud Run にデプロイします。
Artifact Registry Docker リポジトリを作成するために、Y と入力します。
サービスがデプロイされると、サービスの URL が生成されてコマンド出力に表示されます。
Cloud Run でアプリをテストするには、別のブラウザタブまたはウィンドウでウェブサイト アプリケーションの Cloud Run サービス URL に移動します。
検索ボックスに「What is dollar cost averaging and how can it help me?」(ドルコスト平均法とは?どのようなメリットがある?)と入力し、Enter キーを押します。
検索結果が返され、ウェブサイトに表示されることを確認します。
補足の質問として「Can you use dollar cost averaging with ETFs?」(ドルコスト平均法を ETF で使用できる?)と検索ボックスに入力し、Enter キーを押します。
補足の質問に対する回答とともに、関連するブログ投稿へのリンクが検索結果に表示されることを確認します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Google の生成 AI ツールは、ウェブサイトのコピーやコンテンツの作成と編集に使用できます。このタスクでは、これらのツールをウェブサイト コンテンツ エディタとして使用して、このラボで使ったウェブサイトのテキストと画像のコンテンツを更新します。
ウェブサイト アプリケーションは、Vertex AI の Imagen API を使用して画像を生成および更新します。
Cloud Shell エディタで config.toml
構成ファイルを開きます。
[imagen]
セクションで構成プロパティを確認します。このセクションでは、画像生成と画像キャプションに使用するモデルのプロパティと、その他のプロパティが定義されています。
Cloud Shell エディタで、routers/vertex_imagen.py
ファイルを開きます。
このファイルには、画像キャプションと画像変更のさまざまな関数に加え、それらの API ルートが定義されています。
これらの関数は、utils/imagen.py
ファイルに実装されています。このファイルを Cloud Shell エディタで開きます。
generate_image()
関数を確認します。
この関数は、Python SDK の vertexai パッケージに含まれる vertexai.preview.vision_models.ImageGenerationModel クラスを使用します。
この関数は、まず画像生成モデルを読み込み、次にテキスト プロンプトやその他のパラメータを渡してモデルの generate_images()
関数を呼び出して画像を生成します。
ウェブサイトのブログ投稿の画像を更新してみましょう。
Cymbal Investments のウェブサイトの右上にある [All Blogs] をクリックします。
ウェブサイトのページに 6 つのブログ投稿が表示されます。
リンクをクリックして、最初のブログ投稿「Unleashing the Techie Within: A Journey to FIRE」を表示します。
ブログ投稿ページは、ヘッダー、画像、段落テキストで構成されています。
ページ コンテンツを編集するには、右下にある編集アイコン()をクリックします。
画像にカーソルを合わせます。画像の左側にある Click to tune アイコン()をクリックします。
[Click to tune] メニューで [Generate] を選択します。
画像キャプションの下にある [Prompt] に、「An image of a retired man and woman sitting on a beach enjoying the sunset」(ビーチに座って夕日を楽しんでいる引退した男女の画像)と入力します。[Generate] をクリックします。
ページの上部までスクロールし、画像が生成されるまで待ちます。
新しい画像が生成され、Cloud Storage の画像バケットにアップロードされます。ブログ投稿ページがこの新しい画像で更新されます。
テキスト生成モデルを使用して、ウェブページ全体またはインライン テキストの一部を翻訳できます。このサブタスクでは、ウェブサイトのブログページのインライン テキストを翻訳します。
Cloud Shell エディタで、routers/vertex_llm.py
ファイルを開きます。
このファイルには、ウェブページの編集と翻訳のさまざまな関数に加え、それらの API ルートが定義されています。
ソースファイルの一番下までスクロールして、ai_translate_inline()
関数のコードを確認します。
この関数は、ai_translate_inline_prompt
構成プロパティ、ユーザーが選択したテキスト、ユーザーが指定したターゲット言語を使用してプロンプトを作成します。次に、llm_generate_gemini()
関数を呼び出して、モデルからの回答を生成します。
config.toml
ファイルの ai_translate_inline_prompt
構成プロパティの値は次のとおりです。
llm_generate_gemini()
関数を表示するには、utils/vertex_llm_utils.py
ファイルを開きます。
この関数は、Python SDK の vertexai パッケージに含まれる vertexai.generative_models.GenerativeModel クラスを使用します。
この関数は、まず gemini-1.5-pro
モデルを読み込み、次にテキスト プロンプトやその他のパラメータを渡してモデルの generate_content()
関数を呼び出して回答を生成します。
ウェブサイトのブログページが編集モードになっていることを確認します。なっていない場合は、右下にある編集アイコン()をクリックします。
いずれかの段落テキストを選択して、Translate tool アイコンをクリックします。
言語プロンプト欄に「French」(フランス語)と入力し、[送信] をクリックします。
数秒後、段落テキストが指定した言語に翻訳され、ページ上で置き換えられます。
生成モデルを使用して、ウェブサイトのテキスト コンテンツを調整することもできます。
routers/vertex_llm.py
ファイルで、ai_refine_text()
関数を確認します。
この関数は、ai_refine_prompt
構成プロパティ、ウェブサイトのコンテンツからユーザーが選択したテキスト、ユーザー入力の指示を使用してプロンプトを作成します。
config.toml
ファイルの ai_refine_prompt
構成プロパティの値は次のとおりです。
ウェブサイトのブログページが編集モードになっていることを確認します。なっていない場合は、右下にある編集アイコン()をクリックします。
いずれかの段落テキストを選択し、Refine TextTool アイコンをクリックします。
選択したテキストをよりフォーマルでインパクトのあるトーンに変更するには、スタイル ボックスに「formal impactful」と入力します。この値は、モデルを呼び出す前に REFINE_PROMPT 文字列としてプロンプトに追加されます。
[送信] をクリックします。
数秒後、モデルからの回答が生成され、ボックスで囲まれた状態でページ上の元のテキストの下に表示されます。
更新された段落テキストを確認し、[Replace] をクリックします。
ブログページの変更を保存するには、ページの上部にある [Save] をクリックします。
プロンプトの最終値を確認するには、Google Cloud コンソールのナビゲーション メニュー()で、[ロギング] > [ログ エクスプローラ] を選択します。
関連するログエントリをハイライト表示するには、結果のメニューバーで [操作] > [結果のハイライト表示] をクリックします。
[結果のハイライト表示] に「REFINE_PROMPT」と入力します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
ラボでの学習が完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Qwiklabs から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバック、ご提案、修正が必要な箇所については、[サポート] タブからお知らせください。
このラボでは、次の作業を行いました。
これらのスキルがあれば、ウェブサイトのコンテンツを更新し、確認と公開のために変更内容を Cloud Storage などの外部ストレージに保存するプロセスを構築できます。
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください