GPTsのカスタマイズで instruction が改変される

仕事で使うためにGPTsのカスタマイズをしています。うまく機能してくれる部分はもちろんあるのですが、いくつかの問題点も浮かび上がりました。

GPTsのカスタマイズには、直接 instructions に書き込む方法と、create 画面でChatGPTとやり取りして作り上げていくやり方があります。

実際に作業を進めていると、Create画面で一度出した指示をGPTsが忘れてしまうケースがたびたび起こります。新たな指示を出した時に、前の指示を「忘れてしまう」ことがあるようなのです。

なぜこうしたことが起きるかというと、GPTsは新たな指示を必ずしも「書き足す」わけではなく、以前から蓄積された指示を参照して「書き換え」ているようなのです。instructions は言語で筆記されます。GPTsはそれなりに過去の指示と新たな指示を「うまくまとめて表現しよう」としているようなのですが、消してはいけないルールまで書き換えてしまうことがあるようです。

また instructions に指示が残っていたとしても、「参考にされる」程度であって「ルールとみなされていない」こともあるようです。

さてどうしたらこれが回避できるのか。

ChatGPTが理解できるサイズは1000文字

ChatGPTのカスタマイズに関しては、あまり良い情報源がなく困っています。その中でいろいろと検索をしていて見つけたサイトにこのような記述がありました。

「ChatGPTが読み込めるのは最初の1000字だけ。それ以降は分析されない」

え?私は結構大きな本の原稿とか読み込ませたかったので、それは困ります。でも、ChatGPTのどこを調べてもそんな記述はありません。

そこでChatGPTに尋ねてみました。

すると回答は「一度に読み込むのは1000文字まで(英文などは3000~4000文字)です。それを解析すると次の1000文字に進みます」でした。

つまり、大きなファイルも全部通して読んでくれる。その一方で、1000字が来たところで一旦解析が止まるので、文章の中の意味のまとまりが1000字以内でないと、途中で切られて解析されてしまう可能性があるとのこと。つまり解析の精度が下がる。

文章のブロックは1000字以内に

そこで対策は、文章の中の意味のブロックを1000字以内にすることです。例えば見出しなどで文章を小さく区切る。そうするとChatGPTは次の見出しまでが一つのブロックだと理解して、ブロックごとに解析するようになるようです。

ChatGPTはアメリカで作られたAIです。従って、文章には構造があることを前提に設計されている可能性が高いです。

1000字以内で区切ることで、分析の精度にどれほどの影響があるかの確認は難しいですが、覚えておきたいと思います。

.csvの代わりは.txt ChatGPTにデータを読ませる

前の投稿でChatGPTのカスタマイズに.csvファイルのアップロードをしても、私のニーズではうまく行かなかったことを書きました。ではどうしたら良いのか?

結論から言うと

.csv ではなく、データを記述する

のが機能しました。例えば名古屋と京都の間の料金ならば「名古屋から京都までの新幹線の料金は1万円です。」と記載するのです。

こうすると、ChatGPTは名古屋でも、名古屋駅でも、Nagoya Stationでも、自分で「これは同じだな」と判断して、ちゃんと正しい数値を返してくれます。

「名古屋から京都までの新幹線の料金を教えてください」

「名古屋から京都までの新幹線の料金は10000円です」

という感じです。

では「名古屋から京都までの新幹線の料金は1万円です。」というのはどこに記述するのか。

最初はよくわからないまま instruction のところに直接書き込んでいました。でも、これだと料金の追加や変更を行うたびごとに、instruction の編集画面を開かなければいけません。やり方としては不自然だし面倒です。

.txt ファイルに記載してアップロード

そこで、可能かどうかはわかりませんでしたが、fare.txt というようなテキストファイルを作り、その中に料金を「記述」しました。コンマやタブで区切るのではなく、あくまで「記述」です。

「名古屋から京都までの新幹線の料金は10000円です」
「名古屋から岐阜までの普通列車の料金は400円です」

という具合。そして instruction には「まず fare.txt の中で料金を探して」というような指示を書き込みます。

これでうまく行きました。

