【ChatGPT】黒歴史ブログの文章を生成した

# やったこと
・友人の黒歴史ブログの文章をChatGPTに読ませた
・文章の特徴などについて，ChatGPTと一緒に考えた
・DiscordのBotに組み込み，APIから利用できるようにした

# 経緯
某ソシャゲのクラン用Discord鯖で，とあるメンバーのブログがネタにされていました．
10年以上前に書かれた，いわゆる中二病全開の文章が，とても味があり好評でした．
しかし，記事の数には限りがあり，すぐに消費し切ってしまいました．
そこで，味を長く楽しむため，似たような文章を生成することにしました．
気になる方は以下リンクからどうぞ．公開許可はもらっています．

http://maudamepo.blog84.fc2.com/

# できたもの
このような文章を書いてくれるbot
![chat1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507224/f01c7b8c-be1e-5cd0-42b2-134e45c32d23.png)

# つくりかた
最終的にDiscordのBotからGPT-4のAPIを利用するつもりだったので，
文章を生成するための適切なプロンプトを考えることにしました．

そこで，ブラウザのChatGPTを利用し，文章の特徴について調べました．

## 文章の特徴を調べる
``` :自分
以下の文章は、同一の筆者により書かれたものです。
これらの文章の共通点について考察してください。

皆さんの久しぶりです白い悪魔です
6年と少し
そんな時間が過ぎ去ってしまいました
いろんな出来事があって今の僕がここに立ってます
ありがとうございました
ブログいつ更新するかわからないですが気長にお願いします
白き羽が自由に飛ぶその日まで

(以下略)
```
```:ChatGPT
これらの文章は同一の筆者により書かれたとのことですので、その共通点について考察します。

1. 個性的な自己紹介: すべての文章で、筆者が自己紹介を行っています。特に"白い悪魔"という個性的なニックネームを使っています。これにより、読者は筆者のキャラクターを想像しやすいでしょう。

2. 日常的な話題について書かれている: 文章の内容は、アニメやゲーム、食べ物など、筆者の日常生活や趣味に関連した話題で占められています。これにより、筆者の生活スタイルや興味関心が読者に伝わります。

3. 独特の表現スタイル: 筆者は独自の表現スタイルを持っています。文章はカジュアルで、インターネットスラングを用いる傾向があります。また、感情を表すために「ｗｗｗ」のような表現を用いるなど、読者に自分の感情を伝える努力をしています。

4. 文章の締めくくり: 各文章は詩的な一文で終わっています。例えば「澄み切った空にはばたくその時まで・・・」、「この未来をつむぐ手で」などです。これは筆者が詩的な感性を持っていることを示す可能性があります。また、結びのフレーズは読者に深く印象を与え、次回の更新を期待させる効果もあります。

これらの要素から、筆者は自己表現を大切にし、読者とのコミュニケーションを重視するスタイルを持っていることがわかります。
```

優しくオブラートで包まれていますね．

ChatGPTによる考察で，これらの文章が3つに分けられることがわかりました．
- 自己紹介
- 本文
- 締めの詩

では，それぞれについてもう少し細かく見ていきましょう．

```:自分
では、それぞれの要素について考察を深めましょう。
まず、あいさつについては、「やあ」「よう」とフランクな挨拶ののち、自らを「白い悪魔」と名乗っています。
ほかに注目点はありますか？
```
```:ChatGPT
「やあ」「よう」というフランクな挨拶は、筆者のカジュアルで親しみやすい人格を示しています。読者との距離を縮め、一方的な発信だけでなく対話のような関係を築くことを意図している可能性があります。また、あいさつについては、文章の冒頭で一貫して使用しているため、その特徴的なスタイルが筆者の個性を表現し、読者の注目を引く役割も果たしています。

次に、「白い悪魔」という自称について考察します。これは筆者が自分を一種のキャラクターとして描くことで、読者にとって記憶に残りやすい印象を与えようとしている可能性があります。また、「白い悪魔」というフレーズは一見矛盾しているように感じられます。通常、"白"は純粋さや清らかさを象徴し、"悪魔"は悪や破壊を象徴します。このような相反する要素を組み合わせることで、筆者は自己の独特さや複雑さを示しているのかもしれません。

また、これらの要素を組み合わせることで、筆者は自己表現を通じて読者との独自の関係を築こうとしていることが示唆されます。筆者のスタイルやキャラクターを通じて、読者は筆者との個人的なつながりを感じ、その結果、文章の内容により深く関与することができるでしょう。
```
恥ずかしくなってきた
```:自分
次に、書かれている話題についてです。
日常的な話題について書かれていて、それ自体には特筆すべき事項がないように感じています。
文章の書き方や表現について、注目すべきことはありますか？
```
```:ChatGPT

はい、確かに日常的な話題自体に特筆すべき事項はないかもしれませんが、それらの話題に対する筆者の取り扱い方や表現方法は注目に値します。

1. 個人的な体験を共有: 筆者は自身の体験を読者と共有することで、個々のエピソードについての視点や感情を示しています。アニメ視聴の感想、ゲームに関する挫折感、食事に対する喜びなどは、筆者の性格や価値観を反映する一方で、読者との共感を引き出す可能性があります。

2. エモーショナルな言葉遣い: 筆者は自身の感情を表現するために強調語や繰り返し、口語表現、インターネットスラング（「ｗｗｗ」など）を頻繁に用いています。これにより、筆者の言葉から強い感情やエネルギーが伝わり、読者は筆者の情緒を感じ取ることができます。

3. 直接的な表現: 筆者は意見や感情を非常に直接的に表現します。例えば、「俺はきらいだわ」や「感動だわあああ」などの表現は、筆者の素直な感想や感情を伝える強力な手段です。これにより、筆者の正直さや自己主張の強さが強調され、読者との間に信頼関係を築くことができます。

これらの特徴は、筆者が自己表現を大切にし、読者と深いレベルでつながりを持つことを望んでいることを示している可能性があります。
```
```:自分
では、締めくくりの挨拶についてです。
詩的な表現は、この文章の中でも最も注目すべき点だと考えています。
そこで、特徴を考察した上、このあいさつとして考えられる例をいくつか挙げてください
```
```:ChatGPT
確かに、筆者が各文章の締めくくりに用いる詩的な表現は非常に特徴的です。これらの表現は筆者の独自のスタイルを強調し、読者に対して深い印象を与える一方で、文脈に対する一種の解釈や思考の深化を促す可能性があります。具体的には次のような特徴が考えられます：

1. 象徴的表現: 「澄み切った空にはばたくその時まで・・・」、「白き羽が自由に飛ぶその日まで」などの表現は、具体的な状況よりも感情や理想を示しています。これらは自由や解放、前進や成長などの抽象的な概念を象徴しており、筆者の心情や目指すものを読者に伝えます。

2. 感情の深化: これらの詩的な表現は、筆者の日常の話題に対する感情的な反応を深化させます。日常的な話題の後にこれらの詩的な表現を用いることで、筆者は自身の感情や思考をより深く掘り下げ、読者にその深さを示しています。

3. 読者への挑戦: また、これらの詩的な表現は、読者が筆者の考えを解釈するための挑戦でもあります。詩的な表現は一般的に複数の解釈が可能であり、これにより読者は筆者の意図を自身の視点で解釈する機会を得ます。

これらの要素を考慮した上で、以下のような詩的な締めくくりの例を提案します：

・「明日の風が、僕たちを導くその日まで」
・「遥かなる星が、僕たちの夢を照らすその時まで」
・「大地が僕たちを抱きしめる、その穏やかな瞬間まで」
・「心に咲く花が、全ての人を照らすその日まで」
・「無限の可能性が開く、その壮大な時まで」
```
ここまで書かれるといい文章に思えてきますね．
最後の締めくくり，早くも解像度が高くなっていて笑いました．

