プロンプトデザイン その1「役割を与える」

ChatGPTへの指示の出し方を学び、どのような指示が良いか何が課題となるのかを抑えます。その上で、端的な指示が可能となる「役割を与える」方法を学んでいきます。

公開日:2023/03/19 更新日:2023/03/21

目次

  • はじめてのプロンプト
  • プロンプトを改良してみる
  • ChatGPTのメンタルモデル
  • 役割を与えてみる
  • まとめ

はじめてのプロンプト

プロンプトとは、コンピューターに対して指示を出すテキストのことで、人工知能に与える文章のことを指します。ChatGPTでは、与えられた文章をもとにもっともらしい応答が生成されます。
今回はテーマとして「献立の考案」を選んでみようと思います。
早速サンプルのプロンプトを入れてみましょう。

今晩の献立を考えてください。


素敵な返答が得られましたが、皆さんはいかがでしたでしょうか。ChatGPTは毎回異なる返答をしますので、この文章と皆さんの画面を照らし合わせてみてください。

このあと筆者はグリルチキンとローストポテトを選び再び以下のような返答をもらいました。

これでめでたしではあるのですが、もしかしたら違和感や不便さを抱いた方がいらっしゃるかもしれません。
さまざまなものが予想できますが、おそらく大まかに以下の二つになるでしょうか。

  • 提案された献立がどことなくグローバル
  • レシピも一緒に提案してほしい


少なくとも筆者が望んでいたのは「献立」ですので、もう少し日本感あるものを想定していました。煮物や野菜炒であったりです。一方で 出力された献立はグリル・モッツァレラ、タコスなどどこか海外を感じさせます。
また、ChatGPTは料理ができず実際に手を動かすのは我々です。献立と一緒にレシピも提案してくれたら気が利くのに…とも思います。

したがって、次の項でこの課題をどうしたら解決できるか考えていきましょう。

プロンプトを改良してみる

手っ取り早い改良方法は以下となります。

今晩の献立を考えてください。
日本でよく食べられているものが良いです。

すると以下のように我々に馴染みのある提案をしてくれました。どれも美味しそうです。

しかし上記の出力結果にはレシピが含まれていません。したがってもう少し改良を加えようと思います。

今晩の献立を考えてください。
日本で良く食べられているものが良いです。
レシピも追加で教えてください。

このように指示を追加することにより思った通りの結果が得られました。

ChatGPTのメンタルモデル

ここまでよしなにやってくれるとさらに様々なことを頼みたくなってきます。

  • 栄養価が高いもの
  • 素材は安いもの
  • 時間がかからないもの

なども要望に加えて最高のレシピを提案してほしいです。

ここで具体的なプロンプトをたくさんストックしておくのも有効ですが、要望が増えるにつれ複雑化することもまた事実です。便利なChatGPTですが、いつのまにか要望を考えることそのものが負担になってきます。
私たちの目的は「負担を最小限にし最高の献立を考える」ことのはずです。
これは何も献立に限ったことではなく、他の日常的な作業であったり、ビジネスでも私たちは負担を最小限に最大の成果が欲しています。

ですので、この辺りで簡単なChatGPTの上手な使い方とその概念を掴んでおくと良いかもしれません。
ある程度内部のことを知っていると応用が効きやすくなるためです。
なお、少々原理的な話になりますので難しい感じた方はすぐ場次の項に進んでください。

それでは早速説明を始めていきます。
前提としては、私たちは以下のようにChatGPTに要望、依頼を入力し出力を得ています。

そしてこのChatGPTの中身ですが、内部でもまたさたくさんの知識や考え方・処理が結びつき入れ子のような構造が存在します。

この処理回路は億を越える膨大な数が存在するのですが、今回は簡単に上記の図にしました。

この図と先ほどの献立の依頼を照らし合わせてみましょう。
最初のお願いは「今晩の献立を考えてください」でした。どのようなことが起こっていたのか考察してみます。

ChatGPTはいつもよく使う考え方、世界中の情報で学んでいる正しいであろう情報を素直に出力します。なのでただ献立を聞くだけだと、一部の使いやすい回路を使って物事を考える傾向にあります。よく見聞きしたレシピ(ローストチキンなど)を提示するというわけです。

次に私たちは「日本でよく食べられている」といった情報を追加しました。これによって「日本のなのだな」と意識が変わりと出力もまた変更されました。

最後に「レシピを追加で教えて」とお願いしたことによって、日本の料理を反映しつつ「献立とレシピ」が得られたというわけです。


これである程度の原理の説明は終了です。つまり、このように様々な依頼を追加していけば私たちの望む出力が得られるということになります。
一方で、この指示を一つ一つ与えるのは大変です。栄養価、素材、時間など考慮すべき点をあげればきりがありません。

さいわいにも、この解決策は現実世界から着想を得ることができます。
私たちは「暗黙の願いや指示」をよしなにやってもらうために、よく専門家に依頼することがあります。

役割を与えてみる

専門家はさまざまな知識と考え方をもとに行動しています。例えば筆者は主にプログラミングをなりわいとしていますが、実行速度・コードの見やすさ・不具合の無さ・拡張性・保守性などさまざまなことに注意して仕事に取り組んでいます。

つまり、「ChatGPTに役割を与えること」は「大量な気をつけるべきことや指示を一括で与える作業」と同じ意味があるということです。

これにより、「全世界的に正しそうなこと」から一転し「その専門家が正しいと思いそうなこと」へと出力が切り替わります。

さっそく試してみましょう。

日本でレシピ本を出版している料理研究家になり切ってください。
今晩の献立を考えてください。

純粋な料理研究家ですと高い素材が使われる可能性がありますので、レシピ本を出しているとつけてみました。ここは「家庭料理研究科」のような言葉を使っても良いかもしれません。

結果はこちらです。

確認してみると、味噌汁を作る際にだし汁を使っており「美味しさを求める」傾向が見て取れます。みず菜は見た目の観点から重要なのでしょう。
ポテトサラダにも一工夫あり、完全なマッシュにはしないのですね。

他にも「栄養士」の役割を与えると栄養に気をつかった出力をしてくれます。
「日本の超高級料亭の板前」になりきってもらうのも(実用性があるかわかりませんが)おもしろいです。うに、いくら、あわび、ふぐ、松茸などを連発してきます。

まとめ

まとめると以下になります。

  • ChatGPTは内部で無数の処理回路を持つ
  • 指示の数や種類に応じて最適な回路の選択と処理が行われ、文章が作成される
  • ChatGPTに役割を与える」ことは「たくさんの指示を一括で与えること」と同じである


少々長い文章になってしまいましたが、これを図にすると以下のような形になります。

プロンプトの構成としては

  • 役割設定
  • 依頼


の二つが大枠になるでしょう。

この役割をどう与えるかがChatGPT、ひいては大規模言語モデルを扱う上での鍵となります。現実世界に置き換えれば「どのような人材を抜擢し割り当てるか」ということです。

スキルだけではなく、性格もまた重要な要素です。対応する問題によってはアイディアとロジックどちらが求められるかは大きく異なるためです。
INOUTで皆さんの投稿を参考にしつつ、あなたの目的に応じた役割設定を探してみてください。