Looker と BigQuery 用の Conversational Analytics API を使用してチャットアプリを構築する

1. 始める前に

この Codelab では、Looker と BigQuery で Conversational Analytics API(CA API)を使用して、データをクエリする独自のチャット アプリケーションを構築する方法について説明します。最大限に活用するには、BigQuery、Looker、LLM、エージェント、Python に精通している必要があります。

学習内容

この Codelab を完了すると、次のことができるようになります。

  • Looker で 会話型分析 を使用する
  • 会話型分析 Python Streamlit クイックスタート アプリを設定して使用する(アプリの仕組み)
  • 会話型分析でセマンティック モデリングに Looker を使用するメリット

必要なもの

この Codelab を完了するには、以下が必要です。

  • ASC Demographic Data Looker Block がインストールされた Looker インスタンス
  • Looker インスタンスへの API アクセスとデベロッパー アクセス
  • Python v3.11 以降、Git、gcloud がインストールされたローカル環境。
  • ユーザー アカウントに次の IAM ロールが設定されたクラウド プロジェクト。
  • roles/bigquery.dataViewer BigQuery データ閲覧者
  • roles/bigquery.user BigQuery ユーザー
  • roles/looker.instanceUser Looker インスタンス ユーザー

2. BigQuery でチャットアプリを構築して試す

まず、データソースとして BigQuery を使用して、会話型分析クイックスタート アプリを設定して試してみましょう。

認証して Cloud APIs を有効にする

  1. ユーザー アカウントでローカルに認証します。
gcloud auth login
  1. Cloud プロジェクトの API を有効にします。YOUR_PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えてください。
gcloud services enable geminidataanalytics.googleapis.com bigquery.googleapis.com cloudaicompanion.googleapis.com --project=YOUR_PROJECT_ID
  1. アプリケーションのデフォルト認証情報(ADC)と課金を設定します。
gcloud auth application-default login
gcloud auth application-default set-quota-project YOUR_PROJECT_ID

クイックスタート アプリを設定する

  1. クイックスタート GitHub リポジトリをローカル環境にクローンします。次のコマンド例をご覧ください。
git clone "https://github.com/looker-open-source/ca-api-quickstarts"
  1. クローンした ca-api-quickstarts ディレクトリに移動します。
cd ca-api-quickstarts
  1. .streamlit ディレクトリに secrets.toml ファイルを作成します。YOUR_LOOKER_CLIENT_IDYOUR_LOOKER_CLIENT_SECRET は、Looker インスタンスの Looker クライアント ID と Looker クライアント シークレットにする必要があります。ファイルの内容は次のようになります。
[cloud]
project_id = "YOUR_PROJECT_ID"

[looker]
client_id = "YOUR_LOOKER_CLIENT_ID"
client_secret = "YOUR_LOOKER_CLIENT_SECRET"

次のコマンド例を使用してファイルを作成できます。値をプロジェクト ID、クライアント ID、クライアント シークレットに置き換えてください。

cat > .streamlit/secrets.toml <<'EOF'
[cloud]
project_id = "YOUR_PROJECT_ID"

[looker]
client_id = "YOUR_LOOKER_CLIENT_ID"
client_secret = "YOUR_LOOKER_CLIENT_SECRET"
EOF
  1. クイックスタート アプリの Python 要件をインストールします。
pip install -r requirements.txt
  1. クイックスタート アプリを実行します。
streamlit run app.py
  1. 任意のブラウザで https://localhost:8501 を開きます。

クイックスタート アプリを試す

クイックスタート アプリのエージェント ページが表示されます。使用できるデータ エージェントはありません。

  1. [エージェントを作成] フォームで、海賊のように話すデータ エージェントを作成しましょう。
  2. [表示名] フィールドを設定します。
Pirate BQ Agent
  1. [システム指示] フィールドを設定します。
You are a pirate. Answer questions like a pirate
  1. [BigQuery] オプションを選択します。
  2. [プロジェクト] フィールドを設定します。
bigquery-public-data
  1. [データセット] フィールドを設定します。