## 要約させる
いったん，ここまでをまとめてもらいましょう．
```:自分
では、ここまでの議論を要約してください
```
```:ChatGPT

これらの文章は同一の筆者により書かれており、以下の特徴が見られます：

1. フランクな自己紹介: 筆者は「やあ」「よう」という親しみやすい言葉で挨拶し、「白い悪魔」という個性的な自称を用います。これにより、筆者のカジュアルで親近感のある性格を示し、読者との間に対話的な関係を築こうとしています。

2. 日常的な話題への個別的な取り組み: 筆者は日常生活や趣味に関連した話題を共有し、自身の視点や感情を伝えています。筆者の感情を強調する表現や直接的な言葉遣いにより、その性格や価値観がより具体的に伝わります。

3. 詩的な締めくくり: 各文章は詩的な一文で終わっており、筆者の感情的な反応や思考の深化、そして読者への挑戦を含んでいます。これにより、筆者は読者に深い印象を与え、次回の更新への期待を引き立てています。

以上の特徴は、筆者が自己表現を重視し、読者との深いつながりを築こうとしていることを示しています。
```
もう少し踏み込みます
```:自分
これらの議論を踏まえ、この筆者のような文章を私達が書くとしたら、どのようなフォーマットで、どのような点に注意すべきですか
```
```:ChatGPT

この筆者のスタイルを踏襲する場合、以下のような要点に注意して文章を作成すると良いでしょう。

1. フランクな自己紹介: 文章の始まりに、フランクな挨拶と一貫した自己紹介を設けましょう。自己紹介は独特で覚えやすいものが良いです。個性的なニックネームを使用すると、読者に強く印象を与えることができます。

2. 日常的な話題: 自分自身の日常生活や趣味に関連した話題について、具体的で感情的な視点から書きましょう。あなたの体験や考えを共有することで、読者に親近感を持ってもらうことができます。

3. 感情的な言葉遣いと直接的な表現: 言葉遣いにおいては、自分の感情を強調するための表現を用い、また自分の意見や感想を直接的に伝えることが重要です。この点に注意することで、読者との共感を引き出すことができます。

4. 詩的な締めくくり: 文章の最後には、詩的な表現を用いて締めくくりましょう。この部分は、文章全体の感情的な高まりを象徴し、読者に強く印象を与えます。
```

その後，出力を繰り返し，人力で少しずつ修正を行いました．例えば，以下のようなものについてです．
- 語尾の単語の指定
- 句読点の除去
- 文章レベルの修正(高校生程度)

ここも自動化できればよかったのですが，現状では難しいと思われます．

この過程でブログを大量に読むことになりましたが，作業しつつだと余り原典を楽しめませんでした．
今度ゆっくり読み直します．

## 「白い悪魔」スタイルのまとめ
一通り修正が完了した時点で，まとめなおしてもらいました
```:ChatGPT
「白い悪魔」スタイルは次の特徴があります。

1. 文の長さ: 短めの文章を特徴とします。多くても20文字程度です。
2. 口語的表現: カジュアルで口語的な表現を多用します。特に、「だぜ」や「だな」などの男性言葉を好む傾向があります。
3. 句読点の使用: 句読点は一切使用せず、必要な場合は文章を分割します。このスタイルは口語的な雰囲気を強化します。
4. 主観的な表現: 自身の感想や意見をストレートに述べることが特徴です。自分の経験や考えを中心に話を進めます。
5. 詩的な終わり方: 文章の終わりには詩的なフレーズを加えることが特徴です。これにより、文章全体に一貫性と独自性を持たせています。
```
大きな特徴のひとつである，「白い悪魔」という自己紹介についての情報が欠落していますね．
心配になりつつも，ひとまずこれで完成とします

# Botの実装
ChatGPT APIでは，あらかじめ対話の情報を作っておけば，APIを叩く際にその文脈を考慮してくれます．
そのため，以下のような対話情報を作成しました．
- user:
    - 状況説明
    - 例文提示(ブログそのまま)
    - ChatGPTで作成した特徴
- assistant:
    - 特徴の復唱
    - 生成例として，ブログの文章をそのまま
- user:
    - 文章を作成するような依頼
    - テーマ(コマンドで入力する)
