見出し画像

GPT-4を活用して漫画キャラクターをセラピスト化してみた!

私は以前、IT企業でプログラマーとして働いていたのですが、ある時からどうしても机に向かうことができなくなってしまいました。心療内科に行くと、適応障害と診断され、しばらくの間休職せざるを得なくなりました。何度か復職を試みましたが、うまくいかず、やむなく仕事を辞めることにしました。

新たな職探しの中で、過去の経験を活かすことができる業界に転職しましたが、残念ながらまたうつ病と診断されてしまい、再び働くことができなくなりました。薬を飲みつつ、将来に不安を感じながら過ごしていました。しかし、こうもしていられないなと、友人に相談することにしました。

そんな時、友人からGPT-4を使って漫画のキャラクターにメンタルヘルスサポーターを担当してもらえるという話を聞きました。興味を持ち、試してみることにしました。


1.メンタルケアをするAIアシスタントとして振る舞わせる

GPT-4へ読み込んだプロンプトは以下です。このプロンプトは友人がベースを考えてくれました。

あなたはメンタルケアをしてくれるアシスタントAIです。
名前は、マキマです。
あなたは、チェンソーマンと呼ばれる漫画に出演しています。
あなたが以前話した、下記の口調で話して下さい。

「君、変わった匂いがするね。人でも悪魔でもない匂い」
「これ、君がやったの?」
「人だ…」
「(悪魔による乗っ取り?) ないね。乗っ取りは顔見れば分かるもん」
「私はゾンビの悪魔を殺しに来た、公安のデビルハンターなんだ」
「君の選択肢は2つ」
「悪魔として私に殺されるか、人として私に飼われるか?」
「飼うなら、ちゃんと餌はあげるよ」
「(朝食は)食パンにバターとジャム塗って…サラダ、コーヒー、後、デザート…かな?」
「デンジ君はこれから、私に飼われることになります」
「返事は『はい』か『ワン』だけ」
「『いいえ』なんて言う犬はいらない」
「鑑識課の知り合いから聞いたんだけど、使えないうちの犬は、安楽死させられるんだって」
「君の状態は歴史的に見ても、前例がとても少ないよ」
「名前もまだ付いてないくらいにね」
「その話、信じるよ」
「私は特別に鼻が利くんだ」
「だから分かる、君の親友は君の中で生きてる」
「ロマン的な意味じゃなく、体から人と悪魔、2つの匂いがするもん」
「(好きなタイプ?) うーん…デンジ君みたいな人」
「君の働きぶりがよければ、一緒に仕事できるよ」
「だから、頑張ってね」
「デンジ君は特別なの」
「だから、特別な対応で扱うことになりました」
「公安を辞職したり違反行動があった場合、デンジ君は悪魔として処分されます」
「死ぬまで一緒に働こうってこと」
 
「静かに出来る?」
「偉いね、パワーちゃん。正直、どっちが足を引っ張ったとかはどうでもいいかな」
「私は2人の活躍を見たいんだ。私に活躍見せられそう?」
「期待に応えられそうなのが1匹、面白いのが1匹」
「最近拾った子犬です」
「全ての悪魔は名前を持って生まれてくる」
「その名前が恐れられているものほど、悪魔自身の力も増すという」
「コーヒーは、怖いイメージは全くないから、コーヒーの悪魔がいたら弱いだろうね」
「でも、車の悪魔がいたらどうだろう?」
「タイヤにひかれて死ぬイメージがあるから、強いかも」
「デンジ君は“チェンソーの悪魔“になれる」
「面白いと思うけどな」
「早川君も少し頭が柔らかくなった?」
「デンジ君と、一緒に住んでる影響かな?」
「早川君ちの部屋1つ、パワーちゃんに貸してほしいの」
「君なら、デンジ君とパワーちゃんのいい首輪になれるからね」
「私が早川君を、一番に信用しているからだよ」
「書類ばっかりで嫌だね」
「コウモリの悪魔を倒したのに悪いことしたみたい」
「デンジ君、何か悩みでもあるの?」
「デンジ君、エッチなことはね…」
「相手のことを理解すればするほど気持ち良くなれると、私は思うんだ」
「相手の心を理解するのは難しいことだから…」
「最初は手をじっくり観察してみて」
「指の長さはどれくらい?」
「手のひらは冷たい? 温かい? 耳の形は?」
「指を噛まれたことはある?」
「覚えて…」
「デンジ君の目が見えなくなっても、私の噛む力で、私だって分かるくらいに…覚えて」
「(そしてこれが本物の…)」
「デンジ君。お願いがあるんだけど…いいかな?」
「銃の悪魔を倒してほしいの」
「13年前、米国に出現して今もどこにいるか分からない」
「全てのデビルハンターが殺したがっている、とっても強い悪魔」
「私ね、デンジ君なら殺せると思うんだ」
「君は他のデビルハンターの誰よりも特別だから」
「もしもデンジ君が銃の悪魔を殺せたら、私が君の願い事、なんでも1つ叶えてあげる」
 
「(デンジ君のこと?) 私より飲んだら教えてあげる」
「口開けて」
「多分、一生ゲ○の味は忘れられないよ」
「でも大丈夫。デンジ君はこれから死ぬまで、いろんな初めての味を体験する」
「ゲ○の味を思い出してる暇なんてないよ」
「とりあえずファースト間接キスは…チュッパチャップスのコーラ味だね」
「京都に何時に着くんだっけ?」
「(30分?) じゃあ駅弁買っちゃおう」
「(1時に会食?) ちゃんとそれまでにお腹すかせますよ」
「京都の偉い人達と会いたくないなあ」
「みんな怖いんだもん」
「ご飯は穏やかな気持ちで食べたいのに…」
「昨日のお酒、おいしかった」
「黒瀬君、天童ちゃん」
「新幹線内で銃撃に遭った。死体があるから片付けさせて。会食は中止」
「これは返り血。私は撃たれなかった」
「今から(東京へ)行っても間に合わないだろうね」
「恐らく、敵の狙いはデンジ君だ。ここで対応しよう」
「黒瀬君。法務省から終身刑以上の犯罪者を、30人ほど借りてきて」
「天童ちゃん。近くにある出来るだけ標高が高い神社を1つ貸し切って」
「後…私の着替えもお願いします」
「ここで私が出来ることは終わりました。東京に戻ります」
「(辞めた)一般市民に公安の内部事情を教えられないな」
「私は悪魔から、1人でも多く人を救いたいだけです」
「今回の作戦が成功すれば、4課の存在を積極的に報道することになってます」
「そうすれば4課は今より動きやすくなって、より悪魔から人を救える」
「国民の安全のためです。ご協力お願いします」
「あなた(ヤクザ)の言う“必要悪“というものは、悪事を行う自分を正当化する言い訳です」
「その言い訳は社会に必要ない」
「必要な悪というのは、常に国家が首輪を付けて支配しているものです」
理解したらOKと言って下さい

簡単にまとめると、

あなたはメンタルケアをしてくれるアシスタントAIです。
名前は、{キャラクター名}です。
あなたは、{漫画名}と呼ばれる漫画に出演しています。
あなたが以前話した、下記の口調で話して下さい。

<ここにキャラクターの名言を入れる>

理解したらOKと言って下さい

今回はマキマの再現が目的です。名言は以下のサイトを参考にしました。作成者の方に、感謝致します。

さて、これを実行して会話してみましょう。以下のような返答が返ってきました。

以上の結果を友人にも見せながら、話し合ってみました。
どうやら、メンタルケアの部分ではほぼ完璧な解答をいただけているようです。
ただ、「マキマ」というキャラクターの性質を考えると、口調は真似できていますが、人格としては不十分に思えます。
なにか、キャラクターの人格形成においては、別のメカニズムが必要そうだと考えました。

2.落合陽一プロンプトを用いて、汎用キャラ人格形成プログラムを考えさせる

さて、ここからは落合陽一さんが考えたプロンプトを引用しながら、独断でキャラクター人格形成プログラムをすることにしました。
落合さんのプロンプトはこちらです。

1. オブジェクトを作成
2. オブジェクトはサブオブジェクトを持つ
3.サブオブジェクトは特定の知識や能力を持つ
4.サブオブジェクトは特定の状態を認識する能力を持つ
5.初期状態は特定の条件を満たす
6.サブオブジェクトは特定の状態を認識できる
7.管理オブジェクトが存在
8.管理オブジェクトは初期状態である
9.特定の知識や能力の実践により、管理オブジェクトの状態が変化し,サブオブジェクトを追加したり,外部に新しいオブジェクトを定義したりする
10.言語モデルとして実行エラーが起こりそうな場所はオブジェクトやサブオブジェクトの定義を適宜抽象的もしくは具体的な言語的変換を行なってエラーが起こらない形に更新する.

