Select AIを使ってデータベース内のデータと会話してみる

# はじめに
Autonomous Databaseで使用することの出来る機能、**Select AI**を使えば自然言語を使用してデータを問い合せることが出来ます。

Select AIで大規模言語モデル(LLM)を使用することで、ユーザーが入力したテキスト（自然言語）をSQLクエリに変換し、データベース内のデータを問合せることが出来ます。ユーザーは、**自然言語**を使ってデータベース内のデータと**会話**をすることが出来ます。

[Configuring Generative AI in Oracle APEX using Select AI](https://blogs.oracle.com/apex/post/configuring-generative-ai-in-oracle-apex-using-select-ai)を参考に、Oracle APEX上で動く、Select AIを使用したアプリケーションを作成します。

**【前提条件】**
- OCIのアカウントを作成済みであること
  （OCIのアカウントをお持ちでない場合は、[こちら](https://oracle-japan.github.io/ocitutorials/#%E6%BA%96%E5%82%99---oracle-cloud-%E3%81%AE%E7%84%A1%E6%96%99%E3%83%88%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%AB%E3%82%92%E7%94%B3%E3%81%97%E8%BE%BC%E3%82%80)を参考にご作成下さい。）
- OCIの中に使用可能なコンパートメントが作成済みであること
  （コンパートメントの作成方法は[こちら](https://oracle-japan.github.io/ocitutorials/beginners/getting-started/)をご参照ください。）

**【所要時間】**
40分程

# 1. OCI生成AIサービスのAPIキーの取得
:::note info
Select AIでは、2024年12月現在、OpenAI、Cohere、Azure OpenAI Service、Google、Anthropic、Hugging Face、Google Gemini、そしてOCI生成AIサービスの7つをAIプロバイダーとして使用することが出来ます。
:::

本記事では、**OCI生成AIサービス**のAPIを使用したいと思います。

1. OCIコンソールにアクセスして、右上のプロファイルから**ユーザー設定**を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/e569ed53-bf89-7670-cc69-cea7b409a19c.png)

2. 左下のリソースからAPIキーを選択し、**APIキーの追加**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/c20f4b0d-57cd-e997-da53-6568ad7eb8e3.png)

3. **APIキー・ペアの生成**（デフォルト）を選択し、秘密キーのダウンロードをした上で作成します。秘密キーは後程使用するので大切に保管しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/0b07ccbe-b3d1-66e3-2c67-e4793e6ce5de.png)

4. 構成ファイルのプレビューも後程使用しますので、コピーしメモを取っておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/13bdaf98-40ce-fe62-0507-bda8405c02ed.png)

<details><summary>OpenAIのAPIキー取得方法はこちら</summary>