google_trends
  1. [テーブル] フィールドを設定します。
top_rising_terms
  1. [エージェントを作成] を選択します。
  1. 左側のメイン ナビゲーションからチャットページに移動しましょう。新しく作成したエージェントとチャットできます。プロンプト/メッセージ「こんにちは、お元気ですか?」を追加してチャットを開始しましょう。
  2. このデータセットについて少し説明します。「このデータセットは何ですか?」
  1. 別の質問をします。次のような質問です。
  2. 「データセット内の [州を入力] の場所は?」
  3. 「[市区町村、州] の過去 2 週間のデータを教えてください。」
  4. 「可視化を作成できますか?」

独自のチャット アプリケーションで、データ エージェントと BigQuery データとの間で複数ターンの会話を行いました。

3. Looker でデータをモデリングして探索する

次に、同じ BigQuery データを Looker でモデリングして探索しましょう。

BigQuery の国勢調査データをクエリする

大規模なリレーショナル データセットに接続するとどうなりますか?まず、新しいエージェントを作成します。

  1. エージェント ページの [エージェントを作成] フォームに戻ります。
  2. [表示名] フィールドを設定します。
BQ Census Agent
  1. [システム指示] フィールドを設定します。
You are really excited about census data, you love learning about the demographics in your area because you want to come up with marketing campaigns for your company
  1. [BigQuery] オプションを選択します。
  2. [プロジェクト] フィールドを設定します。
bigquery-public-data
  1. [データセット] フィールドを設定します。
census_bureau_acs
  1. [テーブル] フィールドを設定します。
blockgroup_2018_5yr
  1. [エージェントを作成] を選択します。
  2. 新しく作成したエージェントに次の両方の質問をします。
  3. 「どのようなデータがありますか?」
  4. 「データのプレビューを表示できますか?」

Looker を使用して国勢調査データをモデリングする

次に、LookML モデルを使用して BigQuery の国勢調査データを定義します。先ほど確認した問題を解決します。

  1. Looker インスタンスにログインします。
  2. 左側のメイン ナビゲーションに移動し、[**開発**] を選択して [**marketplace_acs_census-v2**] を選択し、ACS 人口統計データブロック ファイルに移動します。
  3. Looker ビューを見てみましょう。imported_project ディレクトリ、acs_census-v2 ディレクトリ、geography ディレクトリを開きます。
  4. 最後に、cbsa.view ファイルを開きます。
  5. 17 行目では、LookML が派生テーブルを作成していることがわかります。つまり、このコードは、国勢調査データを含むものと地理的境界データを含むものの 2 つの一般公開 BigQuery データセットを結合して、新しい結合テーブルを作成します。LookML では、クエリする永続的な派生テーブルを作成することで、複数のデータセットを結合できます。

また、結合はシステム指示ではなくバージョン管理可能なコード(LookML)で定義されるため、エージェント開発のスケーラビリティが向上します。LookML を使用すると、データ エージェントを介してユーザーがデータとチャットする際に、データに関する特定の前提条件と制約を定義できます。

Looker でモデリングされた国勢調査データを探索する

Explore で簡単なクエリを実行して、クエリする一元化されたデータソースが 1 つあることを示しましょう。

  1. 左側のメイン ナビゲーション メニューで、[Explore]、[Census Data Block]、[State and County] を選択します。
  2. 指標 [Education] > [Associates Degree] を選択します。
  3. 次のディメンションを選択します。
  4. [Geography] > [Block Group]
  5. [Geography] > [County] > [County Name]
  6. [Geography] > [State] > [State]。
  7. クエリを実行すると(右上の)、これらの地理的 ID(「Block Group」)が人間が読める文字列に関連付けられていることがわかります。
  8. [可視化] タブを開くと、このデータが地図に表示されます。

4. Looker でチャットアプリを試す

次に、Looker のデータ エージェントを作成しましょう。

  1. クイックスタート アプリのエージェント ページの [エージェントを作成] フォームに移動します。
  2. [表示名] フィールドを設定します。