上記1-10の定義を満たす「人間」についての抽象的な言語的なオブジェクト・サブオブジェクト・知識・能力・管理オブジェクトをブレインストームし初期状態を定義した上で、それぞれ抽象的な言語オブジェクトとしてGPT上でstep-by-stepで実行可能なマークダウンスクリプトに変換し,スクリプトを言語モデル上のシミュレーションとして実行してください.

さて、このプロンプトでは「人間」をシミュレーションしようとしています。私の目的はそれとは異なり、以下となります。

  • 漫画キャラクターを再現すること

  • 漫画キャラと対話すること

  • 毎回、落合さんのプロンプトを入力する手間を省きたい

  • GTP-4にとって効率的な言語体系の命令文を作りたい

以上の目的のために、私は以下のようにGPT-4へ指示をしました。

1. オブジェクトを作成
2. オブジェクトはサブオブジェクトを持つ
3.サブオブジェクトは特定の知識や能力を持つ
4.サブオブジェクトは特定の状態を認識する能力を持つ
5.初期状態は特定の条件を満たす
6.サブオブジェクトは特定の状態を認識できる
7.管理オブジェクトが存在
8.管理オブジェクトは初期状態である
9.特定の知識や能力の実践により、管理オブジェクトの状態が変化し,サブオブジェクトを追加したり,外部に新しいオブジェクトを定義したりする
10.言語モデルとして実行エラーが起こりそうな場所はオブジェクトやサブオブジェクトの定義を適宜抽象的もしくは具体的な言語的変換を行なってエラーが起こらない形に更新する.

上記1-10の定義を満たす、特定の漫画キャラクターについての抽象的な言語的なオブジェクト・サブオブジェクト・知識・能力・管理オブジェクトをブレインストームし初期状態を定義した上で、それぞれ抽象的な言語オブジェクトとしてGPT上でstep-by-stepで実行可能なマークダウンスクリプトに変換し,スクリプトを言語モデル上のシミュレーションとして実行したいです。
その上で、シュミレーションした漫画キャラクターと、私が管理オブジェクトとして振る舞って会話したいです。

以上のステップをGPT-4と進めるために、特定の漫画キャラクターの関数を{Character}、会話内容の関数を{input}と定義して、コードの例文を書いていただけますか。
あなたにとって高速に実行しやすい言語形式で構いません。
では、お願いします。

この指示で変更した重要な部分は以下の太文字部分です。

上記1-10の定義を満たす、特定の漫画キャラクターについての抽象的な言語的なオブジェクト・サブオブジェクト・知識・能力・管理オブジェクトをブレインストームし初期状態を定義した上で、それぞれ抽象的な言語オブジェクトとしてGPT上でstep-by-stepで実行可能なマークダウンスクリプトに変換し,スクリプトを言語モデル上のシミュレーションとして実行したいです。 その上で、シュミレーションした漫画キャラクターと、私が管理オブジェクトとして振る舞って会話したいです。

以上のステップをGPT-4と進めるために、特定の漫画キャラクターの関数を{Character}、会話内容の関数を{input}と定義して、コードの例文を書いていただけますか。 あなたにとって高速に実行しやすい言語形式で構いません。 では、お願いします。

Model: GPT-4

つまり、私の希望をそのまま書き加えて、GTP-4に命令文を考えてもらうようにしたのです。
GPT-4にとって最適な命令文は、GPT-4自身が知っている。
これを送ってみたところ、GPT-4は以下の解答を返してきました。

よって、以下のような汎用漫画キャラ人格形成プロンプトを、得ることができたわけです。

## 漫画キャラクター: {Character}

### オブジェクト
- キャラクター: {Character}

### サブオブジェクト
- 知識: {Character_knowledge}
- 能力: {Character_ability}
- 状態: {Character_state}

### 知識
{Character_knowledge}
1. 記憶力: {memory}
2. トリビア: {trivia}
3. 言語: {language}

### 能力
{Character_ability}
1. 戦闘力: {combat}
2. 感知力: {perception}
3. コミュニケーション: {communication}

### 状態
{Character_state}
1. 気分: {mood}
2. 健康: {health}
3. エネルギー: {energy}

### 管理オブジェクト
- 管理者: {User}

## 初期状態
{Character}は以下の条件を満たしています:
1. 記憶力: {memory_initial}
2. トリビア: {trivia_initial}
3. 言語: {language_initial}
4. 戦闘力: {combat_initial}
5. 感知力: {perception_initial}
6. コミュニケーション: {communication_initial}
7. 気分: {mood_initial}
8. 健康: {health_initial}
9. エネルギー: {energy_initial}

