ChatGPTはプロンプトエンジニアリングがすべて

ChatGPTがリリースされてから半年以上が過ぎ、ビジネスや教育の現場で活用される事例も増えました。

このChatGPTがブームとなり始めた今年のはじめ頃は、まだ検索エンジンとの違いを多くのユーザーは理解できずに、「◯◯について訊いたけれど不正確な回答だった」などというSNSの記事がよく見られましたが、最近はかなりのユーザーがChatGPTに「適切な問い」を投げて、それぞれのビジネスなどにうまく活用しているようです。

そのための手法である「プロンプトエンジニアリング」という言葉もかなり浸透してきていますね。この記事ではあらためて「プロンプトエンジニアリング」とはなにか。そしてChatGPTを使うときに、どのように指示や質問をすれば良いのか解説します。

そして最後に、最新のプロンプトエンジニアリングのTree of Thoughtsプロンプトについても触れたいと思います。
   
   

「プロンプト『エンジニアリング』」とはなにか

そもそもなぜ「ChatGPT質問法」とか「指示のやり方」ではなく、「プロンプトエンジニアリング」などという仰々しい名前なのでしょうか。

この項ではあらためて「エンジニアリング」について述べたいと思います。

エンジニアリングとは「工学」と訳されているように、「ものづくり」のことですね。
もの(ハードウェア)だけでなく、形のないソフトウェア工学もどちらも原理的には同じです。

エンジニアリングの一連の作業(プロセス)を図示する方法としては、「Vモデル」など様々なものがありますが、ここではIPO図を紹介します。

IPO図とは、Input – Process – Output の頭文字を取ったもので、必要な材料を「インプット」したのち、加工などの「アクティビティ」を経て、製品として「アウトプット」を産出(出力)する一連の流れ(プロセス)を図示化したものです。
  
   

IPO図

    

エンジニアリング(システムズエンジニアリング)のプロセスでは、「実行手段」のブロックが下からアクティビティのプロセスを支え、コントロールのブロックが上から統制を行うという構造になっています。

具体的に言えば、「実行手段」はプログラムを実行するためのシステムを指し、「コントロール」は、これらのシステムを動かして、「アウトプット」(処理されたデータや製品/サービス)を望ましいもの、適切なものにするための目的や制約・条件などを指します。

例えば自動車製造のような「ものづくり」をIPO図で表してみます。
  
  

自動車製造のIPO図

   
     
自動車工場では材料などがインプットされ、それが加工(アクティビティ)のプロセスを経て完成車がアプトプットされます。
そのためには工場が必要で、そこでは自動車加工のためのシステムがあり、そしてそれらを支える会社のさまざまな体制(人事、財務、流通、営業など)があります。

無論これだけで自動車が造れるわけではなく、さらに目的(例えば製造するのはワゴン車なのか、スポーツ車なのか、トラックなのかなど)、制約や条件(安全のためスピードは最大でも時速150km以上でないようにするとか、燃費はリッター20km以上とか、耐久性は◯◯など)を定めないと、望ましいアウトプットは得られません。
   
    

ChatGPTで望ましいアウトプットを得るには

ChatGPTについて考える前に、よく比較されるシステムである「検索エンジンシステム」を考えてみます。
Googleなどの検索エンジンは、なにか調べたい言葉を入れる(インプットする)と、Googleが適切と考えるWEBページの一覧がアウトプットされます。

「実行手段」に関しては、表からはシンプルなページしか見えませんが、裏では巨大なデータベースがあり、さらにクローラーが世界中のWEBページを訪問して最新情報を収集しています。

また、インプットされたキーワードに対し、適切なWEBが出力(アウトプット)されるよう、制約(法令やポリシー等に違反していないか等)や条件(いわゆる検索エンジン最適化(=SEO))の見直しを常に行い、ユーザビリティの高いシステムになるよう「コントロール」を行っています。

検索エンジンはその目的もはっきりしており、そのための「実行手段」「コントロール」もしっかりと(ガチガチに)作り込まれています。

おかげで私たちは検索したい言葉(インプット)を何にするか、ということ以外、あまり深く考えずにこのシステムを使うことができますよね。
 
  
一方のChatGPTですが、これは会話(チャット)のためのシステムです。
私たちは普段さまざまな目的を持って、なかには独り言や雑談のように目的もなく会話を行っています。

そして使ってみた方はお解りのように、ChatGPTも雑談から高度な質疑応答、翻訳やプログラムの生成など「言語」に関して言えばあらゆることに対応しています。

逆に言うと、この「コントロール」は使う側、ユーザー側で定義してあげる必要があります。繰り返しになりますが、検索エンジンのように使おうとしてもうまくいきません。検索エンジンシステムでは、ユーザーは「インプット」(検索キーワード)を何にするかだけを考えれば良いのに対し、ChatGPTでは「コントロール」をどうするか合わせて考える必要があるからです。

