仮想世界を旅して私小説を書く作家AIエージェントをつくってみた
本記事は、生成AI Advent Calendar 2024の7日目の記事です。
はじめに
どうも、作家の葦沢かもめです。
最近、AIエージェントで村などのコミュニティをシミュレーションする研究が流行っていますよね。
そういうのに私も興味があります。
特に仮想的なワールドを作って、そこを作家AIエージェントが旅しながら、その世界の情景とか他のエージェントとの交流といった経験をもとに小説を書いてくれたら面白そうだなと思っていたので、今回は試しに作ってみました。
本当はもっと作り込む予定でしたが、時間が足りなくて最低限の実装になってしまったのが残念です……。
ま、でもここから機能を追加していけばいいので、今後のお楽しみということで。
実装
仮想世界部分: Phaser (Webゲームのフレームワーク)
サーバー: Flask
AIエージェント: GPT-4o, LangGraph (開発中はollamaのgemma2に差し替えてました)
コーディング: GPT-4o, o1-preview, o1 Pro
成果物
開始すると、こんな感じでRPGゲーム風のマップが表示されます。マップ中央に小さく見えるのがプレイヤーです。
「ターン開始」ボタンを押すと、あとは自動でプレイヤーがマップを動き回って小説を書き続けます。
1つのターンは「移動」「アクション」「日記執筆」「小説執筆」の4つのフェーズで構成されています。
「移動」フェーズ
プレイヤーは、現在位置から上下左右のマスに移動できます。「壁」のマスには移動できません。
本当は論文の例みたいに行動計画立てたりさせたかったんですが、今回はそこまでできていません。
「アクション」フェーズ
各マスには可能なアクションが設定されていて、プレイヤーはその中からランダムに1つ選択します。
例えば、家の中の「フロア」のマスでは「掃除」と「休憩」のアクションが可能です。そして「休憩」をした場合、「少し休んでHPが5回復しました。」という結果が得られます。
「日記執筆」フェーズ
アクションの結果をプロンプトに入れて、LLMでまず日記を書きます。
論文の例ではreflectionとして抽象的な思考が実装されていたので、それを簡易的に代用できるかなと思って日記にしてみました。
執筆された日記の例は、こんな感じ。
「小説執筆」フェーズ
続いて小説を書いてもらいます。
まだ行動の結果が小説に反映されている感じはありませんが、もう少しプロンプトを具体的に検討したり、行動履歴をたくさん記録してスコアリングすれば、経験をもとにしたAIの私小説が書けるのではないでしょうか。
実際に動作している動画はこちら。
おわりに
マップももっと色々なマスを作りたいし、可能なアクションも増やしたいし、作家AIのキャラクター付けもしたいし、複数のエージェントを動かしたいし……と、まだまだ物足りないなと感じているので、これからも時間を見つけてアップデートしていけたらいいなと思います。
最後にお知らせ。
インプレス様より「小説を書く人のAI活用術 AIとの対話で物語のアイデアが広がる」が10月17日に刊行されております!
山川健一先生、今井昭彦先生との共著で、私は生成AIを活用した具体的な執筆方法の解説などしております。ぜひぜひご予約ください!
しかもインプレスブックスさんで販売している電子書籍が、期間限定30%オフのセール中です!期限は12月31日まで。この機会をお見逃しなく!
またnoteのマガジン「かもめAI小説塾」ではAIを活用した小説の執筆法を公開しております。私の手法は「作家らしさ」を作品に落とし込むことを前提としているので、AIを使わずに人間が書く場合にも応用できるテクニックになっています。ぜひ他の記事もご覧ください。
それでは~。