始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create an Agent Search data store
/ 20
Create an Agent Search app
/ 20
Create a Backend app
/ 20
Deploy the LangChain agent
/ 20
Develop and test the Flutter chat app
/ 20
Create an Agent Search data store
/ 20
Create an Agent Search app
/ 20
Create a Backend app
/ 20
Deploy the LangChain agent
/ 20
Develop and test the Flutter chat app
/ 20
このラボでは、LangChain AI エージェントを Flutter アプリに統合します。Flutter はクライアント アプリ フレームワークとして使用され、Gemini Enterprise Agent Platform のエージェント検索はベクトル データベースとして使用されます。また、Gemini Enterprise Agent Platform の Agent Runtime は、LangChain エージェントを構築およびデプロイするために使用されます。エージェントは、高度な機能を備えた大規模言語モデル(LLM)ファミリーである Gemini を使用して、テキストと画像のプロンプトに対する AI 回答を生成します。
このラボには、Flutter アプリを実行するために必要な Flutter と Dart の拡張機能に加え、code-server を介して IDE として VSCode が事前にプロビジョニングされています。さらに、このラボには fwr も含まれています。これは、ブラウザを使用してアクセスするウェブ アプリケーションとして Flutter アプリを提供するために使用するツールです。
このラボは、クラウド アプリケーションの開発にはあまり詳しくない、アプリケーションの構築に携わるあらゆるレベルの開発者を対象としています。Python を利用した経験があり、Flutter フレームワークに慣れているほうが内容を理解しやすいでしょう。このラボのタスクを実行する際に Flutter の知識は必要ありません。ただし、Flutter アプリのコードの一部を確認する、アプリの機能をテストするといった作業は行います。
このラボでは、次のタスクを行います。
Google Cloud コンソールで AI Applications を使用して検索データストアと検索アプリを作成する。
Gemini Enterprise Agent Platform Workbench を使用して LangChain エージェントをデプロイする。
エージェント検索および LangChain エージェントと連携する Python アプリを使用する。
アプリを Cloud Run にデプロイし、Flutter アプリのバックエンドとして使用する。
フロントエンドのチャット アプリケーションとして使用する Flutter アプリを作成する。
このラボで使用する各種コンポーネントの概要は次のとおりです。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
シークレット ウィンドウを使用して Google Skills にログインします。
ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
このタスクでは、Google Cloud コンソールで AI Applications を使用して検索データストアと検索アプリを作成することにより、Flutter アプリに検索機能を実装します。
Cloud コンソールで、[すべてのプロダクトを表示] をクリックします。[すべてのプロダクト] ページで [AI] セクションまでスクロールし、[AI Applications] をクリックします。
[続行して API を有効化] をクリックします。
左側のペインで [データストア] をクリックし、[データストア] ページで [データストアを作成] をクリックします。
このページでは、検索結果に使用するデータソースを構成します。このラボには、Google Merchandise Store のアイテムに関するデータを含む .csv ファイルが格納された Cloud Storage バケットが事前にプロビジョニングされています。
データソースとして Cloud Storage を選択するには、[Cloud Storage] で [選択] をクリックします。
インポートするデータの種類として、[構造化データのインポート] で [CSV(よくある質問データ用)] を選択します。
[インポートするフォルダまたはファイルを選択します] セクションまでスクロールし、[ファイル] をクリックします。
CSV ファイルの Cloud Storage URL を指定するには、[参照] をクリックします。
Cloud Storage バケット をクリックして、内容を表示します。
goog_merch.csv ファイルを選択し、[選択] をクリックします。
フォルダの gs:// URI が取り込まれます。
[続行] をクリックします。
データストア名に「goog-merch-ds」と入力し、[続行] をクリックします。
選択した料金モデルはデフォルトのままにして [作成] をクリックします。
データストアが作成され、CSV ファイルからのデータの取り込みが開始されます。
[データストア] ページで、新しく作成したデータストアの名前をクリックします。
[更新] をクリックします。
[ドキュメント] タブに、インポートしたドキュメントのリストが表示されます。
ドキュメントに関連付けられたデータを表示するには、[ドキュメントを閲覧] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
検索データストアを使用するには、AI Applications で検索アプリに接続します。
Cloud コンソールで [AI Applications] をクリックし、[アプリ] をクリックします。
[新しいアプリを作成] をクリックします。
[アプリを作成する] ページで、[検索とアシスタント] タブの [カスタム検索(一般)] の [作成] をクリックします。
[アプリの構成の検索] ページで、以下の設定を使用してウェブサイト検索アプリを構成します。残りの設定は、デフォルトのままにします。
| プロパティ | 値(入力または選択) |
|---|---|
| Enterprise エディションの機能 | 無効にする |
| アプリ名 | gms-search-app |
| 会社名または組織名 | gms-company |
| アプリのロケーション | global(グローバル) |
[続行] をクリックします。
既存のデータストアのリストが表示されます。前のサブタスクで作成した goog_merch_ds データストアを選択し、[続行] をクリックします。
選択した料金プランはデフォルトのままにして [作成] をクリックします。
検索アプリが作成され、データストアがアプリに接続されます。
検索アプリをテストするには、AI Applications のナビゲーション メニューで [プレビュー] をクリックします。
[検索] フィールドに「dino」と入力し、Enter キーを押します。
データストアにインポートされたドキュメントから、関連する検索結果のリストが表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Flutter アプリのバックエンドは、Google Cloud で Cloud Run サービスとして実行されます。バックエンド サービスは、商品ショップのデータから検索レスポンスを生成するために、前のタスクで作成した検索アプリと統合されます。
後のタスクでは、バックエンド アプリを LangChain エージェントとも統合し、Gemini にアクセスすることで、Flutter アプリからのクエリに応答して生成 AI コンテンツを取得します。
このタスクでは、バックエンド Python アプリをビルドして Cloud Run にデプロイします。
このラボ用に VSCode ベースの IDE が事前プロビジョニングされています。IDE にアクセスするには、ラボの認証情報パネルから IDE サービス URL をコピーして、新しいシークレット モード ブラウザ ウィンドウまたはタブに貼り付けます。
IDE でターミナルを開きます。IDE のナビゲーション メニュー()で、[ターミナル] > [新しいターミナル] をクリックします。
バックエンド アプリの初期バージョンと関連ファイルは、ラボ用に事前プロビジョニングされています。バックエンド アプリの初期バージョンのフォルダとその内容を Cloud Storage のアーカイブからコピーします。
フォルダの内容を一覧表示するには、IDE のターミナル ウィンドウで次のコマンドを実行します。
ag-web/app フォルダには、アプリケーションのソースコードと、バックエンド アプリをビルドして Cloud Run にデプロイするために必要な他のファイルが含まれています。
アプリの PROJECT_ID と LOCATION の構成を設定します。
先ほど作成した検索データストアを使用するようバックエンド アプリを構成します。
次のコマンドで、文字列 {YOUR_SEARCH_DATASTORE_ID} を検索データストア ID の値に置き換えます。sed コマンドの中括弧は必ず削除してください。
IDE でコードを表示するには、IDE のナビゲーション メニューで をクリックし、[フォルダを開く] をクリックします。
リストから IDE-DEV/ag-web/ フォルダを選択し、[OK] をクリックします。
コードの作成者を信頼する場合、[はい、この作成者を信用します] をクリックします。
[エクスプローラ] ペインで、app フォルダを開き、app.py をクリックして、ファイルをエディタで開きます。
バックエンド アプリのコードにより実行される処理は、次のとおりです。
discoveryengine.googleapis.com API 用の SearchServiceClient を初期化します。search_gms() 関数は、API の datastores エンドポイントを使用して検索リクエストを開始します。先ほど作成したデータストア ID が URL で使用されます。flask を使用します。/ エンドポイントは、アプリが正常に読み込まれたことを確認するために使用されるデフォルトのページです。一方、/ask_gms エンドポイントは、エージェント検索を使用する search_gms() 関数を呼び出します。デプロイ スクリプトを使用すると、バックエンド アプリをビルドして Cloud Run にデプロイできます。
IDE でターミナル ウィンドウを開き、バックエンド アプリのフォルダに移動します。
gcloud CLI から Google Cloud に対して認証を行います。
続行するには、「Y」と入力します
ログインフローを立ち上げるには、Ctrl キー(Windows および Linux の場合)または Command キー(macOS の場合)を押して、ターミナルのリンクをクリックします。
外部ウェブサイトを開くかどうかを確認するメッセージが表示されたら、[開く] をクリックします。
ラボ受講者用のメールアドレスをクリックします。
続行するかどうかを確認するメッセージが表示されたら、[続行] をクリックします。
Google Cloud SDK に Google アカウントへのアクセスを許可し、利用規約に同意するには、[Allow] をクリックします。
確認コードがブラウザタブに表示されます。
[コピー] をクリックします。
IDE のターミナル ウィンドウに戻り、[認証コードを入力してください] と表示されている場所にコードを貼り付けて、Enter キーを押します。
これで Google Cloud にログインできました。
deploy.sh スクリプトを実行可能にし、スクリプトを実行して、指定した Cloud Run リージョンにアプリをデプロイします。
アプリのビルドと Cloud Run へのデプロイが正常に完了すると、スクリプト出力の末尾にアプリのエンドポイント URL が表示されます。この URL は、スクリプトで実行された gcloud run deploy コマンドによって生成されたものです。
アプリの機能は、そのアプリの Cloud Run エンドポイントにアクセスしてテストします。
前の手順で生成されたアプリのエンドポイント URL をコピーし、新しいブラウザタブでその URL に移動します。
アプリが読み込まれると、ホームページに [Welcome to the ag-web backend app] と表示されます。
ブラウザの URL バーで、次のパスを URL の末尾に追加します。
アプリで先ほど作成した検索データストアからの結果が返されることを確認します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
AI エージェントは、目標を達成するために、大規模言語モデル(LLM)の機能を利用して推論を行い、外部ツールとのオーケストレーションを行うアプリケーションです。Gemini Enterprise Agent Platform は、AI エージェントを信頼できるデータソースに接続して構築するのに役立つ、Google のプロダクトとツールのスイートです。
Gemini Enterprise Agent Platform の Agent Runtime は、Agent Platform で推論エージェントを構築およびデプロイするのに役立ちます。LangChain は、チャットボットや RAG システムの構築に使用される人気の OSS ツールです。
Agent Platform では、デベロッパーが関数呼び出しを使用して、LLM(Gemini)からの出力を Python 関数にマッピングできます。Agent Platform SDK を使用して、フレームワーク固有の LangChain テンプレートを使用してエージェントを開発およびデプロイできます。
このタスクでは、Agent Platform Workbench と Jupyter ノートブックを使用し、Python 関数を備えた LangChain エージェントを構築してデプロイします。このエージェントは、このラボの次のタスクにおいて生成 AI バックエンド アプリケーションで使用します。
Agent Platform Workbench は、データ サイエンスと ML のワークフロー全体に対応する Jupyter ノートブックベースの開発環境です。Agent Platform や他の Google Cloud サービスを Workbench インスタンスの Jupyter ノートブック内から操作できます。たとえば、BigQuery と Cloud Storage のインテグレーションを使用して、Jupyter ノートブック内からデータにアクセスして探索できます。
Agent Platform Workbench ノートブックは、Google Cloud で ML モデルを開発およびデプロイするための柔軟でスケーラブルなソリューションです。
Workbench インスタンスを作成するには、Google Cloud コンソールでナビゲーション メニュー()をクリックし、[Agent Platform] > [Notebooks] を選択します。
Notebooks のナビゲーション メニューで [Workbench] をクリックします。
[インスタンス] タブで [インスタンス] が選択されていることを確認し、[新規作成] をクリックします。
[新しいインスタンス] ページで、[名前] に「my-instance」と入力します。
残りの設定はデフォルトのままにして、[作成] をクリックします。
新しいインスタンスがインスタンス セクションでスピンアップされます。インスタンスが作成されるまで待ってから次の手順に進みます。
インスタンスの準備ができたら、[Jupyterlab を開く] をクリックします。
Python 3 Jupyter ノートブックを起動するには、[Python 3] ノートブックをクリックします。
このラボには、LangChain エージェントをビルドおよびデプロイするノートブックが事前プロビジョニングされています。
ノートブックを JupyterLab インスタンスにコピーするには、新しいノートブックの最初のセルに次のコードをコピーします。
セルを選択し、セルメニューの [実行] をクリックして実行します。
このコマンドは、Cloud Storage から JupyterLab インスタンスにノートブックをコピーします。コマンドが完了すると、ノートブック ファイルが最上位のルートフォルダに表示されます。
ノートブックを開くには、フォルダリストでノートブック ファイルをダブルクリックします。ノートブックのコンテンツが新しいタブで開きます。
ノートブックのすべてのコードセルを最初から順番に実行します。セルを実行するには、セル内の任意の場所をクリックして選択し、セルメニューまたはノートブックの上部メニューで [実行] をクリックします。
a. [CELL INSTR] 現在のランタイムを再起動する
プロンプトが表示されたら、[カーネルを再起動します] ダイアログで [OK] をクリックします。
b. [CELL INSTR] Google Cloud プロジェクト情報を設定し、Agent Platform を初期化する:
このセルを実行して Agent Platform を初期化する前に、ラボの project_id、ロケーション、ステージング バケットの構成値を更新します。
サンプル構成設定で更新されたセル:
c. [CELL INSTR] エージェントを定義する:
このセルを実行する前に、GEMINI_MODEL_ID の値を、このノートブックで使用されている最新のモデル ID である
セル「エージェントを Agent Runtime にデプロイする」を実行したら、コマンドが完了して LangChain エージェントがデプロイされるまで待ちます。次に、エージェント ID をコピーします。
この ID は、次のタスクでバックエンド アプリを構成して再デプロイする際に使用します。
LangChain エージェントが正常に動作することをテストするには、次の 2 つのセルを実行し、出力を確認します。
LangChain エージェントは、クエリ入力に基づいて、Wikipedia またはエージェント検索データストアのいずれかを正常に呼び出します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
バックエンド アプリを拡張し、前のタスクでデプロイした LangChain エージェントを呼び出すようにしましょう。
バックエンド アプリの最初のバージョンでは、エージェント検索から直接結果を取得するだけでした。新しいバージョンでは、入力プロンプトに基づいて、Gemini の出力とエージェントのツールを使用し、エージェント検索または Wikipedia から回答を生成するエージェントも呼び出すようになります。
このタスクでは、バックエンド アプリのコードを更新し、リクエスト クエリで LangChain エージェントを呼び出してエージェントの回答を返すエントリ ポイントを追加します。
IDE のターミナル ウィンドウで、次のコマンドを実行して、app.py ファイルに新しいエントリ ポイントコードを追加します。
先ほど作成した LangChain エージェントを使用するようバックエンド アプリを構成します。
次のコマンドの文字列 {YOUR_LANGCHAIN_AGENT_ID} を、前のタスクでノートブック セルからコピーしたエージェント ID の値に置き換え、IDE のターミナル ウィンドウで次のコマンドを実行します。
sed コマンドの中括弧は必ず削除してください。
IDE でコードを表示するには、IDE のナビゲーション メニューで をクリックし、
IDE-DEV/ag-web/app/app.py ファイルを選択します。
拡張バージョンのバックエンド アプリで、次の処理が行われます。
LANGCHAIN_AGENT_ID を使用して、Agent Runtime から remote_agent のハンドルが取得されます。/ask_gemini エンドポイントが定義されます。query パラメータをリクエストから LangChain エージェント(remote_agent)に渡し、エージェントからの回答を返します。バックエンド アプリのフォルダに移動します。
スクリプトを実行し、指定した Cloud Run リージョンにアプリを再デプロイします。
アプリの機能は、そのアプリの Cloud Run エンドポイントにアクセスしてテストします。
前の手順で生成されたアプリのエンドポイント URL をコピーし、新しいブラウザタブでその URL に移動します。
アプリが読み込まれると、ホームページに [Welcome to the ag-web backend app] と表示されます。
ブラウザの URL バーで、次のパスを URL の末尾に追加します。
アプリは、先ほど作成したエージェント検索データストアからエージェントが取得した結果を返します。
ブラウザの URL バーで、パスを以下に置き換えます。
アプリは、エージェントがノートブックで構成した Wikipedia API から取得した結果で応答します。
Flutter は、オープンソースのマルチプラットフォーム アプリ開発フレームワークです。Android、iOS、web、macOS、Windows、Linux で動作する 1 つのコードベースを作成できます。Flutter アプリは、Dart プログラミング言語で開発されています。
このラボでは、Flutter アプリをウェブ アプリケーションとしてデプロイし、ブラウザを使用してアクセスできるようにするため、ターゲット プラットフォームとして web を使用します。
このタスクでは、Flutter を使用してシンプルなチャット アプリケーションを作成し、コードを更新して、アプリをウェブ アプリケーションとしてビルドおよび実行します。
IDE ターミナルで、ホーム ディレクトリに移動して次のコマンドを実行します。
flutter create コマンドにより、実行可能な新しい Flutter プロジェクトに必要なすべてのファイル、フォルダ、構成が作成されます。
IDE でデフォルトのチャットアプリのコードを表示するには、IDE-DEV/chat_app フォルダに移動します。
フォルダ内のファイルの作成者を信頼するかどうかを確認するメッセージが表示された場合は、[はい、この作成者を信用します] をクリックします。
chat_app フォルダの内容の概要は次のとおりです。
| フォルダ / ファイル | 説明 |
|---|---|
| chat_app | Flutter アプリを構成するサブフォルダとファイルが格納されたプロジェクトのルートフォルダ。 |
| android/ios/linux/macos/web/windows | サポートされている各プラットフォームで Flutter アプリを実行するために必要なプラットフォーム固有のファイルが保存されています。 |
| lib | 機能とユーザー インターフェースを含む、アプリケーションの中核となる Dart ファイルが保存されています。 |
| test | アプリのウィジェットをテストするために使用される Dart テストが保存されています。 |
| pubspec.yaml | アプリの依存関係、Flutter のバージョン、他の構成設定が保存されています。 |
| analysis_options.yaml | アプリの静的解析の構成設定が保存されています。 |
Flutter アプリのエントリ ポイント ファイル main.dart を見てみましょう。
[エクスプローラ] メニューで、IDE-DEV/chat_app/lib/main.dart ファイルをクリックして開きます。
これは Flutter アプリのアプリケーション エントリ ポイントです。このファイル内のコードは、初期化タスクの実行後、マテリアル コンポーネントを使用してアプリの UI をビルドし、アプリのタイトル、テーマ、その他の構成を設定します。
Flutter では、アプリのビルドに使用される宣言型クラスであるウィジェットというコンセプトが使用されます。Flutter では、ウィジェットを構成してより複雑なウィジェットをビルドし、ウィジェットツリーを形成することでレイアウトを作成します。Flutter での UI のビルドについて詳しくは、こちらのドキュメントをご覧ください。
このファイルには、アプリのウィジェットをビルドするクラスが保存されています。これには次のものが含まれます。
MyApp クラス。_MyHomePageState クラスを使用してアプリのメインページを作成する MyHomePage クラス。_MyHomePageState クラス。チャットアプリを構築する次のサブタスクで、これらのクラスのデフォルトの生成コードを置き換えます。
まず、アプリのタイトルを変更します。MyApp クラスの 14 行目で、title プロパティの値を変更します。
_MyHomePageState クラスの 58 行目で、int _counter = 0; の行と _incrementCounter() 関数を削除し、次のプロパティを追加します。
これらのプロパティは、テキスト プロンプトに対するユーザー入力を受け入れ、表示用にユーザー入力とバックエンド アプリのレスポンスを保存し、バックエンド アプリの Cloud Run サービスのホスト名を保存するために使用されます。
initState() メソッドをクラスに追加します。
このメソッドは、State オブジェクトが作成されたときに初期化関数を実行します。チャットアプリ内で、次に実装する _loadConfig() メソッドを呼び出して、ファイルの内容を読み込みます。
_loadConfig() メソッドをクラスに追加します。
このメソッドは、チャットアプリの構成ファイルの内容を取得します。これは、Cloud Run バックエンド アプリのホスト名の値を JSON オブジェクトに保存します。このファイルはラボの後半で作成します。このメソッドは、先ほど作成した内部 _cloudRunHost プロパティに値を保存し、ウィジェットの UI を構築します。
_sendMessage() メソッドをクラスに追加します。
このメソッドは、ユーザーが入力したプロンプト テキストを取得し、チャットパネルに表示されるメッセージのリストに追加します。また、入力プロンプトとともに、Cloud Run バックエンド サービスのエンドポイント URL に HTTP GET リクエストを送信し、サービスからのレスポンスを表示します。
このコードは、Cloud Run バックエンド ホスト エンドポイントへの URL を作成し、プロンプト テキストをクエリ パラメータに含めます。次に、HTTP GET リクエストがエンドポイントに送信されます。ステータス コード 200 のレスポンスを受信すると、レスポンスがデコードされ、チャット画面に表示されるメッセージ リストに追加されます。レスポンスが成功しなかった場合や例外が発生した場合は、ステータス コードまたは例外メッセージがメッセージリストに追加されて表示されます。
チャットアプリの UI を作成するには、_MyHomePageState クラスの既存の build メソッドを以下のコードに置き換えます。
build メソッドは、チャットアプリの UI を定義します。構成と現在の状態に基づいてウィジェット ツリーを作成し、Flutter フレームワークがそれを画面にレンダリングします。このチャットアプリの UI では、コードによってチャット メッセージが 1 列に表示され、ユーザー プロンプト用のテキスト フィールドと送信ボタンも表示されます。ユーザーが入力したメッセージ(プロンプト)は青いボックスで表示され、アプリ(bot)からの回答やエラー メッセージはグレーのボックスで表示されます。
ユーザーがチャットアプリで [送信] をクリックするか、プロンプトを入力した後にテキスト フィールドで Enter キーを押すと、_sendMessage() コールバック メソッドが呼び出されます。
追加されたコードは、Dart および Flutter SDK の特定のライブラリやパッケージに依存します。
これらのパッケージをインポートするには、既存の import ステートメントの下の main.dart ファイルの先頭に、次の import ステートメントを追加します。
アプリへの変更を保存するには、IDE のナビゲーション メニューで [File] > [Save] をクリックします。
pubspec.yaml ファイルは、Flutter アプリのプロジェクト メタデータ、パッケージの依存関係、アセットを指定します。
IDE のエクスプローラ ペインで pubspec.yaml ファイルを選択して編集します。ファイルは chat_app フォルダにあります。
dependencies セクションで、cupertino_icons フォント ライブラリの下に http パッケージの依存関係を追加します。
pubspec.yaml ファイルの flutter セクションまでスクロールし、63 行目をコメント化解除します。assets の下に assets フォルダを追加し、スペースのインデントを保持します。
これにより、アプリの config.json ファイルを保存するアセット フォルダが構成されます。
pubspec.yaml ファイルへの変更を保存するには、IDE のナビゲーション メニューで [File] > [Save] をクリックします。
Flutter アプリは、このラボで先ほどデプロイした Reasoning Engine エージェントと統合されます。統合は、ビルドして Cloud Run にデプロイしたバックエンド アプリのエンドポイントに Flutter アプリを接続することにより実現します。
_sendMessage() メソッドには、_cloudRunHost プロパティが空かどうか、または assets/config.json というファイルで構成されていないかどうかを確認するコードがあります。このサブタスクでは、このファイルを Flutter アプリに追加します。
まず、バックエンド アプリの Cloud Run エンドポイントのホスト名を取得し、その値を環境変数に格納します。
IDE のターミナル ウィンドウで、次のコマンドを実行します。
Flutter チャットアプリのホーム ディレクトリに /assets ディレクトリを作成します。
/assets ディレクトリに config.json ファイルを作成します。
変更を確認するには、IDE の [エクスプローラ] メニューでコンテンツを更新し、IDE-DEV/chat_app/assets/config.json ファイルをクリックして開きます。cloudRunHost 構成エントリの値が、Cloud Run バックエンド アプリのホスト名の値で更新されていることを確認します。
Flutter アプリの構成が完了したので、アプリをビルドしてデプロイできます。このラボでは、アプリをウェブ アプリケーションとして実行するため、Flutter ウェブ用の開発サーバーである Fwr を使用します。
Flutter アプリのフォルダ内にいることを確認します。IDE のターミナル ウィンドウで、次のコマンドを実行します。
アプリ プロジェクトの依存関係を取得するには、次のコマンドを実行します。
プロジェクトを構築してウェブサーバーを起動するには、次のコマンドを実行します。
サーバーが起動して Flutter アプリにサービスを提供するまで待ちます。起動すると、コマンドの出力は次のようになります。
Flutter アプリの機能をテストしましょう。
Flutter アプリにアクセスするには、ラボの認証情報パネルからライブサーバーの URL をコピーし、シークレット モードのブラウザ ウィンドウの新しいタブで開きます。
アプリが読み込まれるまで数秒待ちます。
下部のメッセージに次のように入力します。
数秒後、バックエンド エージェントからの回答がアプリに表示されます。
アプリとエージェントをテストするには、メッセージに次のようにします。
数秒後、バックエンド エージェントからの回答がアプリに表示されます。
チャットアプリは、バックエンド アプリの /ask_gemini Cloud Run エンドポイントを呼び出します。バックエンド アプリは、Gemini を使用する LangChain エージェントを呼び出し、エージェント検索データストアから回答を返します。
Flutter アプリがモバイル レイアウトに収まることを確認するため、ブラウザ ウィンドウのサイズをモバイル デバイスと同程度のサイズに変更します。
これは、Flutter アプリが画面サイズやウィンドウ サイズに応じて表示を変化できることを示しています。Flutter のウィジェットとパッケージは、デバイス設定に基づいてアプリをレスポンシブにし、適応させるのに役立ちます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Skills から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックしてください。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
このラボでは、次の作業を行いました。
Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください