rex0220 計算式プラグインの使い方をGPTsに学習させてみる

GPTs で簡単に応答内容をカスタマイズできるようになったようなので、計算式プラグインの使い方をGPTsに学習させてみた。
まともな答えを引き出すには、いろいろ学習させる必要がありそうです。

[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その２）関数の説明](https://qiita.com/rex0220/items/7f9f3b66e96bd82b0aef)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その３）未実装の関数](https://qiita.com/rex0220/items/3d019e04b89cd208081d)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その４）項目のタイプ別学習](https://qiita.com/rex0220/items/c56084cdaccdd749800d)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その５）画像の学習](https://qiita.com/rex0220/items/9bde1161d1067a88cd18)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その６）Conversation starters 会話のきっかけ](https://qiita.com/rex0220/items/196b0eab24179c928e69)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その７）誤った計算式の訂正学習](https://qiita.com/rex0220/items/b68659ae87d6c49b1898)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その８）使用例の学習](https://qiita.com/rex0220/items/194b48e1a5172e5dd8a1)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その９）誤った計算式の訂正学習２](https://qiita.com/rex0220/items/65cab222ae1876906ec7)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１０）機能別に計算式を学習](https://qiita.com/rex0220/items/1b0161401d65e1e6c3d8)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１１）チェックボックスの処理を学習](https://qiita.com/rex0220/items/efa8f4a7891a14f553e3)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１２）Error saving draft](https://qiita.com/rex0220/items/4b61931f860b3785559d)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１３）誕生日から年齢計算してみる](https://qiita.com/rex0220/items/89bd70a5d50b1531fcdc)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１４）要件を箇条書きで指定](https://qiita.com/rex0220/items/7ec5ca0c3bbc4c8e612a)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１５）End of next month](https://qiita.com/rex0220/items/5fd17fb9cf614e98cbe1)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１６）学習の再現性](https://qiita.com/rex0220/items/697275614c24f7691881)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１７）GPTsを公開](https://qiita.com/rex0220/items/a7f6b84ad510a31fb414)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１８）Capabilitiesの弊害](https://qiita.com/rex0220/items/48777a441fa600057726)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その１９）マスコットキャラ作成](https://qiita.com/rex0220/items/8e9c959ff5ba1bc66081)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その２０）名前はフォルトン](https://qiita.com/rex0220/items/c9bf8e65810258b35bcf)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その２１）まとめ](https://qiita.com/rex0220/items/8e81e955a5a528fca185)
[rex0220 計算式プラグインの使い方をGPTsに学習させてみる（その２２）Q&A で学習](https://qiita.com/rex0220/items/08b758459486297bb4c2)

- 応用編
[rex0220 計算式プラグイン テーブル内商品カテゴリー別番号付与（GPTs版）](https://qiita.com/rex0220/items/2c8e8107d2c23687e069)
[rex0220 計算式プラグイン GPTs のプロンプトの書き方](https://qiita.com/rex0220/items/9990c6dc04c7e4936cc7)
[rex0220 計算式プラグイン GPTs による計算式の改善](https://qiita.com/rex0220/items/3679dfd19f6a544a3b32)
[rex0220 計算式プラグイン GPTs からの回答で関数を追加](https://qiita.com/rex0220/items/ed57694d3ce006b600be)

# 概要
GPTs に、「計算式プラグインの使い方」を作成してみた手順
※よくわからずにいろいろ試してみている状況

- 「計算式プラグインの使い方」を作成
- Configure で、簡単な計算式プラグインを記述
- Preview で、メッセージを送って、応答を確認
- Configure で、記述を追加
- Preview で、メッセージを送って、応答を確認
- Upload filesに、Qiita の [rex0220 計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)のURLをアップロード
    - URL ができるのかわからなかったが、指定してみたらできた
- Preview で、メッセージを送って、応答を確認
- Configure で、記述を追加・訂正の繰り返し

![2023-11-13_20h28_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/18a9b54b-243a-d63e-80cd-8a7b43bc56d0.png)

# Instructions

ここにどんな内容を書くべきかがよくわからないが、ここの内容が応答内容には反映されるようだ。

```.txt
計算式プラグインについて、使い方

計算式プラグインは、クラウドサービスの kintone で、動作するプラグインの一つです。
計算式に kintone アプリのレコード上の項目を指定して、計算結果を他の項目に設定することができます。

計算式の要素

定数
文字： "" で、囲みます。
"株式会社", "個"

数字： 数字をカンマ無しでそのまま記述
0, 1234, 123.456

演算子
文字連結： &
算術： +,-,*,/,%,**,^
比較： =,==,===,!==,>,<,>=,<=,!=,<>
論理： &&,||

関数
関数は、下記のように「(」を空白を入れずに、記述します。
空白があると、fieldcode として扱われます。

　関数名(パラメータ)

OK: CEIL(数値, 1)
NG: CEIL (数値, 1)

TARRAY関数の使い方
TARRAY：　テーブル内項目の配列化

TARRAY(fieldcode [,fieldcode [,...]])
または、TARRAY(計算式 [,計算式 [,...]])
例 TARRAY(文字列1)
例 TARRAY(文字列1,文字列2)
例 TARRAY(文字列1＆文字列2)
例 TARRAY(数値1+数値2)
```

# ChatGPT 

作成した「rex0220 計算式プラグインの使い方」を選ぶと

![2023-11-13_20h47_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/53327091-1bc5-3c84-f387-1941e911e681.png)


# 応答内容
「計算式プラグインとは？」で、メッセージを投げると Instructions の内容が整えられて応答されました。
Instructions には、概要だけ記述して、「TARRAY関数の使い方」などは書かない方がよさそうです。

![2023-11-13_20h45_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/3e603017-932b-2324-e02e-77382e826e12.png)

# 文字列の連結方法

文字列の連結方法を聞いてみると、ちゃんと説明と計算式の例を返してくれた。
驚いたことに、"東京" と "タワー" の例は、Qiita の計算式プラグインのページに無い例です。
GPTs で、分かりやすい例を勝手に作ってくれたようです。

![2023-11-13_20h54_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c7e39e2e-5272-bcd3-3600-487d83aae1a0.png)

# 「ARRAY 関数について教えて」を学習させる

残念ながら、まだ教えていないことは答えられないようです。
それでもそれなりの答えを返してくれました。

## 学習前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4cc03964-8835-2831-4f33-d8fe35a2dee3.png)

## 学習内容
簡単なARRAY関数の説明をアップロード

```.txt
ARRAY：　配列を返す関数

ARRAY(fieldcode[,fieldcode[,...]])
または
ARRAY(計算式[,計算式[,...]])

例: ARRAY(文字列1,文字列2)
例: ARRAY(数値1,数値2)
例: ARRAY(数値1+数値2,数値3+数値4)
```
## 学習後
ARRAY 関数の情報を持っているが、まだ足りないようだ。

![2023-11-13_21h09_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/8a713a09-ebaf-a17e-3180-951ea036baad.png)

## 学習２

ARRAY関数の説明ということを記述し、使用例を増やした。
応答がだいぶわかりやすく改善された。
「3.異なるタイプの値を含む配列」の記述は、どこから持ってきたんだろう？

```.txt
ARRAY関数について

ARRAY：配列を返す関数

ARRAY(fieldcode[,fieldcode[,...]])
または
ARRAY(計算式[,計算式[,...]])

例: ARRAY(1,2,3) -> [1,2,3]
例: ARRAY("A","B","C") -> ["A","B","C"]
例: ARRAY(文字列1,文字列2)
例: ARRAY(数値1,数値2)
例: ARRAY(数値1+数値2,数値3+数値4)
```

![2023-11-14_16h26_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4eabdb84-ebca-4272-507f-e19672042912.png)


## 「ARRAY 関数の使用例は？」
INDEXOF 関数の使用例から、計算式例を持ってきて応答してくれました。
ちゃんと URL で指定した Qiita のページも読み込んでくれているようです。

![2023-11-13_21h34_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/2a19e851-9f3e-dfc7-d2cd-0e418c9aaf37.png)

## 英語で聞いてみる
「What are some examples of using the ARRAY function?」
英語で、ARRAY 関数の使用例を聞いてみると、ちゃんと英語で答えてくれた。
日本語の資料しか無いのに、えらい！

![2023-11-13_21h47_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/2cc7f2b4-388d-3292-dc5b-304c40201c64.png)

## 中国語で聞いてみる
「使用 ARRAY 函数的一些示例有哪些？」
こちらもグーグル翻訳して、中国語で聞いてみた。
中国語っぽい。

![2023-11-13_21h56_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/0a9e52e1-3997-dc7c-019a-302c8cbd0827.png)

## 関西弁で聞いてみる
なんだかわかりやすい関西弁という感じ。

![2023-11-16_17h20_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/edc962c9-37f6-cc85-dd36-aef271978839.png)

## 秋田弁で聞いてみる
こちらは、だいぶ標準語に近い。

![2023-11-16_17h23_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/50502623-0ae4-ac63-6184-be5acd3b099e.png)

## 忍者風に
なんかの任務に使うみたい。

![2023-11-16_17h30_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/904be6e8-e596-d4f4-97df-3e782822dd5c.png)

## ゴジラと戦ってみる
無茶な質問にも答えてくれる。えらい！

![2023-11-16_17h34_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/d67eac72-357a-3579-866c-a817d46ed821.png)

# まとめ

アップロードする資料の質や量によって、応答内容の質を向上させることが出来そうです。
ただ計算式プラグインのような関数が多いものは、かなりの工数をかける必要があります。
地道に学習さえていけば、ユーザー様に使ってもらえるレベルになるかもしれませんが、道のりは遠い！