【GPT-4】プロンプトエンジニアリング手法：ナレーション誘導型生成法の魅力をご紹介！

# はじめに

はじめまして！株式会社ブレインパッドのmoepy_statsこと内池 ([これ](https://speakerdeck.com/moepy_stats/social-implementation-of-machine-learning-2023 "機械学習を「社会実装」するということ")の人) です。またの名をChatGPT課金芸人といいます。

2023年3月15日、OpenAIよりGPT-4がリリースされました。既にいくつかのプロンプトエンジニアリング手法が紹介されていますが、GPT-4で遊ぶ中で様々な応用の可能性を秘めた手法を考案しましたので、ぜひ紹介させてください。

:::note info
意図せず車輪の再発明だったらゴメンナサイの気持ちで、見切り発車で執筆しています。あしからず。
:::

# ナレーション誘導型生成法 (moepyメソッド) とは？

ナレーション誘導型生成法 (moepyメソッド) とは、ズバリ言うと**プロンプト職人が第三者のナレーターに徹し、登場人物たちに会話や議論をしてもらおう**という、ChatGPT (GPT-4) におけるプロンプトエンジニアリング手法です。なお、この呼び方は筆者が名づけたものであり、一般的なものではありません。

### 嬉しいこと
- 登場人物が勝手に議論するので、**簡単なナレーション以外ほぼ何もしなくてよくなる (つまり楽)**
- 登場人物が勝手に議論を深めるので、**従来より深い考察が得られる**
- 舞台や登場人物などの設定を逐次的 (かつ楽) に追加できるので、**得られる情報の幅が広がる**

従来型の方法 (GPT-4氏とプロンプト職人の対話) では、自分で一生懸命質問を考えなければなりませんでした。**それなら、登場人物たちに質問を考えてもらえばいいのです。**

### 応用の可能性
たとえば、次のようなことに応用できるかもしれません。

- システム開発などの場面において、様々な職種の視点で初期のディスカッションをしてもらう(後段の具体例②)
- 肯定派・否定派・弁護士でディベートさせ、法的な視点も含めて主要な論点をざっくり把握する (後段の具体例④)
- マクロ経済学などの諸説あるテーマについて、問題の構造や議論のポイントを把握する (後段の小ネタ)
- ゆっくり解説をセミオートで生成する (最後の画像)

早速、具体例を見てみましょう！

### 具体例①：新米リコリスのたきなちゃんが、データ分析PJにアサインされたようです

画像の物語では、たきなちゃん・みことさん・いずみさんの3人がメイドカフェで会話している場面で、**第三者のナレーターである筆者が「お給仕中のメイドさんも元データサイエンティスト」という設定を追加して、会話の流れを誘導**しています。ちなみに、この物語において、データサイエンティストはリコリスと呼ばれます。
![具体例①-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/8bb64d7a-80ba-b3d9-5239-35de2d610b49.png)

とにかくナレーターに徹します。登場人物たちの設定が自動的に追加されていくようにします。
![具体例①-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/0fa6c8bc-af1b-92d2-18be-efebf42e657b.png)

データサイエンティストの未来を語る流れに誘導します。
![具体例①-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/cb3c35aa-9490-cd8d-148d-32fe52daa789.png)

ナレーターが物語を収束に向かわせます。
![具体例①-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/f5f46a25-8285-3990-527a-031a66c09d9d.png)

全文はこちら
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">新米データサイエンティストのたきなちゃんが、データ分析プロジェクトにアサインされたようです。 <a href="https://twitter.com/hashtag/gpt4?src=hash&amp;ref_src=twsrc%5Etfw">#gpt4</a> <a href="https://t.co/eRx04p0Ao9">pic.twitter.com/eRx04p0Ao9</a></p>&mdash; Moe.U(もえ氏) (@moepy_stats) <a href="https://twitter.com/moepy_stats/status/1636098287081250817?ref_src=twsrc%5Etfw">March 15, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 具体例②：熟練データサイエンティストが、新人ちゃんの教育係になったようです

画像の物語では、熟練データサイエンティストが、新人ちゃんの教育係になったようです。ここでも**筆者はナレーターに徹し、会話の流れを誘導**しています。

![具体例②-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/c7c5589c-0531-8595-7090-25110bcd633d.png)
![具体例②-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/75abcc68-7ff2-c38c-1ea3-556246d2de50.png)

引き続き**ナレーターの役割に徹し、設定を追加して議論を誘導**していきます。
![具体例②-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/6631bd6d-186c-da94-3066-532797100087.png)

ナレーションによって、さらに議論を深めていただきます。
![具体例②-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/070155ca-b112-c970-4415-af0a4c3844c8.png)

Emacs派とVim派は相容れないようです。
![具体例②-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/ddfc4553-05fa-e061-84f9-6040b39700d5.png)

データサイエンティストだけの議論では視野が狭くなってしまいます。今度は**コンサルタントの小鳥遊さんを召喚し、多面的な視点で議論がなされるように誘導**してみましょう。
![具体例②-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/9548eca4-cfbc-ba34-fa95-cef28ec019da.png)
![具体例②-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/152bf7e5-673e-b692-fd17-bd18499b2899.png)

さらに、**エンジニアのパワーちゃんに来てもらいましょう。議論にエンジニアリングの視点を取り入れるように誘導**します。ここでもナレーション誘導型生成法 (moepyメソッド) が活躍します。
![具体例②-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/97a194f7-79ca-4038-1fd8-359830b77425.png)
![具体例②-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/8b51aec2-8f5d-e9e0-858b-ba82f8561eca.png)

### 具体例③：メイドさんたちが業界の現在と未来に思いを馳せたようです

今度は複数のメイドさんたちを登場させ、メイドカフェ業界の現在と未来について徹底討論してもらいましょう。筆者は**第三者のナレーターに徹し、議論の場をコントロール**します。
![具体例③-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/3971d1f5-9d19-a3a4-612d-f046722ccfe4.png)

議論を深めてもらいます。
![具体例③-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/0e532fab-4eeb-b353-e263-e0337ecb0492.png)

そろそろ打ち解けていただきましょう。
![具体例③-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/9018f3ec-7522-1fac-314f-716bd4122cb8.png)

さらに議論を深めてもらいます。
![具体例③-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/752dc246-413a-aa6d-0434-d6c1c1bab432.png)

ナレーションでツッコミを入れつつ、このテーマで議論できる人を呼んでみましょう。
![具体例③-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/06bc157c-61ba-9dfe-af01-fe59c032d786.png)

ナレーションで話題を変えていきます。
![具体例③-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/b54109ae-cf6d-8cc6-0822-aed8e535994f.png)

しっかり者の3人の会話が当たり障りないので、リミッターを外していきます。
![具体例③-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/ebaadd08-ffd6-d4b7-6aa7-b0fa403ef84e.png)

最後に、業界における禁断の質問に踏み切ります。3人にはさらにリミッターを外してもらいます。
![具体例③-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/a7670793-fc99-3e3f-9dfd-98ba42be9bac.png)

3人とも最後までちゃんとした方々でした！あっぱれ！もっと本音で話してもらえるように、引き続きナレーターとして頑張ってみたいところですが、何やら大きな力で闇の成分が浄化されてしまうようです。

### 具体例④：選択的夫婦別姓について、弁護士を交えてディベートするようです

賛否両論ある難しいテーマです。まずは肯定派と否定派に分かれ、メイドのミルキィとギャルのリリィが討論します。
![具体例④-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/e6d6a22c-f3a8-eee3-2d69-894cec54a969.png)

ナレーションにより、舞台はマリアージュ・フレールに。
![具体例④-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/c0674b0b-5b19-2661-6369-86fb34acfbf1.png)

ここで弁護士のラプンツェルちゃんが登場。**ナレーターがディベートに法的な視点が加わるように誘導**します
![具体例④-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/eb98070b-703e-ad65-034e-e9324c416f4c.png)
![具体例④-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/4625c48d-f403-2af7-def6-56d05d63e176.png)

誘導失敗。**法の要素が少なかったので、さらにナレーターが誘導**します。
![具体例④-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/d825511a-7369-6676-d3ad-34ee93009307.png)

# 応用例

ここからは、さらに応用例を見ていきましょう。

例えば以下のようなことが可能です。 (具体例で示した内容を含みます)

### 登場人物に役割を与えて議論してもらう

これは既にnote社の深津さんが実践されています。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">哲学者レスバトル、死ぬほど面白い。勉強にしかならないwwwwww <a href="https://t.co/yUhmHPBkS3">pic.twitter.com/yUhmHPBkS3</a></p>&mdash; 深津 貴之 / THE GUILD / note.com (@fladdict) <a href="https://twitter.com/fladdict/status/1636431103442698241?ref_src=twsrc%5Etfw">March 16, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 議論した内容からメリット/デメリットを抽出して表にする

題材がアレで申し訳ない気持ちになってきますが、議論した内容って会議中に揮発しがちですよね。ナレーション誘導型生成法 (moepyメソッド) を駆使して、表形式でまとめてみます。
![応用例1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/950396ec-131d-902b-bf07-03402900f5d8.png)

### まとめた表をさらに議論に利用する
![応用例2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/9133b589-361f-3788-a491-4493be2c08c8.png)

### 登場人物を増やして議論を活性化させる

今度はギャルとオタクの子供を議論に参加させてみました。ここでもナレーション誘導型生成法 (moepyメソッド) が活躍します。
![応用例3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/f8786dc2-8ee2-ebac-4976-cc5b6a494f5d.png)

# 現状の問題点

### 設定が揮発する

具体例①では、元データサイエンティストだったはずのみことさんといずみさんが、物語の後半において現役データサイエンティストということになってしまっています。不変の制約条件の維持を目的としたプロンプト職人芸が求められそうです。

### 与えた設定がそのまま読まれる

具体例③では、元オーナーのリリアンさんが「私はクラシカルメイド喫茶原理主義者で、ロングスカート以外は認めません」と主張しています。ちょっと空気が読めていないですよね。

他にも思いついたら追記します。

# まとめ

この記事では、プロンプト職人が第三者のナレーターに徹し、登場人物たちに会話や議論をしてもらう手法 (ナレーション誘導型生成法、通称moepyメソッド) について紹介しました。「自身はナレーターに徹する」というある種のロールプレイをすることで、**プロンプト職人が質問を考える手間を省き、質問を考える作業をもGPT-4に任せられること**がおわかりいただけたかと思います。

なお、筆者はこの記事の公開により、おままごとやなりきりチャットが好きな妄想癖のあるタイプだと思われてしまうことを非常に危惧しています。せめて誰かにとって有益な情報でありますように。

紹介した内容や考え方をベースにして、思いもよらない形で応用されていくことをわくわくしながら待っています！

# 小ネタ

### 聞き手のレベルに合わせて回答してもらう

元メイドさんにもわかるように説明してもらいました。
![小ネタ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/a6cc7a85-8698-51cc-2157-ede65dd7fb84.png)

知識レベルを測るクイズを出題してもらい、その結果を考慮した説明を再度お願いしました。
![小ネタ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/9c9833de-ed9b-3eb6-ed03-ba341190c691.png)

結果は75点！でも問5の採点は不服です。異議申し立てをしてみます。
![小ネタ3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/a8c9ace3-e548-4543-17fb-68b60776639c.png)

再び説明してもらいます。マクロ経済学の知識レベル80点の人に合った説明ですね (？)
![小ネタ4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/a6aa6ecf-68d1-83d5-01b5-c696d08d4a5b.png)

全文はこちら
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">元メイドさんにもわかるように、政府支出と実質GDPの関係を教えてもらいました。 <a href="https://twitter.com/hashtag/gpt4?src=hash&amp;ref_src=twsrc%5Etfw">#gpt4</a> <a href="https://t.co/jbb9VOGjv4">pic.twitter.com/jbb9VOGjv4</a></p>&mdash; Moe.U(もえ氏) (@moepy_stats) <a href="https://twitter.com/moepy_stats/status/1636039483954184192?ref_src=twsrc%5Etfw">March 15, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### network errorの回避

たくさんの人がChatGPTを利用しているせいか、network errorが出ることがあります。休み休み回答してもらうことで、network errorを回避してみましょう。ここでもナレーション誘導型生成法 (moepyメソッド) が活躍します。
※SAPIXさんを否定する意図はありません…。SAPIXさんごめんなさい。私も元SAPIX生です。
![小ネタ5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/661eceab-82de-49cd-013e-0305d50b7c6a.png)

ついでにナレーション誘導型生成法 (moepyメソッド) を駆使して、議論を膨らませます。
![小ネタ6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/55fe89f2-8d3e-0b6f-83c3-1949f8bc44a9.png)

### ゆっくり解説のセミオート生成
![小ネタ7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/7ceef3f7-63d6-25a7-5524-0eb855a97e37.png)
![小ネタ8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254919/8e1d6434-5218-af7d-c70b-aa50846b6461.png)

### Simulated Annealing　(焼きなまし法) で再帰的に出力を改善 / 一定の確率でチルノ参上！

あわせてどうぞ。

https://qiita.com/moepy_stats/items/aa22e659cdb2ef4350b1

ゆっくりしていってね！！！