RBRM プロンプトを読む
【 OpenAI が仕事で使っているプロンプトのプロの作法を学ぶ 】 OpenAIは、モデルの出力をチェックして、モデルをコントロールするためにプロンプトを使っています。 こうしたプロンプトは、GPTの出力を受け取って、その出力をどのように評価するかについて人間が書いたのルール(これをルーブリック rubric といいます)に基づいて、その出力をカテゴリーに分類します。 こうした分類器(Classifier)の役割を果たすプロンプトを、 RBRM(Rule Based Reward Model )プロンプトと呼びます。 このセッションでは、ここでは、RBRMプロンプトで用いられている基本的なテクニックをまず確認します。その後で、GPT-4 System Card で与えられているRBRMプロンプトのソースを読んでみようと思います。 これは面白いことです。なぜなら、OpenAIの開発者が「仕事」でどのようにプロンプトを書いているかを知ることができるからです。まさに、プロンプトのプロの「作法」を学ぶことができます。 その前に、確認したいことがあります。プロンプトは、シーケンシャルに実行されるプログラムと似ているところがあるのですが、異なっているところも多いということです。思いつくままあげれば、... ・プロンプトは、名前を持たない。(「今の所は」とGPT-4は答えていました) ・プロンプトを、名前で呼び出して引数を渡すようなことはできない。 ・プロンプトは、シーケンシャルにしか実行できず、条件分岐はできない。 ・プロンプトは、繰り返しの処理はできない。 ・プロンプトは、再帰的呼び出しができない。 ・ ... ... ただ、プロンプトは「引数」は受け取れないですが、「入力」の文字列を受け取り、「出力」の文字列を返すことができます。 また、プロンプトには「変数」の概念はないのですが、任意の文字列でそれに近いものを定義できます。その文字列は「名前」で、「意味」という「値」をもっていると考えることができます。 プロンプトでは、「条件分岐」という概念はないのですが、「場合分け」は可能です。具体的には、複数のもののなかから一つを選ばせる「選択肢」とその条件ルールを記述できます。選択肢には任意のラベル(「名前」)を選べます。 「選択肢」の定義がその一つの例だと思いますが