Data ServiceとGPTsを連携する

# はじめに

Data Serviceを使って作成したAPIは、OpenAIのChatGPTsと連携させることが可能です。この記事ではData Serviceを利用したGPTsとの連携を作成してみます。
私自身GPTsを使いこなしているわけではないので、ここでは接続してデータ取得できるところまでをメインに解説していきたいと思います。

## 前提条件

:::note
GPTsを利用するため、ChatGPTの有料サブスクリプションが必要です。
:::
(持ってない方は雰囲気を感じて頂ければと思います）

## Data Serviceを利用したAPIの作成

TiDB ServerlessのData Serviceについての詳細な入門は[こちら](https://qiita.com/bohnen/items/5364b53b8d54a242805f)をご覧ください。
今回は、GPTsに接続するところがメインなので、データの準備などは出来合いのものを利用します。

### 準備

まず、空のServerlessクラスタを一つ作成してください。（ここでは名前を`sp500`としました)
クラスタがAvailableになったら、Data Service画面を開き、右下の?ヘルプメニューを押します。
すると下記のようなData Serviceのチュートリアルメニューが出てきます。ここで、下の`Sample Data App` を選択してください。

![スクリーンショット 2023-12-25 17.05.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/385745bb-5162-872c-addd-778a068f63d6.png)

次のような画面が出てきます。`Link Data Source`から先ほど作成したクラスタを選択して、次に進みます。これだけでクラスタへのデータのインポートと、Data Serviceの作成まで全自動でやってくれます。
![スクリーンショット 2023-12-25 17.05.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/77f42126-e9b0-1838-7255-13a22a782334.png)

次のような画面になったら、ダイアログボックスは閉じて構いません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/73011d7c-e25d-dea4-3e57-63477bee1dc7.png)

Data Service画面に戻ります。左側のメニューを見ると、先ほど作ったData Serviceが確認できます。sp500のデータから年を指定してランキングを取得するAPIと、会社を指定して履歴を取得するAPIなど、複数のAPIが構築されているのが分かります。

右側にある`Integrate with ChatGPTs` の`Get Configuration` ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/526f5c0c-b10d-002c-18db-a2e731cb917f.png)

`Integrate With GPTs`という画面が出てくるので、`Create API Key`を押しAPIキーを作成します。APIキーはRead Onlyで構いません。
キーが作成されると、キー情報が自動で埋められます。Copyマークのついている `API Specification URL` と `API Key Encoded`情報をどこかにコピーしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/fbe4efde-71f4-a8e8-5fc7-7d80395d3dac.png)

以上でTiDB側の準備は完了です。ChatGPT側の設定に移ります。

## GPTsの設定

ChatGPTの画面から、Explore > 新規GPT で、GPTsを作成する画面に移ります。
プロンプトは適当でいいと思いますが、私は下記のように依頼しました。
```
> S&P 500についての質問に回答するbotを作成したいと思います。
... アプリ名を提案
... アイコン画像を提案
> データは指定のAPIから読み取ってください。
```
色々聞かれますが、ほっといても先に進むようです。
落ち着いたら、上のメニューから `Configure` を選択してください。下の方にある`Capabilities`で`Code Interpreter`にチェックを入れ（pythonで可視化するため）、 `Actions` で新しいアクションを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/b0b465b4-fa54-ba16-9dc9-b8d2c9d9317c.png)

新しいアクションの作成画面では、`Authentication` を次のように設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/9a0a8609-3205-8d52-3594-28b72b1532a3.png)

:::note
`API Key` に先ほどコピーした `API Key Encoded`を入力します
:::

`Schema` で、`Import URL` ボタンを押して、先ほどコピーした `API Specification URL` を入力します。
API情報が読み取られ、利用できるAPIが把握されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/b70aa1df-f9f9-2ad6-d26b-923a63fd8a2f.png)

これで準備OKです。`Configure`から戻ります。

## テスト

GPTsの右側で、テストができるようになっています。ここでいくつかやりとりを試して見ましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/97d4cf8e-4553-e033-e77d-51b7b3faa429.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/e8a006c3-a3c3-2983-3257-85ff7a476e4f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/d50d277d-91e8-e8ec-3395-741ecc6b8675.png)

正しく動いていることが確認できます。

## まとめ

Data Serviceのサービス定義とAPIKeyを利用して、GPTsから簡単に利用することができます。
ぜひぜひ、試して見てください。