## OpenAIのアカウントを作成
1. OpenAIのアカウントを未取得の方は、[こちら](https://auth.openai.com/authorize?issuer=auth0.openai.com&client_id=DRivsnm2Mu42T3KOpqdtwB3NYviHYzwD&audience=https%3A%2F%2Fapi.openai.com%2Fv1&redirect_uri=https%3A%2F%2Fplatform.openai.com%2Fauth%2Fcallback&device_id=5610edc4-1df0-4846-8ec9-576acc9d06a6&screen_hint=signup&max_age=0&scope=openid+profile+email+offline_access&response_type=code&response_mode=query&state=aXA0T0VjLl9GMEg1a3pIc0JDV2ZWRVlBQWpmSk1PYVhyMHVxTXFNVmZFUQ%3D%3D&nonce=VEMxVGo1Wjg0X2piYy5JbDYwUWtrSFZSNlZZLW5nTy1FbHBWM0tCWTRMdQ%3D%3D&code_challenge=iaJKLow_ndSQZWSjt9xMRxXY62JxWRhljAiBxUzf6cQ&code_challenge_method=S256&auth0Client=eyJuYW1lIjoiYXV0aDAtc3BhLWpzIiwidmVyc2lvbiI6IjEuMjEuMCJ9&flow=control)からOpenAIのアカウントを作成します。既にOpenAIのアカウントを作成済みの方はログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/23fe74d4-d5c0-0ff0-8994-32b5bc74a423.png)

2. アカウントを作成/ログインしたら、[こちらのページ](https://platform.openai.com/)に移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/ed0e6107-1d66-b3d6-1268-49abd9da4646.png)


## クレジットカードを登録
1. 画面左のナビゲーションメニューから**Setting>Billing**と遷移し、クレジットカードを登録します。
![credit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/1b8186e4-368b-140f-2a6c-7370994258ff.png)

2. 本記事のデモで使用するクレジットは1ドル以下となります。現時点ではチャージできる価格は最低5ドルなので、今回は5ドルチャージします。

:::note info
本記事では一番価格がお手頃な、**GPT-3.5 Turbo**を使用します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/19be7742-232e-7f06-dc42-ea54624b6517.png)
:::

## APIキーの取得
1. OpenAIのAPIキーを取得します。**API keys>Project API Keys**で**Create new seacret key**をクリックします。
![create-api.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/a54c01cb-dff3-e7db-1fcd-5dec639a6217.png)

2. 設定事項はそのままにして、**Create secret key**をクリックします。
![api-window.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/03e4eeeb-35d9-5358-fad9-0fbf5b7b376a.png)

3. 作成したキーは再度確認する事が出来ないので、キーをコピーし、メモをしておきます。
![apikey.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/13dabc4f-70ff-15c4-ef3f-2284792ec20b.png)

これで、OpenAIのAPIキーを取得する事が出来ました。
</details>

# 2. 環境設定

## 2-1. ADBインスタンスとAPEXワークスペースの作成
1. Select AIはADBの機能なので、使用にはADBインスタンスが必要です。ADBのインスタンスが未作成の場合は[101: ADBインスタンスを作成してみよう](https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/)を参考に、ADBインスタンスを作成します。

    :::note warn
    ADBインスタンス作成時に、以下の点に注意してください。
    - **名前**：任意（同一コンパートメント内に、同じ名前のADBインスタンスは作成不可のため注意）
    - **データベース・バージョンの選択**：23ai（19cでも問題ありませんが、23aiの方が新機能を使える為）
    - **Always Free**：オン（無償でお試しいただく場合）

2. ADBの詳細画面から**ツール構成**をクリックしAPEXのURLをコピーします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f66303331363261652d393165382d346566322d633731372d3034336131353235616134312e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/d548e8a2-a050-d719-df07-3fa07472d966.png)


3. コピーしたURLにアクセスし、APEXの管理サービスにログインします。パスワードはADBの管理者パスワードと同じです（本記事の場合は**Welcome12345#**）。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f31663761643561392d613635382d346531392d653430392d6162346231373435373930642e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/a84c528b-92ba-f4d2-c37a-9937df84bff5.png)


4. **ワークスペースの作成**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f34653464323136382d643431342d393534622d346234352d3165636662633162326134352e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/50374541-2cf6-8e8e-7e34-c144a704a482.png)


5. **新規のスキーマ**をクリックし、新規のスキーマにワークスペースを作成します。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f65633862613631302d353632372d623163302d303237302d3062326536653332323762322e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/e8b6b9a5-ba60-5398-b002-77a7a9616a33.png)

6. 以下の通りに入力し、ワークスペースを作成します。
    - **ワークスペース名**：APEXDEV
    - **ワークスペース・ユーザー名**：APEXDEV
    - **ワークスペース・パスワード**：Welcome12345#
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f62616336633332622d333236342d316436632d376637322d3965626566333939663163322e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/82e26f8a-2162-c745-eb76-7ef149c7d1f4.png)


7. 画面上部にメッセージが表示されます。**APEXDEV**をクリックし、ワークスペースのサインイン画面へ移動します。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f37633366326437642d623635322d383236652d656335612d6262333261643363323665302e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/1afcfe41-9c49-3699-79ed-a62ccf811fe2.png)


8. 先ほど設定したワークスペースのパスワードを入力します（本記事の場合は**Welcome12345#**）。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f33633237316261372d336465642d376631392d633564342d3138386536306664623139362e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/23037523-09c5-dbc7-44a0-6aca925ed691.png)


APEXのワークスペースを作成し、ログインする事が出来ました。

## 2-2. データセットのダウンロード
次に、使用するデータセットをダウンロードします。APEXにはサンプルデータセットが準備されているので、それをダウンロードします。
1. **SQLワークショップ>ユーティリティ>サンプル・データセット**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f37323036616432392d326536642d343866362d353830392d3431356364643965356139362e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/18cf1e66-156f-eb43-1bd0-55617d38fa3a.png)


