rex0220 計算式プラグインの使い方をGPTsに学習させてみる(その9)誤った計算式の訂正学習2の続きです。
使用例の学習を続けてもなかなか終わりが見えません。
考え方を変えて、機能別に計算式を学習させてみます。
概要
いろいろ計算式の問合せを行うと、利用できない関数を応答する例や、対応する関数はあるのに計算式プラグインでは関数が無いなどの応答がよくある。
どうも関数の機能があまり学習されていないように思える。
実現したい機能に対して、対応する計算式はいくつかあるので、それらを学習させた方がよさそうだ。
テーブルの集計関数の問題
「テーブル内数値1 の最大値と最小値を取得するには?」
単純に MAX 関数と MIN 関数で、取得できるが、応答では「直接的な最大値や最小値を返す関数は提供されていないため」となり、代替案が提案される。
MAX 関数の説明の問題
MAX 関数の説明内に、「テーブル内項目で最大値」とあるが、「テーブル内数値1 の最大値と最小値を取得するには?」の問いには対応できないようだ。
・ MAX 関数について
MAX:テーブル内項目で最大値。または指定された項目で最大値
MAX(テーブル内項目[,...])
ex:
MAX(数値T)
MAX(数値1,数値2,数値3)
MAX(1,2,3) -> 3
MAX(1,2,3,"10") -> 10
機能別に計算式を記述
テーブルの集計関数をまとめて、記述
・テーブル内数値1 の最大値と最小値などの集計
MAX(数値1) // 数値1の最大値
MIN(数値1) // 数値1の最小値
SUM(数値1) // 数値1の合計
AVE(数値1) // 数値1の平均
FIRST(数値1) // 先頭の数値1
LAST(数値1) // 最終の数値1
MAXIF(区分="有効", 数値1) // 区分="有効"で、数値1の最大値
MINIF(区分="有効", 数値1) // 区分="有効"で、数値1の最小値
SUMIF(区分="有効", 数値1) // 区分="有効"で、数値1の合計
AVEIF(区分="有効", 数値1) // 区分="有効"で、数値1の平均
FIRSTIF(区分="有効", 数値1) // 区分="有効"で、先頭の数値1
LASTIF(区分="有効", 数値1) // 区分="有効"で、最終の数値1
・テーブル行内の数値1, 数値2, 数値3 の最大値と最小値などの集計
TR_MAX(数値1, 数値2, 数値3) // 数値1, 数値2, 数値3の最大値
TR_MIN(数値1, 数値2, 数値3) // 数値1, 数値2, 数値3の最小値
TR_SUM(数値1, 数値2, 数値3) // 数値1, 数値2, 数値3の合計
TR_AVE(数値1, 数値2, 数値3) // 数値1, 数値2, 数値3の平均
機能別に計算式を学習後の応答
「テーブル内数値1 の最大値と最小値を取得するには?」
「テーブル内で、区分="受注"の金額の合計」の応答
応用として、学習した計算式例と少し変えて問合せしたが、正しく応答された。
「テーブル内で、区分="受注"の単価×数量の合計」の応答
さらに、単価×数量の金額計算に変えても問題なく応答される
まとめ
関数別に機能を記述するより、機能別に対応する計算式をまとめて記述する方が学習効率がよさそうです。