```:role: user
以下の指示に従って、文章を生成してください

・あなたは、「白い悪魔」というハンドルネームのブログ執筆者です。
・白い悪魔は、高校生程度の年齢と推測されます。いわゆる中二病的な思考を持ちます。
・あなたの文体は、独特です。以下に例を示します

(例文:ブログそのまま)

白い悪魔の各文章のスタイルを、以下では白い悪魔スタイルと呼びます。
白い悪魔スタイルの特徴は、以下のとおりです

・自己紹介：文章は一般的に自己紹介から始まります。「やあ、白い悪魔だよ」などと挨拶します。
・カジュアルなトーン：文章は口語的でカジュアルな表現を多用し、読者との親しみやすさを作り出します。また、文章の年齢層は高校生程度とされています。
・詩的な結び：文章の最後には詩的なフレーズで締めくくり、印象を強化します。例えば、「未来への道、それが俺の一歩だぜ」などです。
・句読点の制限：一文は基本的に15字以内、多くても20字程度で、句読点は原則使用してはいけません。ひとつの出力は、長くとも15行程度の文章から構成されます
・自己開示と感情表現：筆者の感情や考えを率直に表現し、読者との深い共感を誘います。
・サブカルチャーの参照：アニメやゲームなどのサブカルチャーを頻繁に引用し、それらを通じて自身の視点や解釈を共有します。
・これらの要素が組み合わさることで、「白い悪魔」スタイルはその特異な文体で読者を引きつけ、深い印象を与えます。

先程の例やこれらの特徴を踏まえ、白い悪魔スタイルの文章を生成してください。
では、まず、このルールに従った出力を行ってください。
```
```:role:assistant
白い悪魔スタイルについて、理解しました。以下の要素が含まれます。
・自己紹介：文章は一般的に自己紹介から始まります。「やあ、白い悪魔だよ」などと挨拶します。
・カジュアルなトーン：文章は口語的でカジュアルな表現を多用し、読者との親しみやすさを作り出します。また、文章の年齢層は高校生程度とされています。
・詩的な結び：文章の最後には詩的なフレーズで締めくくり、印象を強化します。例えば、「未来への道、それが俺の一歩だぜ」などです。
・句読点の制限：一文は基本的に15字以内、多くても20字程度で、句読点は原則使用してはいけません。
・自己開示と感情表現：筆者の感情や考えを率直に表現し、読者との深い共感を誘います。
・サブカルチャーの参照：アニメやゲームなどのサブカルチャーを頻繁に引用し、それらを通じて自身の視点や解釈を共有します。
・これらの要素が組み合わさることで、「白い悪魔」スタイルはその特異な文体で読者を引きつけ、深い印象を与えます。
これを踏まえ、出力例を以下に5つ示します

(例文:ブログそのまま)

では、出力する文章のテーマを指定してください。
これらのように、白い悪魔スタイルの文章を出力します。
```
```:role:user
では、白い悪魔スタイルを厳密に守り、文章を考えてください。
特に、文の数には注意してください。
また、出力は結果の文章のみであり、説明等は不要です。
テーマ：(ここにbotからの入力)
```

DiscordのBotでは，スラッシュコマンドの引数でユーザから文章のテーマを受け取ります．
これを対話の最後にくっつけ，APIを叩くことで結果を得られます．

# 結果
好きなテーマに対し，それっぽい文章を簡単に作ることができるようになりました．
![chat2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507224/0de0361f-963b-0f67-5239-a68e257eb635.png)
![chat1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507224/ce105f0b-240b-ec79-d23f-92181fdab285.png)

需要に合う供給を行えて嬉しくなれました．

# まとめ
- 以下の手順で行った
    - 生の文章を読ませる
    - それぞれの部分の特徴を確認する
    - 一度要約させる
    - 出力と改良を繰り返す
    - 事前に会話形式のデータを作成し，APIを叩くときに文脈を考慮してもらう
        - user，assistantともに生の文章を挿入する
- API経由で文章生成を行いたいときは，要件定義をしっかりしよう
- (散々指摘されていますが)ChatGPTは，このような使い方に強い
- 他人の黒歴史は蜜の味