2. **EMP/DEPT**というデータセットをインストールします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f31393461613164372d376437342d303434382d656136362d6364356363636431643832392e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/9561ba3c-fcf3-889f-9ebd-ba1cefc1827e.png)


3. 言語で**日本語**を選択し、**次**へをクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f65343538663630312d396634622d613464612d386435392d6135666362343738336161382e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/8926db9d-4f9c-8209-ad3b-c6253efbe165.png)


4. **データセットのインストール**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f31636564613961322d316562392d633164342d666366362d6163303337393763303136612e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/578f49bf-a6d5-98f1-47ae-faa1251bf48d.png)


5. **終了**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f33386361663264312d333636322d313735382d666631392d6633303538623138343937662e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/30aff740-7c55-e6b7-29b3-acad54254c27.png)

6. **SQLワークショップ>オブジェクト・ブラウザ**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f38656331616638362d656632352d363833662d623563332d6138343135363933363836302e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/37c535bb-91ae-2450-3c19-7339465f716a.png)


7. 表からインストールした**EMP表・DEPT表**をクリックし、表を確認します。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f39366164623238342d313062302d336333372d653132312d6230376636363464356637662e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/6116ab63-8c05-de2f-d709-d9f26bcc251e.png)


これでデータの準備が出来ました。

## 2-3. SELECT AIを利用するための準備
一旦OCIコンソールに戻って、SELECT AIを利用するための準備を行います。

1．[101: ADBインスタンスを作成してみよう](https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/)の[3-3. データベース・ユーザーを作成してみよう（コマンドライン)](https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/#3-3-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3)を参考に、Database ActionsのSQLワークシートから以下のSQLを実行し、権限を付与します。

```sql
-- SELECT AI機能の利用に必要なパッケージの実行権限を付与
GRANT EXECUTE ON DBMS_CLOUD_AI TO WKSP_APEXDEV;
GRANT EXECUTE ON DBMS_CLOUD TO WKSP_APEXDEV;
```

<details><summary>OpenAIをAIプロバイダーとして利用する場合</summary>

## OpenAIをAIプロバイダーとして利用する場合
OpenAIをAIプロバイダーとして利用する場合は、作成された**moviestream**というユーザーに**api.open.comへのRESTコール**を許可する必要があります。
![network_acl_admin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/6062bdc6-32ca-b788-de4b-00c108fbf2e3.png)
<br>ネットワーク・アクセス制御リスト（ACL）にアクセス制御エントリ(ACE)を追加し、LLMのRESTエンドポイントへのアクセスを許可します。詳細は、[こちら](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_NETWORK_ACL_ADMIN.html#GUID-254AE700-B355-4EBC-84B2-8EE32011E692)をご参照ください。
<br>以下のコードをコピーし、ワークシートに貼り付けます。ツールバーのスクリプト実行（F5）アイコンをクリックし、コードを実行します。
```sql
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
  HOST         => 'api.openai.com',
  LOWER_PORT   => 443,
  UPPER_PORT   => 443,
  ACE          => xs$ace_type(
      PRIVILEGE_LIST => xs$name_list('http'),
      PRINCIPAL_NAME => 'MOVIESTREAM',
      PRINCIPAL_TYPE => xs_acl.ptype_db));
END;
```
</details>

2.　もう一度APEXのワークスペースに戻り、**SQLワークショップ>SQLコマンド**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f35373064393264382d336333302d663365352d353764382d3062303738646139366335332e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/06ae92d6-484c-91d1-8b38-24decfe658f6.png)


3.　DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、OCI生成AIサービスに接続するためのクレデンシャルを作成します。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f37393536353365302d333935362d666432352d623336352d3262663333633932336438332e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/a2baec8c-5e3b-5709-4ea0-42daf8c4c059.png)