なんと、人間の目であれば表形式で作ったり参照したりするのが便利ですが、ChatGPTはテキストを解釈して物事を進めるAIなので、記述式の情報を提供する方がうまく対応できるようなのです。覚えておこう。

ChatGPT でカスタマイズしたGPTsを作る  .csv ファイルの扱い

ChatGPTの有料アカウントをどう作るかとか、GPTのカスタマイズをどう始めるかはYouTubeなどで調べてください。ここではいきなりぶち当たった壁などについて書いていきたいと思います。

値段表をどう読ませる?

ChatGPTを使えば簡単に見積書のひな型などができることは皆さんご承知でしょう。それを一歩進めて、旅行業で、旅程を指定したら経路に合った交通機関の料金を表示してくれる仕組みを作ろうと思い立ちました。

そこで「料金表をアップロードすればよい」と考え、MS Excelで一覧表を作りました。でも、ChatGPTの対応ファイルの中にExcelは含まれていないようです。そこで.csvファイルでセーブし、アップロードしました。

.csvファイルはChatGPTで読み込めるか?

ChatGPTでは.csvファイルを扱うことができます。アップロードも問題ないです。さらに例えば「交通費.csv からデータを探すように」という指示を書き込んでおけばその通りにしてくれます。

私も.csv ファイルをアップし、Instructions に指示も書き込みました。そこでGPTのプロンプトで次のような指示を出してみました。

「名古屋駅から京都駅までの新幹線の値段を教えて」

ところがChatGPTは「データがないので、大まかな料金をお知らせします。」みたいなことを言って、出どこがわからない数字(現実離れした数字ではない)を示してきます。

.csv ファイルの中には Nagoya, Kyoto, Shinkansen, 10000 というようなデータを入れてあります。でもデータを取り出してくることができません。ちなみに英語で入れてあるのは、外国人向けに見積もりを作るためです。

いろいろと試してみましたが、うまく機能するものもあれば、機能しない時もある。要はうまく行くかどうかが予想が付きません。結果だんだんわかってきたのは

.csv などの表は正確な単語を使わないとChatGPTに理解されない

ということです。要はデータベースから一致するデータを抜き出しているようなものなのではないかと思います。.csv ファイルの中の各項目が、query に用いる単語と一致しないと、データーをうまく取り出すことができないようなのです。ワイルドカードみたいなものが使えるのかどうかはよくわかりません。

明確な商品の型番などと、値段が一対一に対応しているような場合。query に使うのも型番でしょうから、表現にブレがありません。

ところが、旅行だと「名古屋」と「名古屋駅」は同じなのか違うのか?ChatGPTのプロンプトならば、そのあたりは融通を効かせてくれると思います。でも、.csvファイルの中を見る時には、完全一致じゃないとうまく行かないようなのです。

こうなると.csvファイルは使いにくいものになります。もちろん用途にもよりますが、query に使う言葉にちょっと幅があるようなケースだと、実用的とは言えません。

ではどうしたかは、次の書き込みで紹介します。

Oops, undefined エラーがChatGPT起動時に出る

ChatGPTにWindowsバージョンが出たようで、インストールを促されました。そこでリンクをたどってインストールしてみましたが、途中で「Oops, undefined」というエラーが出て先に進めません。何度やっても「Oops, undefined」で止まってしまいます。

これは完全なバグなのか、それともGhatGPTのサーバーがキャパオーバーを起こしているのかどちらかと思いますが、英語で検索してみました。例えばここ

ここに投稿している人は「一度はうまく行って機能していたのに、Oops, undefinedが出るようになってしまった。」というのを繰り返しているようです。つまり、基本的にはChatGPTのアプリは動作することは確認されているようですね。

となると、やはりアクセスの集中によるChatGPTのサーバーの混雑が原因でしょうか。仕方ないですよね。ものすごく大勢の人が世界中からアクセスして、しかも無料なのですから、文句も言えません。

ChatGPTはものを書く時にも簡単にトピックのサマリーを示してくれて、とても便利です。WEB上では使えるようですので、しばらく様子を見てみます。