みなさん、ChatGPTなどのAIは使ってますか?
こういった記事を読まれている方は、なんらかの形で使われていることと思います。
プロンプトエンジニアリングの概要については、こちらの記事にざっくりと概要をまとめてありますのでよければご一読ください。
プロンプトを書く前に
どういったプロンプトを書くとAIがより精度のいい回答をしてくれるのでしょうか。
ごくごく個人的な解釈ですが、AIが様々な知識を取り込んだ結果、より人間っぽくなったと考えると自然かもしれません。つまり、何かを人にお願いする時にはあまりにもざっくりとした指示をすると、出力内容は中途半端なものが仕上がってくるのに対して、事細かく指示をした場合はそれなりのものが仕上がってくる・・つまりそんな感じです。
プロンプトエンジニアリングを突き詰めていった結果、「いいプロンプトを作るにはどうしたらいいんだろうか」→「そうだ、いいプロンプトをたくさん集めればいいんだ!」というアプローチを言語化すると下記のサイトになります。
日本語で様々なタスクを実現するためのプロンプトがたくさんあり、プラグインを導入することでChatGPTなどに自動的にプロンプトを流し込んで実行してくれるとても便利なツールを扱っているサイトです。
たくさんの人が作ったプロンプトを参考に自分のオリジナルのプロンプトを考えることもできますので、そういった意味でも有益な情報と思います。
よいプロンプトとは
一般的にAIのパフォーマンスを上げるためのテクニックは下記のようなものがあげられます。
- タスクと成功基準を定義すること
- 明確かつ直接的であること
- AIに対してロールを与えること
- 回答の例を示すこと
- 複雑なタスクは小さく管理しやすいステップに分解すること
- AIに思考させること
それぞれの内容について見ていきましょう。
明確かつ直接的であること
基本的にAIは豊富な知識があって賢いが、若葉マークがついた新入社員のようなものです。初めての人に仕事を指示するときと同じように、あなたが何を望んでいるのかを率直に説明すればするほど、AIの回答品質は良くなります。
例えば、「日本人で最高の野球選手は誰ですか?」という質問の場合、王貞治なのか、長嶋英雄なのか、松井秀喜なのか、はたまた大谷翔平なのか、たくさん候補があがって回答する人の好みが出ると思いませんか?
もっと具体的に「日本で活躍したホームラン王の異名を持つ最高の野球選手は誰ですか?」と質問した場合はどうでしょう。ホームラン王で最高の野球選手といえば王貞治となりますよね。このように具体的な指示をすることで回答の品質が格段によくなるということです。
AIに対してロールを与えること
基本的にAIはとても優秀なアシスタントです。そしてAIに対してロール(役割)を与えることでさらに優秀なアシスタントとなります。特にロールを割り当てることでパフォーマンスがよくなるものとしては、コーディングやロジック解析などの高度技術タスクや、その役割が果たす聴衆向けの文章作成タスクなどになります。
回答の例を示すこと
人に何か指示をする場合に「こういう風に資料を作ってください」というように出力結果のサンプルを示すことで、指示を受けた人がそのサンプルを参考にして出力結果を調整してくれるのと同じように、AIに指示をする場合でも出力サンプルを示すことで、そのサンプルを参考情報として出力結果をサンプルに合わせて調整してくれて、一貫性の向上や精度の向上を図ることができるようになります。
複雑なタスクは小さく管理しやすいステップに分解すること
AIに対して1つのプロンプトで処理させるタスクが増えるほど、何かの処理をしなかったり、単一のタスクの実行結果が悪くなる可能性は高くなります。こうしたタスクを処理する場合は、複雑なタスクを小さなタスクに分割して、順番に連結タスクとして処理させることでトータルのパフォーマンスを向上させることができるようになります。
AIに思考させること
複雑な質問やタスクに直面した場合、最終的な答えを出す前にAIに対して問題を段階的に考えてもらうことで出力品質を向上させることができるようになります。あなたのチームでプロジェクトに大きな課題が出た場合に、チームで集まってあれやこれや課題に対して議論をすることで思考が進み課題解決の糸口になることと同じで、AIもおおきな課題に対して思考させることでパフォーマンスに差がでるということです。
思考させる場合は、「段階的に考えてみよう」、「ステップバイステップで考えてください」、「手がかりを1つずつ調べて、それぞれに関連する可能性があるかどうかを検討してください」などをプロンプトに追加することでAIに思考を促すことができるようになります。
まとめ
自分もふわっと理解していた部分があったので、改めて自分の言葉におきかえることで、言語化できていなかった部分の理解が進みました。
参考サイト