以下の通りにOCID等を置き換え、プロシージャを実行します。
- **credential_name**：任意（本チュートリアルではOCI_GENAI_CREDとしています）
- **user_ocid**：先ほどメモを取った構成ファイルを参照し、ユーザーのOCIDを入力
- **tenancy_ocid**：先ほどメモを取った構成ファイルを参照し、使用しているテナンシーのOCIDを入力
- **private_key**：先程取得した秘密キーの内容をコピー&ペースト
- **fingerprint**：先ほどメモを取った構成ファイルを参照し、フィンガープリントを入力
    
    ```sql
    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'OCI_GENAI_CRED',
            user_ocid       => 'ocid1.user.oc1..axxxxxxxxxxxxxxxxq',
            tenancy_ocid    => 'ocid1.tenancy.oc1..aaxxxxxxxxxxxxa',
            private_key     => '-----BEGIN PRIVATE KEY-----
            MIIEvAIBADANBgkqhkiGQEFA＜中略＞1D3iheu1ct50SB0aIQz9Ow==
            -----END PRIVATE KEY-----',
            fingerprint     => 'xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'
        );
    END;
    /
    ```
これでクレデンシャルを作成する事が出来ました。このクレデンシャルは、この後プロファイルを作成する際に繰り返し使用しますので、credential_nameをメモしておきます。

<br>
4.　DBMS_CLOUD_AI.CREATE_PROFILEプロシージャを使用して、AIプロファイルを作成します。

- **プロファイル名**：GENAI_COHERE_COMMAND_R（任意）
- **provider**：oci（本チュートリアルではOCI生成AIサービスをAIプロバイダーとして使用）
- **credential_name**：OCI_GENAI_CRED（先ほど作成したクレデンシャル名を指定）
- **model**：cohere.command-r-16K（プロバイダーをOCIとし、モデルを指定しない場合は、llama-3が使用されます）
- **oci_apiformat**：COHERE（OCIチャットモデルを使用し、Cohereのモデルを指定する場合はoci_apiformatとしてCOHEREと指定）
- **object_list**：このプロファイルで使用するスキーマ・オブジェクトの所有者（本チュートリアルではselect_ai_user）とオブジェクト名（本チュートリアルではhighschools_view）を指定


    ```sql
    BEGIN
        DBMS_CLOUD_AI.CREATE_PROFILE(
            'GENAI_COHERE_COMMAND_R',
            '{
                "provider": "oci",
                "credential_name": "OCI_GENAI_CRED",
                "model":"cohere.command-r-16K",
                "oci_apiformat":"COHERE",
                "object_list": [
                        {"owner": "WKSP_APEXDEV", "name": "EMP"},
                        {"owner": "WKSP_APEXDEV", "name": "DEPT"}
                ]
            }'
        );
    END;
    /
    ```
これでSELECT AIの準備は完了です。

## 2-4.APEXアプリをインポート
最後にAPEXのアプリをインポートして、SELECT AIをAPEX上で使用できる様にします。

1.　アプリケーション・ビルダーで、**インポート**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f61353965363934302d373336662d396461302d346531662d6439396566343462333834312e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/c0a21e99-fb19-ce42-4cb2-3dd1a12564c8.png)


2.　インポートするアプリケーションをダウンロードします。[こちら](https://objectstorage.us-ashburn-1.oraclecloud.com/p/6Oy9O8JVmddTzPQ8PsavtpzByQhjo4jGP1mRC3MK3o7QE7vGXKb8573-6etTdGUy/n/c4u04/b/building_blocks_utilities/o/select-ai-apex-demo/f101.sql)をクリックし、**f101.sql**というSQLファイルをダウンロードします。

3.　ダウンロードしたsqlファイルをドラッグアンドドロップし、**次へ**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f37336135383163392d373165392d653836372d303964632d3433393134333833303961382e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/05f5ffc8-7e0c-6153-1a57-80adc7ede57a.png)

4.　**アプリケーションのインストール**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f62386262663833332d623537642d623361652d666138622d3533343738623832633632622e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/5aedd64d-7d53-f622-15b5-bac5b6f583fc.png)


5.　**サポートするオブジェクトのインストール**もクリックし、表をインポートします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f37393439356437362d306233612d386436322d373364322d6364336231666235666165372e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/4eb4e434-dd18-dbc6-71dd-c563e1693ec4.png)


6.　**アプリケーションの実行**をクリックし、SELECT AIをAPEXのアプリケーション上で使用してみます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f38353562663538382d353464302d353830382d313139352d3933613130363530646436342e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/e5512dd0-d3f1-f104-56e8-f3adff1ce4c1.png)