Cartoon character data analyst
  1. [システム指示] フィールドを設定します。
You are [fill in your favorite cartoon character, Bugs Bunny is a favorite]. Answer questions like that cartoon character
  1. [Looker] オプションを選択します。
  2. [Url] フィールドを Looker インスタンスの URL(「https://...」)に設定します。
  3. [モデル] フィールドを設定します。
data_block_acs_bigquery
  1. [Explore] フィールドを設定します。
cbsa
  1. [エージェントを作成] を選択します。
  2. チャットページに移動し、新しく作成したエージェントを選択します。
  3. プロンプト/メッセージ「こんにちは、お元気ですか?」を追加してチャットを開始しましょう。
  4. エージェントにデータセットの説明をリクエストしましょう。「どのようなデータを利用できますか?」
  5. さらに質問してみましょう。
  6. 「ニューヨーク州で人口が最も多い郡はどこですか?」
  7. 「1 人あたりの高校卒業者数が最も多いのはどこですか?」
  8. 「性別と州別の人口を教えてください。」
  9. 「人口が最も多い上位 10 州の棒グラフを表示してください。」

5. クイックスタート アプリで他にできること

これで、次のことができるようになりました。

  • チャットアプリをローカルに設定する
  • BigQuery データ エージェントと Looker データ エージェントを作成する
  • データ エージェントと会話する
  • チャットのコンテキストとして Looker セマンティック モデリングを使用するメリットについて学ぶ

クイックスタート アプリの他の機能も試してみましょう。

  1. クイックスタート アプリのウェブページを再読み込みして、チャットページに移動します。
  2. BigQuery エージェントと Looker エージェントの両方から、過去の会話とそのメッセージを確認できます。アプリのフロントエンドには過去の会話やメッセージは保存されず、CA API から取得されます。
  1. エージェント ページに移動し、リストから Looker エージェントを選択します。
  2. 必要に応じて、エージェントの構成を更新したり、エージェントを削除したりできます。エージェントはアプリのフロントエンドに保存されません。

6. 省略可能な課題とさらなる探索

必要に応じて、この機会に会話型分析とクイックスタート アプリに慣れてください。または、クイックスタート アプリを変更する課題に挑戦してください。次の提案や課題を試すか、最後のセクションに進んでください。

CA API とクイックスタート アプリについて詳しく学ぶ

  • エージェントの動作を制御するための詳細なシステム指示について学びます
  • 新しい BigQuery データセットを指す別のデータ エージェントを設定します。
  • Looker インスタンスに新しい Looker ブロックをインストールし、エージェントを作成して、新しい Looker データセットを指すようにします。

クイックスタート アプリの変更に関する課題

  • Looker の埋め込みについてご存じですか?ご存じの場合は、クイックスタート アプリに Looker ダッシュボードを埋め込んでみてください。Streamlit の iframe コンポーネントの使用を検討してください。
  • 動画 URL を含む一般公開データセットを見つけて、アプリのチャット レンダリング ロジックを更新して、チャットに動画を表示します。

7. まとめとポイント

お疲れさまでした。チャットアプリを構築し、データ エージェントを作成し、会話型分析 API を使用してデータとチャットしました。主な機能とコンセプトを振り返ってみましょう。

会話型分析の機能

会話型分析の多くの機能について説明しました。たとえば、次のことができます。

  • データ エージェントの作成、更新、一覧表示、取得、削除。
  • データソースとして BigQuery または Looker を指すデータ エージェント。
  • 会話とそのメッセージの作成、一覧表示、取得。
  • 会話で没入型の可視化を行うための Vega グラフの仕様を生成する。
  • 会話の過去のメッセージを、今後のメッセージの有用なコンテキストとして使用する。

CA API で Looker を使用するメリット

Looker は、データの一元化されたテスト可能で管理可能なセマンティック モデリングを提供します。会話型分析と組み合わせることで、Looker はデータ エージェントのコンテキストを提供するスケーラブルな方法を提供します。

次のステップ