AI/BI Genieのウォークスルー

こちらでは軽くウォークスルーしましたが、Genieにフォーカスして再度ウォークスルーします。

https://qiita.com/taka_yayoi/items/ff99f33faa7737494042

公式ブログも公開されています。

https://www.databricks.com/jp/blog/introducing-aibi-intelligent-analytics-real-world-data

# Genieとは何か

[マニュアル](https://docs.databricks.com/ja/genie/index.html)からの引用。要は自然言語(日本語)だけでデータ分析できる環境です。

> AI/BI Genieは、DatabricksIQ を搭載したコード不要のインターフェースで、ビジネスユーザーが自然言語を使用してセルフサービスのデータ分析を実行できるようにします。データアナリストなどのドメイン エキスパートは、データセット、サンプル クエリ、テキスト ガイドラインを使用してGenieスペースを構成し、genieがビジネス上の質問を分析クエリに変換できるようにします。設定後、ビジネス ユーザーは質問をしたり、視覚化を生成したりして、運用データを理解できます。Genieは、データの変更やユーザーからの新たな質問に応じて、セマンティックナレッジを継続的に更新します。

今回のウォークスルーを通じて、特に **Genieは、データの変更やユーザーからの新たな質問に応じて、セマンティックナレッジを継続的に更新します。** が重要なポイントだと思いました。最初の回答が期待通りじゃなくても会話を通じて改善していくことができます。

# Genieの有効化

ユーザーアイコンから**プレビュー**にアクセスして、**Genie Spaces**を有効化します。
![Screenshot 2024-06-18 at 11.01.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/cc20d9cd-26e5-d83d-7f38-2749242b9fe9.png)

サイドメニューの**Genie**をクリックします。
![Screenshot 2024-06-18 at 11.05.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/77146993-24f6-3137-2a8a-02c24e0d742c.png)

# Genieスペースの作成

Genieで作業する際には、**Genieスペース**を作成する必要があります。画面右上の **+New** をクリックします。
![Screenshot 2024-06-18 at 11.10.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2086b85d-3293-b064-adce-5e163251e76e.png)

以下を設定します。タイトルや説明文は他のユーザーが理解しやすくするためのものです。
![Screenshot 2024-06-18 at 11.12.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e7d3913d-a805-fb73-ba55-d54a1be27560.png)


- **Title:** Ginieスペースの名称
- **Description:** 説明文
- **Defalut Warehouse:** 処理に使用するウェアハウス
- **Tables:** 分析で使用するテーブル
- **Sample Questions:** 他の方が利用する際に参考になる質問例

:::note info
**ベストプラクティス**
- Genieスペースを作成する際には、スペースの目的に適したテーブルのみを追加するようにします。そうすることで、特定のテーマにフォーカスすることができます。さらに、テーブルに余計な列が含まれている場合には、列を除外したビューを作成しGenieスペースに登録しましょう。
- やり取りの精度を上げるためには、テーブルやカラムに適切なコメントが追加されているべきです。
:::

ということで以下のテーブルを登録します。

![Screenshot 2024-06-18 at 11.19.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/33af12e9-521f-266f-2c0e-eda24022d689.png)
![Screenshot 2024-06-18 at 11.19.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/c01cf44d-8fa4-0959-d942-7f7076870510.png)

その他、質問例も追加しています。**Save**をクリックすることでスペースが作成されます。
![Screenshot 2024-06-18 at 11.26.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a84fa2e5-ab02-b8d4-96fc-bcf54f561723.png)

これでスペースが作成されました。
![Screenshot 2024-06-18 at 11.23.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/eed353e3-b405-c37f-8c47-93f0478fec59.png)

# Genieスペースでの分析

早速、質問例を試してみます。
![Screenshot 2024-06-18 at 11.33.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/1e193603-9719-7524-7fbf-fb8b41edd941.png)

結果は返ってきましたが、レスポンスが英語です。

左上の**New Chat**をクリックしてやり取りをリセットします。

以下のプロンプトで日本語で回答するように指示します。

```
こんにちは。回答は英語を使わず日本語で回答してください。
```

テーブルの情報を聞いてみます。

```
どのようなデータがありますか
```

日本語で回答が得られるようになりました。
![Screenshot 2024-06-18 at 11.40.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/80bab91b-978c-0ef3-106b-8aa3564be11e.png)

```
都道府県別の感染者数の推移
```

それでも英語で返ってくることはあります。
![Screenshot 2024-06-18 at 11.41.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/52b9b4dc-190b-cc39-3a82-b033ea55126d.png)

しつこく日本語でお願いしましょう。

```
日本語で説明してください。
```

よしよし。
![Screenshot 2024-06-18 at 11.42.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/36b2e7fa-9e40-9a28-9a64-72081716a9e9.png)

なお、データが返ってきた際、下部にいろいろなボタンが表示されます。
![Screenshot 2024-06-18 at 11.42.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2be83dfb-fd26-e2cc-90a6-134ac7535fac.png)

左から
- ポジティブフィードバック
- ネガティブフィードバック
- レスポンスの再生成
- 結果をクリップボードにコピー
- 結果をCSVでダウンロード
- サンプルのインストラクションとして保存
- Show generated code: 生成されたコードの表示

となっています。インストラクションとして保存することで、[Genieのレスポンス生成をガイド](https://docs.databricks.com/ja/genie/index.html#provide-instructions)することができます。
![Screenshot 2024-06-18 at 11.44.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/641a96ff-6144-adce-9def-91497f080b38.png)

また、やりとりしている背後ではSQLが生成されています。これを確認するには**Show generated code**をクリックします。
![Screenshot 2024-06-18 at 11.46.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/cede0d1a-df58-7f0c-1f99-35eefd58ba40.png)

元々のテーブル`covid_cases_base`には都道府県のデータしか入っていませんが、地方別の集計結果も欲しくなりました。

```
地方別の感染者数の推移
```

どうしても英語好きらしい。
![Screenshot 2024-06-18 at 11.48.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/428d7232-6b6d-dbf5-4643-6bd0fd0b7fc1.png)

なお、この時点で背後ではテーブル結合を行なってくれています。

```sql
SELECT
  p.Area,
  c.date_timestamp,
  SUM(c.Cases) as TotalCases
FROM
  takaakiyayoi_catalog.japan_covid_analysis.covid_cases_base c
  JOIN takaakiyayoi_catalog.japan_covid_analysis.pref_area p ON c.Prefecture = p.Prefecture
GROUP BY
  p.Area,
  c.date_timestamp
ORDER BY
  p.Area,
  c.date_timestamp
```

そして、可視化も指示できます。

```
可視化して
```
![Screenshot 2024-06-18 at 11.50.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/58ae6450-9c9b-51bf-6237-a501ebb6332c.png)

# その他の機能

## インストラクション

上でのやり取りのように、プロンプトで毎回指示するのではなく、一般的な指示やSQLの例を追加することで、Genieの挙動をガイドすることができます。先にこちら使っておくべきでした。
![Screenshot 2024-06-18 at 12.00.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/23b738c0-4b03-912c-58eb-a0d6c219c459.png)

```
あなたは日本におけるCOVID-19の感染者数に関するエキスパートです。与えられた質問に対して英語を使わずに日本語で回答します。
```

## データ

スペースに登録されているテーブルを確認できます。
![Screenshot 2024-06-18 at 12.00.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/04067137-12fc-b9f6-6d76-0d6d41f4f7c1.png)


## モニタリング

どのユーザーがどのような質問をしたのか、結果に満足したのかなどを一覧で確認できます。
![Screenshot 2024-06-18 at 11.58.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/813e091b-f61d-5205-37fa-4344e086147b.png)

## 設定

作成時に指定したスペースの設定を変更できます。
![Screenshot 2024-06-18 at 12.01.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5b9997f9-912c-57cf-a371-ac077c2c5c56.png)

## Genieスペースの共有

作成したGenieスペースは権限を設定することで他ユーザーと共有することができます。画面右上の**Share**をクリックすることで、リンクをコピーしたり、ワークスペース上でGenieスペースを確認できます。
![Screenshot 2024-06-18 at 12.34.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ac1538dd-9c85-c257-c053-89c17e7ef9ce.png)
![Screenshot 2024-06-18 at 12.35.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f0f17304-9f1f-2fe6-4a49-94bfb51aab92.png)



# 所感

全部日本語でできるというのは、[アシスタントの時](https://qiita.com/taka_yayoi/items/db3e9d976f9f7dbec86e)も感じましたが新たな体験だなと。

期待しない挙動をする際には、丁寧かつ根気強くやりとりしていくことが大事なのだなと。って、こういう感想を製品のレビューで書くことになるとは...。

[こちらのベストプラクティス](https://qiita.com/taka_yayoi/items/db3e9d976f9f7dbec86e)も感慨深いです。

> - 回答の品質を確認するには、Genieスペースをテストします。モデルが期待どおりの回答を提供するかどうかを確認するには、次のことを試してください。
>    - 提供した質問を言い換えてください。
>    - データセットに関連するその他の質問をしてください。
> - 質問に対して期待通りの回答が得られるまで、 Genieスペースの指示を追加および調整します。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)