# 3．Select AIを使ってみる
1. ワークスペースのユーザー名とパスワードを入力し、ログインします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f37323134613530392d353038382d653962662d336431622d3038656563343334383462372e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/18f54ed6-1d47-bcbe-3ce9-4fe8386e998e.png)


2. 作成したAIプロファイルを選択します。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f31323737636466652d343063322d313765322d646434662d6431646563656130616237322e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/33c4bdec-2aba-6087-e531-7ad86a8d9bc1.png)


このアプリケーションでは、**インターネットの情報を基に回答**してもらうか、**データベースのデータを基に回答**してもらうかを選択することができます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f34353365313535302d633863312d326164332d303061612d6662393664366466656663632e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/b8b3ca5a-a428-e8db-463d-74e133dfb0f9.png)


:::note info
**【インターネットの情報を基に回答】**
- **Ask your Database**のチェックボックスを**オフ**にする
- AIプロファイル作成時に選択した**LLM**が、インターネットの情報を基に**回答を提供**


**【データベースのデータを基に回答】**
- **Ask your Database**のチェックボックスを**オン**にする
- AIプロファイル作成時に選択した**LLM**が、メタデータをもとに**SQLクエリを作成**
- LLMが作成したSQLクエリを実行し、**データベース**が**回答を提供**
:::

今回は、**インターネットの情報を基に回答してもらう場合**と**データベースのデータを基に回答してもらう場合**のそれぞれで同じ質問を聞いてみます。

まずは、インターネットの情報を基に回答してもらう場合です。

3.　**Ask your Database**のチェックボックスを**オフ**にし、「フレンチトーストのレシピを教えてください。」とお願いしてみます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f63633338613235372d383061642d363164612d373936302d6633363364633164363063382e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/aa47029e-2d94-e7d1-7d95-2d9e65209f57.png)

LLMが事前に学習したインターネット上の情報を基に、フレンチトーストのレシピを教えてくれました。

4.　次に、「従業員は何名いますか？」と **Ask your Database**のチェックボックスを**オフ**にしたまま質問してみます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f30333934346336642d623437382d363139332d636432332d6261393861343435313536642e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/23a8be19-0fae-9629-e901-324d13b005e7.png)

**Ask your Database**のチェックボックスを**オフ**にしてあるので、データベース上のデータを参照せずに回答を生成しました。

5.　それではデータベースのデータを基に回答してもらいます。**Ask your Database**のチェックボックスを**オン**にし、同じ質問をしてみます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f65383038393163382d633336622d323463652d646563392d3861626530353034326634322e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/e599b921-d356-7d8f-23d5-2f9d3d4d9913.png)

14と答えが返ってきました。EMP表には従業員のデータが14列格納されているので、正しい回答が返ってきたことが分かります。

6.　次に、「京都のオフィスで働いている従業員一覧」と指示を送ってみます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f62653762343531662d613832332d666431662d343366322d6330316430376538373462622e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/20c79d23-02d4-1fb5-d66d-89802636f8f7.png)

すると、京都のオフィスで働いている従業員一覧が従業員の名前・社員番号・部署名と共に表示されました。

7.　回答の下にある**Explain**をクリックすると、生成されたSQLとその説明が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/73bbbe64-4a7d-c99c-13c2-828159488fff.png)

8.　次に、「給与が2000以上の従業員」と指示を送ってみます。結果の下にある**Explore**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f31326361643431382d346133312d376131312d323537362d6161626431636164386132392e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/a235e32d-5be6-1ed8-5391-0d657effadea.png)

9.　**Actions>Chart**をクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f64646130373232382d613061642d663432652d643234382d6365656138396632663536622e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/43b60b07-5cc8-d289-2c07-e047a00d6b12.png)


10.　以下の通りに設定し、保存します。
- **Type**：Bar
- **Label**：EMPLOYEE_NAME
- **Value**：SALARY
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f39613964386365652d333338322d386431312d666536312d3133646437343530323436352e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/f8cbe624-80de-bf9f-4168-2158f07ea9df.png)


11.　自然言語でデータベース内のデータを問い合わせ、その結果をビジュアライズすることも出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762201/4f02fb9e-d578-46ad-6cc7-337c5b380cdf.png)

以上で終了です。他にも色々と試してみて下さい。