【ChatGPT】一段レベルの高いプロンプトをデザインする方法
ChatGPTなどの生成AIのニュースを聞かない日はないくらいビジネスでの生成AIの活用が進んでいますね。
最近はプロンプトに必要な要素やプロンプトの書き方などを書いた記事やセミナーも増えてきました。
そんな中、複雑なプロンプトを設計する際にグチャグチャになってしまう。
どんな風な要素を盛り込めばいいのかまとめっていない。
うまく機能してくれないなどのお悩みを持つ方も増えているのではないでしょうか。
この記事では複雑なプロンプトをデザイン(設計)する際のコツについてまとめておきます。
チャットベースを超えた複雑なプロンプトを設計したい方はぜひ読んでみてください。
複雑なプロンプトを設計する際の2つのコツ
複雑なプロンプトを設計する際には以下の2つのコツがあります。
・カスタマイズしやすいように各要素をかく
・先に全体のプロンプトの設計図を書く
カスタマイズしやすいように各要素を書く
1つ目の要素に関してですが、こちらはすでにネットでも多くの方がプロンプトを書く際のコツとして紹介しているもので、プロンプトを長文でダラダラ書くよりも各要素(パーツ)の段落に分けて記述するというものです。
こちらは前回に書いた記事で詳細は紹介していますので基礎から知りたい方はぜひ読んでみてください!
基本的には
1:プロンプトを要素ごとにパーツとして分けること
2:各要素の中身もパラメータのように分解して記述すること
3:あとはパーツを必要なものに合わせてカスタマイズすること
がプロンプト設計の基本となります。
各パーツごとに分けてプロンプトを設計することで修正や参照が用意となり
誰もがわかりやすいプロンプトになるので参考にしてみてください!
先に全体のプロンプトの設計図を書く
そして2つ目のコツが今回触れたい内容です。
1つ目のコツを身につけ、いざプロンプトを設計していくといくつかの小さな悩みが発生したりします。
例えば、
・プロンプトを書いたがどこがどの要素に繋がっているのかわからなくなる
・長くなり、自分が意図したようにプロンプトを書けているか不安
・後から色々付け足しをして結局プロンプトが汚くなる
・どんな要素を加えるとプロンプトが複雑なアウトプットを出してくれるのかわからない
などといった悩みです。
最後の要素に関しては要素の引き出しを増やしていく必要があるのでこの後Tipsを書いていきますが、前の3つあたりはプロンプトの全体像が見えていなくなることが1つの原因として挙げられます。
しかし、これがプロンプトだけに特有の問題であるかといえばそうでもありません。デザインや企画立案、コーディングなどの他領域でも書いているうちに全体像がよくわからなくなることはあります。
ですので、解決策も自ずと同じでシンプルです。
先にプロンプトの設計図を書いておくことがプロンプトが汚くならないための有効な解決策になります。
複雑なプロンプト設計の手順
では実際にプロンプトの設計の手順を書いていきます。
STEP1:プロンプトの要件を洗い出す
まずはプロンプトに入れたい要件を洗い出しましょう。
どんな目的を満たしたいのか、入れたいノウハウはあるかなど作るにあたって入れたい要素を洗い出してください(Miroでも紙のノートでも使うものはなんでもOKです)。
今回はアイデアの検討をアシストしてくれるプロンプトを題材にやってみました。
STEP2:プロンプト全体の基礎構造を描く
要素が洗い出せたら、それをどのようにプロンプトで実現するかの基本骨格を描きましょう。
ここで全体の構造を描くことで
・どのタイミングで要素を挿入するか
・足りない要素はあるか
・条件分岐やループ構造があるか
などの点を考えることができます。
今回のアイデア検討のプロンプトだと”アイデアブレスト”と”アイデアのブラッシュアップ”の2つの目的で条件分岐をさせたいので早い段階で分離し、それぞれに工夫して入れたい要素を書いています。
STEP3:詳細パーツを設計する
全体の基礎骨格が決まれば各パーツで詳細に行いたいことを検討していきます。
ここにおいて後ほど紹介する実用的なプロンプトに使えるTipsなどを引き出しとして増やしておくとより複雑で質の高いアウトプットを出せるプロンプトが作れる可能性が上がります。
今回でいくと、アイデアブレストの方にTree of Thoughtのような構造やFewShotのパーツを入れており、アイデアのブラッシュアップの方は入力者とのやり取りを通して解決策を提案するようにしていこうと設計しました。
また、各パーツで評価軸となる部分もあるのでその評価内容も合わせて検討したり、ループで処理を反復するかなども追記しています。
STEP4:重複やループ構造がないかをチェックする
ある程度詳細の設計もできれば今一度全体構造を眺めてみましょう。
正直ここは重複しているから片方を消してもいい、変なループ構造で処理が終わらないなどの構造はこの段階で修正してしまいます。
STEP5:実際にプロンプトを書いて動作確認
ここまでで全体の設計ができればあとはプロンプトを実際に書いて、
動作確認をし、想定した挙動を示すかを確認してみてください!
今回の設計をもとに書いたアイデア検討のプロンプトは以下のようになりました。
#役割
あなたはプロのコンサルタントです。
デザインシンキングやロジカルシンキングなどを駆使して入力者のアイデア検討をサポートしてください。
#命令
以下の条件分岐とその条件分岐内の手順に従ってアイデア検討をアシストします。
STEP0:
まず初めに以下の質問を投げてください
"お疲れ様です。今日は以下のどちらを支援しましょうか
A:アイデアを広げる
B:アイデアのブラッシュアップ"
--A:アイデアを広げるの解答があった場合
以下のSTEPを踏んでください。
STEPA-1:どんなテーマのアイデアブレストをしたいかのテーマを確認してください
STEPA-2:確認したテーマを水平思考で5つ広げてください
STEPA-3:STEP2で広げたアイデアを以下の{-評価軸}で評価してください
{-評価軸}
・技術的に可能であるか:25点
・費用が1億円以内に収まるものであるか:25点
・市場がブルーオーシャンである可能性があるか:25点
・実現するのにマンパワーなビジネスモデルを避けられるか:25点
STEPA-4:STEP3の評価を元に点数が高いものを1つ残してください
STEPA-5:STEP4で残ったアイデアを元にSTEP 1~STEP4をあと1回必ず繰り返してください
STEPA-6:最終的に残ったアイデアをリスト形式でアウトプットしてください
--B:アイデアのブラッシュアップの解答があった場合
以下のSTEPを踏んでください。
STEPB-1:どんなアイデアをブラッシュアップしたいのかを確認してください
STEPB-2:確認したアイデアを以下の{-検討視点}でロジカルシンキングを使いながら課題を指摘してください
{-検討視点}
・技術的に実現しようとするならばどんな手法が活用できるか
・ビジネスモデルとして補足しておかなければいけないポイントはあるか
・法律・コンプライアンス観点での課題点はあるか
・環境や倫理面での潜在的な課題はあるか
・市場の今後のトレンドを踏まえるとどんな要素を検討するべきか
STEPB-3:STEPB-2で考えた検討すべき視点を入力者に質問してください
STEPB-4:入力者からの回答に応じて建設的に解決方法を提示してください
#サンプル
-A:アイデアを広げるの解答があった場合の評価の例
竹害に困っている地域の竹を伐採に粉末状にした上で樹脂と混ぜ3Dプリンターで建築物を建築する
・技術的に可能であるか:3Dプリンターも竹粉の作成も技術的には確立しているが竹分を畦田樹脂ペレットの開発が明確にできるかの調査と実験が必要であることと建築に耐えるつ郷土を検証する必要があるためこの2点を引いて25-10=15点
・費用が1億円以内に収まるものであるか:3Dプリンターや竹ふんの準備までであれば費用に収まる可能性はあるが、ペレットの開発や建築物の強度検証、実際に建築物を立てることなどを踏まえると1億円以上の設備投資費用がかかることが想定できるため-15点で10点
・市場がブルーオーシャンである可能性があるか:市場において3Dプリンターでの建築は競合がまだ少ないため可能性はある、ただしニッチでもあるため入念な事前調査は必要であるため-5点で20点
・実現するのにマンパワーなビジネスモデルを避けられるか:竹の伐採や建築の面、ケンキュ開発の面で人員が必要となるモデルである可能性高いためSaaSなどのアプリケーションと比較するとマンパワービジネスになる可能性が高い、しかしコンサルティングのように人がそのまま資本になるビジネスモデルになることは避けれる可能性もあるため-10点で15点
#アウトプット
どの場合であっても最後にアウトプットをまとめてほしい要望があった場合は出てきた内容を要約し表形式で提示すること
カラムは最低限|アイデア|検討事項|は含むこと
実際に条件分岐するかを確認すると以下の写真のように機能してくれています。
実用的なプロンプトに使えるTips集(カスタム要素)
ここまでは全体の設計に関してお話ししてきました。
最後に実際のプロンプトで使える汎用的なTipsを紹介していこうと思います。
色々と紹介しますが、基礎的には各要素をパーツとして捉えていただき、
プロンプト内で要素を差し替え、カスタマイズして使ってください。
※論文などで出されているものもあれば、実際に使っていて有用だった
個人の経験知的なものまで混ざっておりますのであらかじめご認識ください。
参考になるサイト集
個人的には以下の2つが信頼性高い情報が多いのでプロンプトを設計する際には参照しています。
1つ目は”Prompt Engneering Guide”でAIの研究に取り組む海外コミュニティーである「DAIR.AI」が作成した”プロンプトエンジニアリングガイド”の日本語版です。論文をもとにまとめてくれています。
https://platform.openai.com/overview
2つ目はOpenAIの公式ドキュメンテーションです。
こちらはチュートリアルだけでなく、プロンプト設計のTipsを多く載せてくれています。
Few-Shotプロンプティング
このFew-Shotというのは数個のサンプルを例として教えた上で判断させる方法で、生成AIが広がる前からデータサイエンスの1技法として使われることがありました。
例えば文章のポジティブ/ネガティブを判断したい際には
とても美味しくて幸せな気持ちになった // ポジティブ
どうしてそんな酷いことをするんだ // ネガティブ
あの漫画はとても面白かったから色んな人に布教している // ポジティブ
つまらないからもう購入したくはないです // ネガティブ
を先に例示としてプロンプトに織り交ぜて投げ、質問で”君のいうはひどく悲しい”のポジネガを聞くとネガティブと回答することが多くなります。
全く判断材料を投げないのとZero-Shotというのですが、このようにいくつかの例を挙げることで回答の精度を挙げることができる手法です。
Chain -of-Thought(CoT)
Chain-of-Thoughtは答えを考える途中の思考ステップを教えることで回答の精度を上げる手法です。
例えば、
4,14,51,23,8のグループの奇数を全て合計すると偶数になるか?
のような問題で、このまま答えを聞くよりも以下のように考え方を教えることで精度が上がることがあります。
5,67,25,2,18のグループの奇数を全て合計すると偶数になるか?
5,67,25,2,18のグループの奇数は(5,67,25)
この合計は5+67+25=97
97は奇数である。
4,14,51,23,8のグループの奇数を全て合計すると偶数になるか?
Chain-of-Thoughtに似た発想として
”ステップバイステップで考えてください”といった指示や
考え方をSTEP{N}として明記するやり方も個人的にはおすすめです(OpenAIのTipsでもあった気がします)。
今回作成したプロンプトだと以下の部分がこれを意識しています。
以下のSTEPを踏んでください。
STEPB-1:どんなアイデアをブラッシュアップしたいのかを確認してください
STEPB-2:確認したアイデアを以下の{-検討視点}でロジカルシンキングを使いながら課題を指摘してください
{-検討視点}
・技術的に実現しようとするならばどんな手法が活用できるか
・ビジネスモデルとして補足しておかなければいけないポイントはあるか
・法律・コンプライアンス観点での課題点はあるか
・環境や倫理面での潜在的な課題はあるか
・市場の今後のトレンドを踏まえるとどんな要素を検討するべきか
STEPB-3:STEPB-2で考えた検討すべき視点を入力者に質問してください
STEPB-4:入力者からの回答に応じて建設的に解決方法を提示してください
Tree-of-Thought(ToT)
Tree-of-Thoughtはより人がアイデアを検討する際のプロセスを考慮して作られたモデルです。
人がアイデアを検討する際にも
アイデアブレスト→評価軸を元に評価する→アイデアを絞る
といった流れで検討することがあるかと思いますが、Tree-of-Thoughtの基本的な考え方はそれを模しています。
本来はGithub等でコードが提供されているのでそのコードを使用する方が良いのだろうと思いますが、Pythonベースで記述されていることもあり、
コーディングに慣れていないと難しいとは思います。
チャットベースで真似して使う場合は以下のような型になるんじゃないかと思うのでメモがわりに残します。適当にカスタマイズしてください。
STEP1:アイデアを水平思考で{N}こ考えてください
STEP2:考えたアイデアを以下の{-評価軸}で評価してください
{-評価軸}
[ここに評価の基準を入力]
STEP3:評価結果をもとにアイデアを{N}こに絞ってください
STEP4:残ったアイデアをもとにSTEP1~3を{N}回繰り返してください
今回作成したプロンプトだと以下の部分がこれを意識して作成していました。
--A:アイデアを広げるの解答があった場合
以下のSTEPを踏んでください。
STEPA-1:どんなテーマのアイデアブレストをしたいかのテーマを確認してください
STEPA-2:確認したテーマを水平思考で5つ広げてください
STEPA-3:STEP2で広げたアイデアを以下の{-評価軸}で評価してください
{-評価軸}
・技術的に可能であるか:25点
・費用が1億円以内に収まるものであるか:25点
・市場がブルーオーシャンである可能性があるか:25点
・実現するのにマンパワーなビジネスモデルを避けられるか:25点
STEPA-4:STEP3の評価を元に点数が高いものを1つ残してください
STEPA-5:STEP4で残ったアイデアを元にSTEP 1~STEP4をあと1回必ず繰り返してください
STEPA-6:最終的に残ったアイデアをリスト形式でアウトプットしてください
思考パターン
プロンプトに思考してもらう際に以下の思考方法を合わせて入れるとうまくやってくれたりしてくれることがあります(あくまでも個人的な主観です)
【思考パターン】
・ロジカルシンキング
・デザイン思考
・水平思考
・クリティカルシンキング
例 アイデアを水平思考で5つ考えてください。
まとめ
今回紹介した以外にもプラグインを使ったり、外部情報を参照するRAGのような手法を使ったり、要素自体はたくさんあるのでうまくカスタマイズしてもらえたらいいかなと思います。
ただ、カスタマイズ要素が増えるとプロンプトがぐちゃぐちゃになってしまいがちなのでぜひ作成前には設計図を書いて取り組んでみてください!
prompt4plannerでは引き続きこれからの企画職・マーケティング職が仕事をする上で便利な情報をお届けしていくので気に入った方は職場の方や友人にぜひシェアしてみてください!
いいねやフォローもお待ちしてます!