会話型分析と Looker を使用してチャットアプリを構築する

1. 始める前に

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

学習内容

この Codelab を完了すると、次のことを学習できます。

  • Looker で会話分析を使用する方法
  • 会話型分析 Python クイックスタート アプリの設定方法と使用方法(アプリの仕組み)
  • 会話分析でセマンティック モデリングに 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 でデータをモデル化して探索する

それでは、Looker で同じ BigQuery データをモデル化して探索してみましょう。

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. 新しく作成したエージェントに次の 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 が派生テーブルを作成していることがわかります。つまり、このコードは、国勢調査データを含む BigQuery の一般公開データセットと、地理的境界データを含む BigQuery の一般公開データセットの 2 つを結合して、新しい結合テーブルを作成しています。LookML では、クエリを実行する永続的な派生テーブルを作成することで、複数のデータセットを結合できます。

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

Looker のモデル化された国勢調査データを調べる

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

  1. 左側のメイン ナビゲーション メニューで、[探索]、[国勢調査データブロック]、[州と郡] の順に選択します。
  2. 指標 [Education] > [Associates Degree] を選択します。
  3. 次のディメンションを選択します。
  4. [地域] > [ブロック グループ]
  5. [地域] > [] > [郡名]
  6. [地域] > [都道府県] > [都道府県]。
  7. クエリを実行(右上)すると、これらの地域 ID(「ブロック グループ」)が判読可能な文字列に関連付けられていることがわかります。
  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. 「高校卒業者数の人口あたりの割合が最も高いのはどこですか?」
  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. まとめと重要なポイント

お疲れさまでした。Conversational Analytics API を使用して、チャットアプリを構築し、データ エージェントを作成し、データを使ってチャットしました。主な機能とコンセプトを確認しましょう。

会話型分析の機能

会話分析の機能の多くについて説明しました。たとえば、次のような機能があります。

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

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

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

次のステップ