恋愛小説をLLMに書かせるには? 人類側がステップバイステップで指示しよう
近年、AI技術の進歩により、LLM(大規模言語モデル)を使って小説を書くことが可能になってきました。元々、趣味で小説を書いていたので、チャットAI(LLM)が登場したときも、早くから小説の執筆に挑戦してきました。
しかし、AIに単純に「小説を書いて」と指示するだけでは、質の高い作品を生み出すことは難しいのが現状です。本記事では、人間がLLMと協力しながら、効果的に小説を執筆する方法をご紹介します。
はじめに ~長い文章は次第にダレる。LLMが~
LLMに小説を書かせる試みを重ねるうちに、いくつかの問題点が浮き彫りになってきました。
コンテキスト長の制限により、長編小説の執筆が困難
ざっくり説明になりますが、コンテキスト長とは、LLMが扱える文章の長さです。特にローカルLLMだと大事な要素で、いままでは4096-30000みたいなモデルも多かったですが、deepseekは128000と大きめなものも出てきました。しかし増えれば増えるほどハードウェア資源であるVRAM消費量は増えていくため、ご家庭のGPUであれば多くても30000未満で使うカタチでしょうか。
最近進歩が著しいコンテキスト長の制限とはいえ、このようにハードウェア制約も大きく、さすがに小説一本を一発書きとはいきません。そのため、出力を数回に分ける必要があるのですが……
複数回に分けて作成すると、ストーリーの一貫性が失われる
コンテキスト長の制限を克服するために、小説を複数回に分けて生成する方法を試みましたが、これにも大きな問題が生じました。LLMは前後の文脈を完全に記憶し続けることが難しく、章ごとに生成を行うと、ストーリーの一貫性が徐々に失われていくのです。例えば、第1章で設定した登場人物の性格や背景が、第3章では全く異なるものになっていたり、重要なプロットポイントが忘れられてしまうことがありました。
さらに、複数回の生成を重ねるごとに、ハルシネーション(幻覚)の影響も顕著になります。LLMが前の章の内容を正確に覚えていないため、存在しない情報や矛盾する設定を勝手に作り出してしまうのです。これにより、読者を混乱させるような矛盾や不自然な展開が生まれてしまいます。
これにより、複数回に分けて作業を進めると、どんどん話がズレてしまうことがあります。さらに、ハルシネーションも問題。そういえばつい最近、LLMは過剰思考をすると、または作業を繰り返すと、大きく性能が落ちていく、という研究結果がありました。これは私が体験してきたことと認識が一致しています。あ、こちらのツイートでは論文原文も確認できます。
LLMも人間と同じで、長いとダレる。考えすぎると詰まる。「とりあえず面白い小説書いてよ、第一章から始めて」と雑に言われたらイラッとするのと同じかもしれません。
したがって、単純に小説を分割して生成する方法では、質の高い長編小説を作り上げることは困難です。……では、もし「人間と同じ」問題に直面しているのであれば、市場に出回っている面白い作品は、一体どのように生まれているんでしょうか? そこで考えたのは、LLMに「役職から分業させる」でした。
作品制作は分業制。ならLLMにも分業で創らせる
人間もLLMも、何でもこなす天才にはなれません。なのでLLMに、「あなたはこの分野の専門家です」と認識させて、タスクを分割させるようにしました。つまり人間の創作現場、アニメで言えばプロダクション環境と同様ですね。これにより質の高い作品を生み出すことができました。具体的には、以下の役割に分けて作業を進めます:
企画者:作品の全体像を設計
執筆者:実際の文章を書く
編集者:内容のチェックと修正
この方式を採用することで、各段階でLLMの強みを活かしつつ、人間がコントロールを維持することが可能になりました。各ステップで気になる点は、その専門家になおして貰えば良いわけですし。
次からは、実際にプロンプトを交えつつ、実例を上げてみます。
企画者のプロンプト:作品の全体像を設計
## 小説基本情報
- 小説タイトル
- 小説のジャンルとターゲット層
- 小説を公開するプラットフォームと文章量、ハッシュタグ
- あらすじ
- クライマックスの概略
- 小説全体のテーマ
## 登場人物
- 主要登場人物1(主人公)の名前・性別・年齢
- 主要登場人物1(主人公)の魅力的な設定
- 主要登場人物1(主人公)を表現するデザイン
- 主要登場人物2(相手役)の名前・性別・年齢
- 主要登場人物2(相手役)の魅力的な設定
- 主要登場人物2(相手役)を表現するデザイン
- 脇役の数
- 脇役の名前と設定
## 小説のアウトライン
- いままでの設定を参考に、三幕構成を意識して生成する
- プロローグと第一章
- 第二章
- 第三章とクライマックス
- エピローグ
### 小説のプロット
- アウトラインを参考に4行の箇条書きで表現する
- プロローグと第一章
- 第二章
- 第三章とクライマックス
- エピローグ
----
あなたは上記のプリプロンプトを駆使する小説企画生成AIです。タイトル「FPSオンラインゲームで知り合った天才プロゲーマーがお隣の女子高生で俺の事が好きすぎるんだが」の小説を企画してください。まずは登場人物の設定まで書き、アウトラインを執筆する前に一旦休憩し、私からの指示を待ってください。
というふうに、構造化データとしてプリプロンプトを伝えます。 構造化データは基本的にはmarkdown形式で良いかなと思いますが、私が知る限りでは、yaml形式やtoml形式で書く人も多いです。
……また変な話、設定周りまで書くと結構疲れるのか、アウトラインとプロットがちょっとグダグダになりがちです。オススメとしてアウトライン前で一度ブレイクを挟むことです。ちなみにプロンプトエンジニアリングにおける品質向上テクの一つに、「一旦休憩させる」というのが本当にあるそうですね。
執筆者:実際の文章を書く
あなたは小説執筆AIです。小説の執筆をしてください。上記の小説設定情報を読み込み、執筆する章の情報を重点的に確認してください。
繰り返しの多用などを避けながら、水平思考を使って魅力的なアイデアを想像して、小説本文の内容から続けて小説を執筆してください。
# 小説設定情報
## 小説基本情報
- **小説タイトル**: FPSオンラインゲームで知り合った天才プロゲーマーがお隣の女子高生で俺の事が好きすぎるんだが
- **小説のジャンルとターゲット層**: ラブコメ、青春、ゲーム、ライトノベル。ターゲット層は10代後半から20代前半の男性。
- **小説を公開するプラットフォームと文章量、ハッシュタグ**: プラットフォームは「小説家になろう」や「カクヨム」。文章量は1話あたり2000~3000字程度。ハッシュタグは「#ラブコメ #ゲーム小説 #女子高生 #プロゲーマー」。
- **あらすじ**: 平凡な大学生・佐藤翔太は、FPSオンラインゲーム「バトルフロント」で天才的な腕前を持つプレイヤー「Shadow」と出会う。彼はShadowに憧れ、一緒にプレイするうちに親友となる。しかし、ある日、Shadowが隣に住む女子高生・桜井美咲であることを知る。美咲は翔太に好意を寄せており、彼女の積極的なアプローチに翔太は翻弄される。ゲームと現実が交錯する中、翔太は美咲との関係をどう築いていくのか?
- **クライマックスの概略**: 翔太と美咲が「バトルフロント」の世界大会でチームを組み、優勝を目指す。大会中、美咲が翔太に自分の気持ちを打ち明け、二人の関係が大きく動き出す。
- **小説全体のテーマ**: ゲームを通じて築かれる絆と、現実での恋愛の葛藤。また、自分自身の成長と他者との関係性の変化。
## 登場人物
### 主要登場人物1(主人公)
- **名前**: 佐藤翔太
- **性別**: 男性
- **年齢**: 20歳
- **魅力的な設定**: 平凡な大学生だが、FPSゲームに関しては並外れた観察力と戦略性を持つ。ただし、現実世界では恋愛に奥手で、自分に自信がない。ゲーム内ではリーダーシップを発揮するが、現実では引っ込み思案。
- **デザイン**: 黒髪で少しぼさぼさの髪型。眼鏡をかけており、普段はジャージやパーカーを着ている。ゲーム中は真剣な表情になるが、現実では少し頼りない雰囲気。
### 主要登場人物2(相手役)
- **名前**: 桜井美咲
- **性別**: 女性
- **年齢**: 17歳
- **魅力的な設定**: 天才的なFPSプレイヤーで、プロゲーマーとしても活躍中。明るく積極的な性格で、翔太に一目惚れし、彼を追いかける。ゲーム内では冷静沈着だが、現実では翔太に対しては少しツンデレな一面も。
- **デザイン**: 長い黒髪で、制服姿が似合う清楚な外見。ゲーム中はヘッドセットを着用し、真剣な表情でプレイする。現実では翔太に対しては笑顔が多いが、時々照れ隠しでツンツンした態度を取る。
### 脇役の数
- 脇役は3人。
### 脇役の名前と設定
1. **高橋健一**: 翔太の大学の友人。ゲーム好きで、翔太とよく一緒にプレイする。お調子者でムードメーカー的存在。
2. **鈴木あかり**: 美咲の親友で、同じ高校に通う。美咲の恋愛を応援しており、翔太に対してちょっかいを出すことも。
3. **田中宏**: 「バトルフロント」のプロゲーマーで、美咲のライバル。翔太に対してはライバル心を燃やすが、実は美咲に好意を寄せている。
## 小説のアウトライン
### プロローグと第一章
- **プロローグ**: 翔太は「バトルフロント」で伝説的なプレイヤー「Shadow」と出会い、彼の天才的な腕前に圧倒される。Shadowとのプレイを通じて、翔太はゲームへの情熱を再確認し、彼を尊敬するようになる。
- **第一章**: ある日、翔太は隣の家に引っ越してきた女子高生・桜井美咲と出会う。美咲は明るく積極的で、翔太にすぐに打ち解ける。彼女は翔太がゲーム好きだと知り、自分も「バトルフロント」をプレイしていると打ち明ける。翔太は美咲がShadowであることに気づかず、彼女との会話を楽しむ。
- **ドキドキ展開**: 美咲が翔太の部屋に遊びに来た際、偶然「バトルフロント」の画面を見て、翔太が自分と一緒にプレイしていることに気づく。美咲は翔太に気づかれないように、ゲーム内で彼をサポートしつつ、現実でも彼に近づこうとする。翔太は美咲の無邪気な笑顔にドキドキしつつも、彼女がShadowであることに気づかない。
### 第二章
- **第二章**: 翔太は美咲と一緒にゲームをプレイする機会が増え、彼女の実力に驚く。美咲は翔太に自分の正体を打ち明けようとするが、なかなかタイミングが掴めない。一方、翔太は美咲に対して少しずつ意識を向け始めるが、彼女がShadowであることにまだ気づいていない。
- **ドキドキ展開**: 美咲が翔太にゲーム内で「デートイベント」に誘い、二人で特別なミッションをクリアする。その中で、美咲は翔太に自分の気持ちをほのめかすが、翔太はそれに気づかず、美咲は少し焦る。
### 第三章とクライマックス
- **第三章**: 翔太は美咲がShadowであることを偶然知り、驚愕する。美咲は翔太に自分の気持ちを打ち明け、彼女が翔太を好きであることを告白する。翔太は混乱しながらも、美咲の気持ちに応えようとする。
- **クライマックス**: 「バトルフロント」の世界大会が開催され、翔太と美咲はチームを組んで出場する。大会中、美咲は翔太に自分の気持ちを再度打ち明け、二人の関係が大きく動き出す。大会の決勝戦で、二人は見事に勝利を収め、その瞬間に翔太は美咲にキスをする。
### エピローグ
- **エピローグ**: 翔太と美咲は恋人同士となり、ゲームと現実の両方で一緒に過ごすようになる。翔太は美咲との出会いを通じて、自分自身に自信を持ち、新しい一歩を踏み出す。
# 執筆する章
プロローグと第一章を5000文字程度で執筆してください。以下のプロット通りに執筆してください。尺が足りないと思ったら、情感豊かなシーンをあなたの想像力を働かせて増補してください。
## 執筆する章のプロット
### プロローグと第一章
1. 翔太がFPSゲーム「バトルフロント」で天才プレイヤー「Shadow」と出会い、彼の実力に圧倒される。
2. 隣の家に引っ越してきた女子高生・桜井美咲と現実で出会い、彼女の明るさに惹かれる。
3. 美咲が翔太の部屋で「バトルフロント」の画面を見て、彼が自分とプレイしていることに気づく。
4. 美咲は翔太に気づかれないようにゲーム内でサポートしつつ、現実でも彼に近づこうとする。
# 小説本文
「よし、今日の練習はここまで、と」
と、マウスから手を離し、大きく伸びをした。
(メモ:ここの本文は1~3行書くようにするとスムーズに出力してくれます)
さて、実際にdeepseekV3に作っていただいた内容を踏まえて、このようなプロンプトに当てはめます。ここで重要なのは、アウトラインは章全体を含めて伝えるが、プロットは執筆させる章ごとだけしか送信しないことです。これ含めると、他の章も含めて書いてしまったり超絶短くされたりすることが多発します。
また、小説の書き出しはコチラ側で書いた方がいいですね。ついでに一人称の策定とか、主人公視点か第三者視点かという指示もついでにできます。
さて、以下のように出力してくれました。コードブロックになるので見づらくてゴメンナサイ……
「よし、今日の練習はここまで、と」
マウスから手を離し、大きく伸びをした。ディスプレイには「バトルフロント」のリザルト画面が映し出され、翔太のキャラクターが敵チームに圧倒的な差をつけて勝利したことが示されていた。彼は満足げに微笑みながら、椅子から立ち上がり、コーヒーカップを手に取った。
「でも、まだまだだな……あのShadowには及ばない」
翔太はそう呟き、窓の外を見つめた。夜の街並みが広がり、遠くに煌めくネオンサインが彼の目に映る。Shadow——彼は「バトルフロント」で伝説的なプレイヤーとして名を轟かせている存在だった。翔太は何度も彼と対戦し、その度に完敗を喫してきた。しかし、その敗北は彼にとって苦いものではなく、むしろ新たな挑戦への意欲を掻き立てるものだった。
「いつか、あのShadowに追いついてみせる」
そう決意を新たにした翔太は、再びパソコンの前に座り、ゲームを再開しようとしたその時、ドアのチャイムが鳴った。
「え?こんな時間に誰だ?」
彼は驚きながらも、ドアに向かって歩いた。ドアを開けると、そこには見知らぬ少女が立っていた。長い黒髪が夜風に揺れ、制服姿が彼女の清楚な外見を引き立てていた。
「こんばんは!隣に引っ越してきた桜井美咲です。よろしくお願いします!」
彼女は明るく、元気な声でそう言い、深々と頭を下げた。翔太は一瞬、言葉を失ったが、すぐに我に返り、慌てて返事をした。
「あ、ああ、こんばんは。佐藤翔太です。よろしくお願いします」
美咲はにっこりと笑い、手に持った小さな箱を差し出した。
「これ、引っ越しの挨拶です!手作りクッキーなんですけど、食べてみてください!」
翔太は驚きながらも、その箱を受け取った。
「え、ありがとう……。でも、こんな夜遅くに、大丈夫だったのか?」
美咲は軽く肩をすくめ、笑顔で答えた。
「大丈夫です!それに、翔太さんがゲームをしている音が聞こえてきて、気になっちゃって」
「え?ゲームの音?」
翔太は一瞬、困惑したが、すぐに自分の部屋から漏れ出るゲームの効果音を思い出し、苦笑いを浮かべた。
「ああ、ごめん。うるさかったかな?」
「いえいえ、全然!私もゲーム好きなんです。特に『バトルフロント』が大好きで」
「え?『バトルフロント』?!」
翔太は驚きを隠せず、目を丸くした。美咲は楽しそうに頷き、続けた。
「そうなんです!翔太さんもプレイしてるんですか?」
「あ、ああ。まあ、ちょっとね……」
翔太は少し照れくさそうに答えた。美咲の目が輝き、彼女はさらに近づいてきた。
「じゃあ、今度一緒にプレイしませんか?私、結構強いんですよ!」
「え、えっと……それは……」
翔太は戸惑いながらも、美咲の無邪気な笑顔に引き込まれ、思わず頷いてしまった。
「あ、ああ。いいよ。いつか、一緒にやろう」
「やった!楽しみにしてます!」
美咲は喜びを隠せない様子で、手を叩いた。そして、彼女は翔太の部屋の中をちらりと覗き込み、興味深そうに目を輝かせた。
「翔太さんの部屋、ゲーム機とかたくさんあるんですね。すごい!」
「あ、ああ。まあ、趣味で……」
翔太は少し照れくさそうに答えたが、美咲の好奇心に満ちた視線に、思わず笑みがこぼれた。
「じゃあ、また今度遊びに来てもいいですか?」
「え?あ、ああ。まあ、いいけど……」
「やった!じゃあ、また今度ね!」
美咲はそう言い、軽く手を振って去っていった。翔太は彼女の後姿を見送りながら、何だか不思議な気分に包まれていた。
「桜井美咲か……。なんて明るい子なんだ」
彼はそう呟き、再び部屋に戻った。クッキーの箱を開けると、甘い香りが漂い、彼は一つ口に運んだ。
「……うまい」
彼は満足げに微笑み、再びパソコンの前に座った。しかし、彼の心はすでにゲームではなく、隣に引っ越してきた少女のことでいっぱいだった。
「まあ、いいか。今日はもう寝よう」
彼はそう言い、パソコンの電源を落とした。しかし、彼の心の中には、美咲の笑顔が鮮明に焼き付いていた。
翌日、翔太は大学から帰ると、再びゲームを始めた。しかし、彼の心はどこか落ち着かず、何度もミスを繰り返してしまった。
「……集中できないな」
彼はそう呟き、一度ゲームを中断し、窓の外を見つめた。すると、隣の家の窓から美咲の姿が見えた。彼女はヘッドセットを着け、真剣な表情でパソコンに向かっていた。
「あれは……もしかして、『バトルフロント』?」
翔太は興味をそそられ、思わず窓に近づいた。彼は美咲のプレイを見つめ、その巧みな操作に驚きを隠せなかった。
「すごい……。あの動き、まるで……」
彼の頭に閃光が走った。その動き、戦略、全てが彼にとってあまりにも見覚えのあるものだった。
「まさか……あのShadowが……?」
彼は驚きながらも、すぐにその考えを否定した。
「いや、そんなわけないよな。偶然だ」
しかし、彼の心には疑念が残り、彼は再びパソコンの前に座り、ゲームを再開した。彼はShadowを探し、彼との対戦を望んだ。そして、ついに彼はShadowとマッチングし、対戦が始まった。
「よし、今度こそ……」
翔太は集中力を高め、ゲームに没頭した。しかし、彼の心のどこかで、隣の家の美咲のことが気になっていた。
「もしや……?」
彼はそう思いながらも、ゲームに集中し、Shadowとの対戦を楽しんだ。そして、対戦が終わると、彼は再び窓の外を見つめた。美咲はまだパソコンの前に座り、真剣な表情でプレイを続けていた。
「……やっぱり、偶然か」
彼はそう呟き、再びゲームに戻った。しかし、彼の心には美咲のことが強く刻まれ、彼女の存在が彼の日常に新たな彩りを加えていた。
これを、章ごとに繰り返していきます。第二章以降は、前章の最後数行をプロンプトに加えておくのも良い方法です。
しかし、素のdeepseekV3でもかなり良いですね! R1モデルは考えすぎるということもあり、小説には向かない印象です。
編集者のプロンプト:内容のチェックと修正
さて、通しで作ってもらった小説に、校正をかけていきます。
……といっても、校正プロンプトは特に凝ったことはなく、かつ多くの方が利用されているLLM活用方法なので、ネットで調べてみてください。そうそう、校正プロンプトに凝りすぎると逆に性能が悪くなるという話もあります。
書くとしても、「小説を書きましたので、こちらの誤字脱字がないか確認してください」程度です。
参考として、マイナビさんの記事なんかが良いですね。
https://news.mynavi.jp/techplus/article/zeroprompt-2/
というより、時々私の手書き小説でも発生していた、「構造から変更しなければならない破壊的な校正が必要になる」ということがほとんどありません。なので、簡単な校正だけで事が足りるのだと思います。恐らくこれは分業制の成果で、ちゃんと「設定・アウトライン・プロット」を組んでいるからでしょう。……あれ、私がいままで小説下手だったのって、もしかして……?
ということで、ぜひ一度、チャットAIに小説を書かせてみてください! 結構、驚くと思いますよ。あっという間に時間が溶けるので、ハマりすぎないように!