[OCI] SelectAIを検証するSampleチャットアプリ導入（日本語対応）

## やりたいこと
Autonomous Databaseで使用できるSelectAIを使ったチャットアプリを導入

#### 使用する環境
- Oracle Cloud : Autonomous Database 19c (Always Free可）
- OCI Gen AI（Chicagoリージョンで利用）

#### 動作イメージ
チャットと結果画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/70f1cafa-c335-7f89-8d4f-29dc7576822c.png)

実際に実行されたSQLを確認している画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/f667caec-3aeb-e283-c078-830f7008cc43.png)
これ（SelectAI）けっこうすごくないですか？
「部門ごとの従業員の数は？」という自然言語から、
結合・グループ化・COUNT関数が使われ、テーブル名も日本語からオブジェクト名になり、結合キーも認識して、SQLになっています。
このSelectAIを気軽に検証するために、上記のチャットアプリを導入してみたいと思います。AutonomousDatabaseがあれば簡単にできます。

## 前提手順
Autonomous Databaseの作成とSelectAIを使用できるようにするための手順は以下が分かりやすいです。


https://qiita.com/tktk2712/items/70eea63557a5b0852e64
>「検証1 サンプルスキーマを使用したSelect AI検証」

検証1を参考にさせていただき、まずはAutonomousDatabaseとSelectAI環境を整えましょう

ざっくりした手順は以下の通りです。
・Oracle CloudでChicagoリージョンを使えるようにする
　※2024年4月現在、生成AI機能がChicagoリージョンのみ使えるため

・ADB作成（AlwaysFreeでも可）これはChicagoリージョン以外でもよいです。

・サンプルスキーマ作成（自分の使用したいスキーマ、テーブルでもOK！）
・SelectAIを行うための設定
・SelectAIをSQL*Plus上で試してみる

ここまでできれば、SQL*PlusからSelectAIは行えます。
今回は、SelectAIを使用するAPEXで作られたチャットアプリを導入してみます。

## SelectAIを使用するチャットアプリを導入してみる

APEXで作られたチャットアプリを導入してみます。
コードは以下で公開されています。

[「Configuring Generative AI in Oracle APEX using Select AI ※オラクル社サイト」
](https://blogs.oracle.com/apex/post/configuring-generative-ai-in-oracle-apex-using-select-ai)


[アプリダウンロード（SQL文のテキスト）※上記URL内にあるリンク](https://blogs.oracle.com/content/published/api/v1.1/assets/CONT74A6547F19544E838BCEC48C0E1DFE4F/native/chat-db.sql?channelToken=842764f99b9a4a06a862ebc785ac9897&cb=_cache_18e5)

上記記事は生成AIの設定についても記載がありますが、すでに「前提手順」で終わっている内容のため、アプリをダウンロードして、以下に進みます。

OCIコンソールのAutonomous Database管理画面から、「データベース・アクション」→「すべてのデータベース・アクションの表示」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/92f4be09-8bc1-d694-bdc7-1de89048090d.png)

APEXをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/acd14b72-f345-5879-08af-c118e8f12d65.png)

ADB作成時に指定したADMINユーザのパスワードでログインします。
以下と異なるログイン画面が表示されている場合は、次の手順を参照してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/e004805a-27b9-3ab4-3394-37218c43820d.png)

（1つ上の手順で上記の画面が表示されず、以下が表示された場合）
「サインイン」ボタンの下にある「管理サービス」を押すと、上記画面に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/9359eb59-ad67-09b2-5cce-828e6e574b0f.png)

「ワークスペースの作成」ボタンを押します。
または、右上のメニューから「ワークスペースの管理」→「ワークスペースの作成」と進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/2959fc3e-af6b-c6ca-aa0a-bd2195e6b25d.png)

「既存のスキーマ」を押します。
前提手順で作成したデータベースユーザに関連付けたいためです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/b027f7c0-74b3-3947-d448-b9aef25f593f.png)

Selectさせたいテーブルをもっているデータベースユーザーの情報を入力します。
ワークスペース名等は、データベースユーザー名などと同様で良いかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/0f233cf2-50d2-26d4-f1b7-59e831c836fa.png)

作成に成功しました。メッセージに従って1回サインアウトします。
右上のユーザ名アイコンから「サインアウト」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/ca113626-23ac-dd2b-5302-2fb8236c4047.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/3d4ad242-6041-c1f6-dacc-48db9e234eed.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/166b0be7-5cb5-65ca-9a05-e30853737b50.png)

さきほどとは少し異なるサインイン画面が表示されました。
アプリケーションを導入するのは、この開発者用画面からワークスペースにログインする必要があります。
ワークスペースはさきほど作成しましたので、そのログイン情報を使ってログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/61b993d5-a8b5-ee0c-ebb0-6949f1f27dd5.png)

上部メニューの「アプリケーション・ビルダー」→「インポート」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/1b4aedcf-d22d-b2a5-8969-d41bc6fd91dc.png)

「ドラッグ・アンド・ドロップ」のところに、さきほどサイトからダウンロードしたSQLファイルをドロップ＆ドロップでいれて、「次」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/1b546266-ab5d-fc6a-b821-2ed11428b0d2.png)
（ドラッグ＆ドロップでいれたイメージです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/fd011e27-a11b-ffe9-d1e6-ff4a71d9f10a.png)

「アプリケーションのインストール」ボタンで進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/bd08901f-22f6-412b-41f6-1b20a94f1e05.png)

「サポートするオブジェクトのインストール」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/d41bb7cf-df7e-eb16-dc19-4e9c7e97e6fb.png)

最後に「アプリケーションの実行」でとうとうチャットアプリ起動です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/c85ab2fc-56aa-117e-311f-cd8d162cc46d.png)

HRユーザでログインして、、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/c98e7f26-5e11-cdde-d872-7ca1118c0cee.png)

初回実行時のみ、使用するAIプロファイルを選択するポップアップが表示されます。
ADBセットアップ時に名前を指定していますが、1つしか表示されないと思いますので表示されたものを指定します。
AIプロファイルはHRユーザ（SelectAIしたいDBユーザ）に作成しているはずです。
選択したら上の方にある「＜ Setting」でポップアップ画面を消します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/abd032b5-5736-001c-7225-a36c5b675567.png)

チャットアプリが起動しました！
一番下の「Ask Database」にチェックを入れたときに、SelectAIでデータベースを問い合わせますので、まずチェックをいれましょう。
あとは試すのみです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/da50a412-67ae-507c-ca1a-dd666cfa50e0.png)

「部門ごとの従業員数は？」とチャットすると、、結果がでました！
※表や列名を日本語認識させるには、TABLEのコメント機能などでメタデータ追加が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/d7ed7eb4-94fb-465b-47bf-29759bf7078e.png)

結果の下にある「Explain」をクリックすると、実行されたSQL文も確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/9ec3c473-8191-ad17-3919-978c356e5227.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/efd36df6-0cda-ec00-6a56-a7bc34f11989.png)

以上です。
あとはいろいろ試してみましょう！