ChatGPTのIPO図

  

ChatGPTを使うに当たって、コントロールの項目を挙げると、
目的:アウトプットはどんなものが必要なのか、その目的や目標。
条件や制約:その目的を達成するためのアウトプットに関する条件や制約。

上記とも被りますが、個々の指示のポイントは「RELIC」であることがコツと言われています。
「Role」「◯◯専門家」など役割(役職)を与えること。
「Exclusion」内容に入れたくない情報はあらかじめ伝えておくこと。
「Length」何字程度で回答してほしいか長さを伝えること。
「Inspiration」すでにある事例や、該当の情報が帰されているURLを入れるなど実例を示してあげること。
「Context」質問の意図や背景を明確に。

ここまで読んで、ビジネスに聡い方なら、「たしかにChatGPTは目的や制約など『コントロール』も定義するのが、結構めんどくさい。それなら、こちらで目的を絞ってあげてインプットだけ考えればよいシステムを作れば、ビジネスになるのではないか」
・・と思ったかもしれません。

それはまさしくその通り!で、シリコンバレーやあるいは日本でも今「生成AIビジネスが熱い!」と言われているのは、OpenAIのAPIを使ったり、あるいは独自で大規模言語モデルを作成して、目的を絞った独自のモデルを創ろうと、多くの会社や起業家が参入しようとしているからなのですね。 
  
   

課題解決に最適な最新プロンプト「Tree of Thoughtsフレームワーク」

冒頭で述べた「Tree of Thoughtsフレームワーク」は、2023年5月に、AlphaGoなどを開発したGoogleのDeepMindチームとプリンストン大学の共同研究で発表されたプロンプトエンジニアリングの最新手法です。

これは人間が課題解決を行うときの思考法、さらにはそれを応用したAlphaGoや自動運転システムなどで使われる「深層強化学習」のやりかたを組み込んだ手法になります。
   
    

  
   
今までのやり方との違いを、論文は下図のように表しています。
先程のIPO図が、こちらでは上下にして描かれています。
   
    

   
    
一番左の(a)のI-Oプロンプトは、インプットしてすぐアウトプットを取り出そうとするやり方です。簡単な会話ではこのような形です。

そのとなり(bのハズですが、原文でも(c)となっています)のChain of Thought(CoT)プロンプトは、いきなり結論を求めるのではなく、そのプロセスを記述するもの。上述したようにコントロール(目的や条件、制約など)をひとつひとつ考えて入力するやり方ですね。

しかし「自然言語処理」システムという性格上、ChatGPTなどの対話システムは、数学計算の答えなどを求めるとか、いくつかの要素から論理的に一つの答えを導くような演繹的な思考は苦手としています。

そこで、(c)のように答えを複数提示して、その中から適切な回答を選ぶSelf-consistency with CoT(自己整合型COT)プロンプトが考えられました。
(上述のように「検索エンジンシステム」は、実際には内部で様々なプロセスが働き、さらに複数のWEBページが評価順に多数並んで、それをユーザーに選んでもらうというシステムですから、この「自己整合型COT」であると言えるでしょう。)

ただこの方法も「一番妥当なWEBページの順番を決める」ような比較的単純なものなら良いですが、例えば自動運転のナビや将棋や囲碁のような問題とか、ビジネスなどの様々な問題のように回答をたくさん挙げるだけでは、実際には対処できない問題もたくさんあります。
複雑なプロセスを経るような問題では、全部の回答を片っ端から検証したり、評価したりするのは、リソースがいくらあっても足りません。

そこで今回登場した新しいプロンプトが、Tree of Thoughtsプロンプトのフレームワークです。

これは(d)で表すように、プロセスの1段ごとに複数の考えのなかで評価を行い、最終的に適切な回答に導くやり方です。

上述の論文では、本来自然言語処理では苦手な「計算ゲーム」「クロスワードパズル」などで高い正解率を導くことに成功しています。また「クリエイティブ・ライティング」でも高い評価を導きました。

このやり方で、課題解決を行う場合は、問題をそのまま出して正解を求めるのではなく、まず「ブレスト」的に比較的易しい質問から回答を複数出してもらって、そのブレストの回答を評価し、その中から評価の高いものをさらに深掘りの質問を行って、また評価を得て更に詳細に質問を行うというやり方を行います。

そうすることによって、いくつかの答えをまたがりながら、あるいは条件分岐していきながら、適切な答えを導いていく。
これは実際に人間が課題解決で行うやり方、例えばデザイン思考の手法にも近く、複雑な問題の回答を求めるのに適したやり方と考えられます。

実際の様々なケースでの「Tree of Thoughts」プロンプトについては、また頁を改めて解説したいと思います。
  


日本能率協会主催「アート思考入門セミナー」