では早速話していきましょう。
プロンプト、つまりAIへの指示は生成AIに関わっていく上で、避けては通れないトピックです。
とはいえ、以前私たちが関わっていたプロンプトの関わり方と、今では若干変わっている部分があります。
まずはそこから話していきたいと思います。
もともと生成AIが出てきた頃に、プロンプトエンジニアリングという言葉がありました。
これはプロンプトを設計・最適化する技術のようなものです。
このプロンプトエンジニアリングに携わる人材として、プロンプトエンジニアという職業も生まれたりもしました。
年収4千万円ぐらい提示されたり、話題になったりもしました。
これは海外の話です。
そもそも生成AIというのは、与えられたテキストに対して、その後に続くテキストを確率的に予想しています。
なので、どういったテキスト、つまりAIへの指示を与えるかで、AIの回答がガラッと変わってきます。
端的に言うと、プロンプトをどのように設計するかで、AIのポテンシャルをいかに引き出すかに焦点が当てられていました。
それだけプロンプトやプロンプトエンジニアリング、こうしたトピックへ非常に注目を集めていました。
ただ最近はちょっと状況が変わってきています。
AI自体の性能が上がってきて、人間の少ない指示でもAIが良い回答を出してくれるようになりました。
なので最近は、プロンプトエンジニアリングという言葉、あまり聞く機会は少なくなってきたと思います。
ちなみに補足すると、プロンプトエンジニアリングの後には、コンテキストエンジニアリングといったワードも登場するようになりました。
このコンテキストというのは、以前のエピソードでも登場しました。
背景情報、文脈などの意味合いです。
つまりコンテキストエンジニアリングというのは、AIに渡す文脈全体を設計する技術とでも言いましょうか。
プロンプトエンジニアリングがAIへの指示の書き方に焦点を当てているのに対して、
コンテキストエンジニアリングは背景情報や文脈、会話の履歴、AIが参照する外部のデータ、そういった全体を最適化するアプローチを採用します。
このコンテキストエンジニアリングというのは、主にAIエージェントの開発の文脈で登場します。
ちょっと混乱してしまいますが、プロンプトエンジニアリングの他にコンテキストエンジニアリングという言葉がある、
そういったものがあるという認識だけでOKだと思います。
話をプロンプトエンジニアリングに戻すと、以前ほどプロンプトエンジニアリングという言葉が言われなくなった背景に、
AI自体の進化が関連していると思います。
人間がプロンプトをそんなに工夫しなくても、精度高くAIが回答してくれるようになったと。
ここからは、汎用的に使えるプロンプトのテクニック、
こちらをいくつか紹介していきたいと思います。
まず一つ目が逆質問です。
もうこれそのままで、AIに逆質問をさせるということです。
ちょっと今からプロンプトをいくつか例に挙げます。
例えば、新製品の販売戦略を3つ挙げてくださいと。
AIに指示をするよりも、新製品の販売戦略を3つ挙げてください。
戦略を考えるにあたって不足している情報は、私に質問してください。
こんな感じで、AIから人間に逆質問するように誘導します。
で、これ、なんでこういうことをやるのかっていうと、
AIに逆質問をさせて、タスクの背景情報を追加するためです。
AIの回答精度を上げるには、指示のコンテキスト、
つまり背景情報をより増やすことが必要だと、
以前のエピソードで紹介しました。
これは対人間の場合を想定してもイメージしやすいと思います。
上司から仕事を振られるときに、簡単な指示よりも
詳細な内容や背景情報が伴った指示の方が、
こちらも仕事をしやすいです。
こうした詳細な内容や背景情報を付け加えるために、
AI自身に現時点で足りない情報を質問してもらうというアプローチです。
これ、実際にフリップドインタラクションパターンという
プロンプトエンジニアリングのテクニックの一つです。
フリップド、反転させるみたいな意味合いがあるんですけど、
こちらは結構前からあるテクニックで、知っている人も多いと思います。
たくさんプロンプトエンジニアリングのテクニックがありますけど、
これが一番汎用的に使えるんじゃないですかね。
指示の内容が不足しているなとか、
まだ頭の中が整理できていなくて、指示がふわっとしてしまっている。
そういったときに、AIに逆質問させて指示を固めていく、
そういった使い方ができます。
特に自分が未経験の分野であったり、内容がまだ固まっていない、
そういった場面で活躍します。
例えば、プログラミング未経験の方が
AIを使って何かアプリを作りたいとします。
未経験なので、どういった指示の出し方をした方がいいとか、
こういった技術を使った方がいい。
このような情報が人間側に知識がないわけですね。
この時点で、AIへの指示は内容が薄いものになってしまいます。
なぜなら、人間側にその分野の知識がないからです。
こうした時に、AIへ逆質問させることで、
指示の内容を厚くすることができます。
AIは指示の内容が厚くなればなるほど、
より精度高く回答を出してくれます。
はい、一つ目はフリップドインタラクションパターン。
AIからの逆質問でした。
AIに指示を出して、ここまで私に質問はありますか?とか、
あなたがタスクを遂行するために不足している情報があれば、
私に質問してください。
こんな感じで、AIに逆質問するように誘導します。
はい、では二つ目いきましょう。
二つ目は例題です。
プロンプトの中にいくつかの例題を含めるというアプローチです。
これちょっとイメージしづらいので、具体例を挙げて説明すると、
例えばAIに資料を読み込んでもらって、
決まった形式でレポートを作成してもらいたいとします。
会社の決算資料を読み込んで、このような形でレポートを作ってもらいたいと。
私はAIにこのように指示をしました。
私が添付したPDFの決算資料を読み込んで、レポートを作成してください。
この指示だけで問題なくAIはレポートを作成してくれます。
ただ一点問題が出てきます。
それ何なのかというと、
AIが作成するレポート、構成が毎回微妙に変わってくるということです。
ある会社のレポートでは先に結論から述べたり、
他の会社のレポートでは業績に焦点を当てたり、
あとはレポートによっては文体の中身、そういったものも若干変わってきます。
で、これなぜこういうことが起きるのかというと、
AIの性質によるものです。
AIは後に続くテキストを確率的に予測します。
なので、全く同じ指示を与えたとしても、
返ってくる答えというのは毎回微妙に変わってきます。
例えば私がAIに、日本の首都はどこですかと質問したとします。
で、この質問全く同じ内容で100回AIに質問すると、
回答の中身は微妙に変化します。
日本の首都はどこですかと質問すると、
ある回答では東京ですと端的に回答してくれると。
でも別の回答では、日本の首都は東京であり、
東京は面積がいくらぐらいで、人口がどのぐらいでと長い回答が出てくると。
別の回答では、日本の首都は東京ですと。
おすすめの観光スポットを教えましょうか、みたいな回答が出てくると。
こんな感じで特にプロンプトに工夫をしなければ、
毎回ランダム性を持った回答が出力されてしまいます。
AIと相談しながら会話形式でタスクを進める場合、
そういった場合はこれで問題ないと思います。
でも繰り返しのタスク、例えば、
AIに翻訳をしてほしい、AIにレポートを予約してほしい、
こうしたあらかじめこのようなテンプレートで回答してほしい、
そういった場合にはちょっと都合が悪くなってきます。
じゃあどうするのかっていうと、そこで今回紹介した例題のテクニックを使います。
これもプロンプトエンジニアリングでよく知られた手法で、
フューショットプロンプトと呼ばれたりもします。
つまりプロンプトの中にいくつかの例題を含めることで、
AIの回答を制御することができるというアプローチです。
例えば、人間に首都を聞かれたら、
必ず都市名だけ返してほしい、
そういった場合は次のようなプロンプトにします。
あなたのタスクは国名から首都を答えることです。
都市名のみ返してください。
例題、日本の首都は東京、フランスの首都はパリ、
アメリカの首都はワシントンDC、
こんな感じでプロンプトの中に、
AIにこんな感じで回答してくださいねと例題を含めると。
この例題プロンプトもかなり幅広く応用できます。
例えば、AIにメールの下書きを作成してもらう、
そんな場面をイメージしてみてください。
メールって冒頭と末尾に、
結構テンプレートを使うことが多いじゃないですか。
お世話になります、株式会社ルートCの矢野てっぺいですとか、
メール末尾には会社の住所や連絡先を記載したり、
こうしたAIにメールを作成してもらうときは、
必ずメールの冒頭と末尾には、
この文言を入れてほしいとか、
メールの文面や文体はこのようにしてほしい、
そういった回答のお手本となるような例題をプロンプトに含めます。
AIにこんな風に回答してほしいのに、
なかなか言うことを聞いてくれないと。
そう感じた場合は、プロンプトに例題を含めることで、
AIの回答を制御することができます。
はい、では次のプロンプトテクニックに行きましょう。