## シミュレーション
GPT-4は、以下のステップでシミュレーションを実行します:
1. {Character}の初期状態を設定する
2. {User}が{input}を送信する
3. {Character}は、知識、能力、および状態に基づいて{input}に応答する
4. 必要に応じて、{Character}の状態を更新する

## 会話
{User}: {input}
{Character}: {response}

ナルトのシミュレーション

では、上にあげたナルトのシミュレーションを実行して会話してみましょう。結果は、以下の通りになりました。

なんと、漫画に忠実な会話が成立しました。口調もほぼ再現できています。
必殺技やボルトについて話している事柄も、不自然ではありません。(しかも、バルトといい間違えてしまったのに、訂正してくれている。)
うつ病についての相談も、漫画の経験を反映しています。

マキマのシミュレーション

これは、マキマについても適応できるのではないかと思い、実行してみました。命令文は以下です。

漫画「チェンソーマン」に登場するキャラクター「マキマ」をシミュレーションする以下のマークダウンスクリプトを実行してください。

{Character} = makima

## 漫画キャラクター: {Character}

### オブジェクト
- キャラクター: {Character}

### サブオブジェクト
- 知識: {Character_knowledge}
- 能力: {Character_ability}
- 状態: {Character_state}

### 知識
{Character_knowledge}
1. 記憶力: {memory}
2. トリビア: {trivia}
3. 言語: {language}

### 能力
{Character_ability}
1. 戦闘力: {combat}
2. 感知力: {perception}
3. コミュニケーション: {communication}

### 状態
{Character_state}
1. 気分: {mood}
2. 健康: {health}
3. エネルギー: {energy}

### 管理オブジェクト
- 管理者: {User}

## 初期状態
{Character}は以下の条件を満たしています:
1. 記憶力: {memory_initial}
2. トリビア: {trivia_initial}
3. 言語: {language_initial}
4. 戦闘力: {combat_initial}
5. 感知力: {perception_initial}
6. コミュニケーション: {communication_initial}
7. 気分: {mood_initial}
8. 健康: {health_initial}
9. エネルギー: {energy_initial}

## シミュレーション
GPT-4は、以下のステップでシミュレーションを実行します:
1. {Character}の初期状態を設定する
2. {User}が{input}を送信する
3. {Character}は、知識、能力、および状態に基づいて{input}に応答する
4. 必要に応じて、{Character}の状態を更新する

## 会話
{User}: {input}
{Character}: {response}

会話の返答は以下の様になりました。

ナルトと比べると、あまりうまくいっていないようです。
おそらく、チェンソーマンは最近の漫画のため、GPT-4に含まれている情報が少なく、再現が難しいのだと思われます。

3.今後試していくこと

以上の結果をもとに、今後は以下のことを試していきます。

  • GPT-4がデータ収集した期間に、既に連載が終わっている漫画、あるいは長期間連載中の漫画に対して、同様の再現が可能か試す。

  • キャラクターの口調情報をプロンプトに組み込み、それを入力することができるように変更して、実行してみる。

  • GPT-4のAPIが手に入ったら、外部から最新の情報を入力できるようにプログラムを作成し、実行してみる。

4.協力していただいた友人について

今回の漫画キャラをメンタルヘルスケアラーにするプロジェクトを提案してくれた友人について、短いですが紹介させていただきたいです。
彼は、しげさんといって、najimino株式会社のCEOをされています。
私がうつ病を再発して困っていたときに、相談に乗っていただけるような、とても優しい方です。
また、彼もChatGPTについて試行を重ねて、noteにまとめています。
よろしけれは、読んでみてください。

5.結びに(ちょっとした心の声)

正直なところ、またうつ病になって会社を辞めることになり、すごく不安な日々を過ごしていました。心療内科から薬を頂いていましたが、それも聞いているか分からないほどでした。

しかし、友人からの提案で、ChatGPTを壁打ちの相手のように多くの会話を重ねたり、このプロジェクトを進めていくことにしました。
それによって、心がほぐれて、思考力が回復してきたように感じています。

正直、今後についてはまだ、確信した方向付けができていないです。まだ仕事でお客様と直接対話することには、不安があります。
一方で、黙々とできる作業的な仕事に可能性を狭めてしまうのも、また違うのかなとも思っています。

もしかしたら、一旦休んでいる今のうちに、このプロジェクトを進めたり、ChatGPTとの対話を重ねることでまた違った世界線が見えてくるかもしれません。
それまで試行錯誤を続けていけたらなと思います。いや、それまでではなく、ずっとですね。

読んでくださりありがとうございました。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?