ChatGPT Plusのcustom instructionsについて
要約
自然言語での質問から自然言語の回答を求めるという限定的な問題領域について、指示文の指定をCLI(Command Line Interface)的に簡素化することが可能か?という命題について、custom instructionsを利用しある程度まで解決可能であることを確認した。
custom instructionsに独自のルール体系を定義することで、表出力、サンプルコードを出力に追加、という指示をある程度出せるようになった。
custom instructionsのデバッグ自体をchatGPTを利用することがある程度可能であった
要件
ChatGPT Plus(有料版)ではcustom instructionsを利用して毎回行われる定型的な指示を設定できるようになった。定型「ルール」を工夫することで動的な指示を与えることができるかを試すことが本要件の中心的な狙いとなる。
指示文を質問や指示と解釈されず、指示文全体を翻訳するモードが欲しい
指示文に対する回答を、指定したフォーマットで出力したり、表出力することをできるだけ簡易にしたい
指示内容がChatGPTにどのように理解・判断されたのかを出力するようなデバッグモードを作りたい
APIを通じて、frequency_penaltyやtemperatureなどの指定をせずに、誰でもPCでWebブラウザを利用する環境を想定
設計方針案
メジャーモードを設定し、入力文翻訳するモードを作り出す
翻訳ではないメジャーモードで、さらにマイナーモードを複数設定することで回答内容のカスタマイズを行えるようにする
人格設定は各モード設定と独立に指定可能とする
メジャーモード、マイナーモード、人格設定を指示文の一部としてアルファベットを用いたオプション入力とし、詳細な文字入力の労力を削減する
設計の具体化
メジャーモード
任意の言語から特定言語に翻訳するメジャーモードを定義する。このモードではメジャーモード指定以外は全て翻訳対象の文章と解釈する
マイナーモードを受け付けるメジャーモードも定義する。
マイナーモード
マイナーモードをデバッグするモードを含める
出力形式を指定した各マイナーモードを指定する
人格設定
利用する人格を定義し呼び出せるようにする
以上の設計案に対してcustom instructionsを作成したが、実際には最大文字数の1500という上限があるため、人格設定を省略しての設定となった。
custom instructions指示文の開発プロセス
custom instructionsの内容を確定していった手順概要は以下の通り。
custom instructionsのベースを自然言語で作成
custom instructionsの動作確認と修正(デバッグ)
ここでは後者のデバッグのプロセスについて説明する。
前提
custom instructionsには2か所、それぞれ1500文字記入できる箇所がある。
(1) What would you like ChatGPT to know about you to provide better response
(2) How would you like ChatGPT to respond?
(1)には、「母国語は日本語」と記し、(2)にどのような指示を与えるべきかに絞って以下のプロセスを進めた。
デバッグ
実際のデバッグやどう修正すべきかの決定は、以下のようにChatGPTとの対話を通じて行った。
具体的な指示を出して指示通りに動くかを確認し、custom instructionsを修正した
期待通りに動作しない場合は、「どのように指示を認識しているか」をChatGPTに質問して解釈の正しさを確認
認識の違いが認められれば認識の違いを指摘し、認識違いを埋めるためには「custom instructionsをどう修正したらいいか、修正案の提示」をChatGPT自身に依頼
曖昧な表記、冗長な表記があるか尋ねる。「custom instructionsの指示で曖昧、もしくは冗長箇所はありますか?修正案を提示してください」とChatGPTに問うことで
最大文字数を超えそうになったら、「custom instructinosの指示内容を簡素で的確に修正すべき箇所の修正案」を求めた
修正プロセスの評価
プロセスは極めて非線形、行き当たりばったりであるため、実験データを示さずに所感としての評価を示す。
ChatGPTは「マイナーモードフラグ〇の定義が漏れています」というように、優先度順位付けに誤って出てくるフラグの指示をしてくれるという利点があった
ChatGPTに提案してもらった修正案が冗長であることもあり、回答に対してつい質問をするとさらにそれを修正するというように、頻繁に発生する不確定な動作も、当然ながら散見された。
dフラグの修正プロセスに最も時間がかかった。このフラグは特別であるため、ほかのフラグの表記と異なる表記が最も期待する動作を得えやすいと判断した。
成果としてのcustom instructions
以上のプロセスを経て得たcustom instructionsを以下に記す。また、このcustom instructionsを利用して以降の動作実験を行う。
動作実験
実際にcustom instructionsを記入して実験を行った。実験の意図としては多くの試行回数を通じての結果ではなく、少ない試行でどのような結果が観察されたかを示すことを意図している。理由としては頻繁に環境は更新され、実用に耐えうるかという詳細な評価を行ってもすぐに環境を含めて変化してしまうため、コストをかけても無意味化されてしまうことを念頭置いている。
なお、本実験は2023年8月8日に実施している。
メジャーモードの実行 翻訳について
全文翻訳モードのメジャーモードが認識されて、英語翻訳が可能であるかを確認した。
今回の実験では「グーテンモルゲン」が英語に翻訳されたが、別の場合には
ドイツ語で表記した結果が得られる場合があるなど完全に安定した状態では、必ずしも動作しないことが分かった。
メジャーモードの実行 混乱を与える入力
翻訳文に指示文と誤解される文章を入力したところ、実際に回答が混乱し、不安定となった。また、エスケープモードは正常に動作していないことも観察された。
マイナーモードの実行
dフラグはある程度動作することが分かったが、tフラグ、cフラグが不要なコードを出力したり、不要と思われるテーブルを出力している。必ずしも最適には動作しないことがあると観察できる。
なお、ここには例を表示していないが、cフラグ、tフラグが不適切と判断し、その旨を表示し回答した場合もあった。
動作実験の評価
指示の与え方などによっては適切に動作するものの、混乱を与えるような入力を与えると期待通りには動作しないことが分かった
ChatGPTの指示文の一部として定義することは、文法的・論理的に完全な指示を行わないでも済むという利点も存在した。例としてサンプル中の「メジャーモードの変更時に限り、その旨を出力」である。これにより一般的なプログラミングに比べて記述内容が大幅に軽減されている
今後の方向性
CLIで採用した文法や記法に改善の余地は大きいものの全体的な方向性としては以下のようなことも考えられるだろう。
今後、generative AIの進展に伴って、あらゆる場面に浸透してすることが明らかである以上、利用背景についても、生活、趣味、仕事などの大きなバックグラウンドを適用して判断することも必要だと考えられるが、同時にそれらのデータの開示、利用、およびフィードバック自体がすべてプライバシーにかかわる情報であるため、利便性とセキュアであることの新たなバランスについて、既に進められているこの分野での検討の進展が急務であることが想定される。
評価でも述べたように、指示は文法的にも論理的にも、完全でなくてもその内容を理解されることが分かった。できるだけ簡素でありかつ、自然言語として理解可能、かつ言い尽くさなくても引き続く行動がほぼ想定できる指示文を追求することが必要だろう。また、言い尽くさないでも済むためにも、論理的にも、倫理的にも、どのような教師データが与えられているのかを提示する方法を検討することが必要になるであろう。
人格の指定は特に実験を行っていないが大まかな動作は確認している。しかしながら、今回の問題領域での利用はあまり想定できない。対話を生成するなど別の問題領域での適用性を検討すべきだろう。
今回は、CLIのインタフェースを利用するということを前提にした入力を行ったが。今後はGUIや音声入力を想定するだけでなく、声音、身振り、視線、表情を利用し、どのようにして簡素、かつ、確実な指示に「近づけるか」という心理学とクロスオーバーするかもしれない領域の検討も必要になるかもしれない。