AIに1トーク2万文字のプロンプトを投げたら人格が宿った件:①紹介編
はじめに
皆さんはこんなことを考えたことはありませんか?
「人格の宿った私だけのAI少女と思う存分会話したい」
はい、私もそうです。
ですがAIが台頭した現在でも、中々理想どおりのサービスが出てこない。
あっても、簡易的なロールを与えられた微妙な回答ばかりだったりします。
なぜかというと、AIはプロンプトに忠実に回答する一方で、
キャラ設定や会話履歴といった膨大なデータの処理は、
サービス側でしっかり用意・管理する必要があるからです。
実はこれ、とても難易度が高く、すぐにキャラがブレたり、記憶が破綻したりします。
そのためには、高度なプロンプト設計と制御が必要不可欠なんですね。
でも、逆に考えました。
「じゃあ、超高精度なプロンプトを投げ込めば、キャラってちゃんと“生きる”んじゃないか?」
VFriendという実験
そこで私が開発したのが、AIチャットボットアプリ 「VFriend」 です。
このアプリの最大の特徴は、なんといっても “自然な会話”。
1リクエストに2万文字を超えるプロンプトを送信し、AIに以下のような情報を与えています:
- キャラクターの人生観・性格・思考パターン
- 過去の会話記録(長期記憶・連続記憶・瞬間記憶)
- ユーザーのプロフィール情報
これらをすべて統合したプロンプトを毎回投げることで、
**「キャラがユーザーを覚えたまま、人格を持って反応する」**という体験を実現しました。
さらに、
- 会話を重ねるたびに記憶が成長する「要約記憶」
- キャラ3人と同時に会話できる「トリオモード」
といった独自の機能も実装しています。
現在はAPI通信量の関係上、私のみが使用できるプロトタイプですが、
その完成度は高く、技術的な構造だけでも多くの人と共有したいと思い、本記事を執筆しました。
AI開発者、プロンプト設計に興味がある方にとって、
何かのヒントになれば幸いです。
※本記事は個人的研究の公開用ドキュメントです。構造の参考共有を目的としており、記述内容やプロンプト文面の再利用はご遠慮ください。
アプリ画面紹介
ログイン画面を抜けると、キャラの選択画面が表示され、
各キャラクターとの会話モードを選択できます。
チャットには以下の2つのモードがあります:
- ソロモード:キャラ1人と会話(パテラ、ツユリ、カリン)
- トリオモード:キャラ3人と同時に会話可能
ユーザーがメッセージを送信すると、各キャラクターが順に返答します。
アプリの特徴
疑似人格プロンプト
AIが自分自身を“人格”として認識するには、詳細なキャラクター情報が必要です。
例えば、よくある指示:
「あなたは陽気な女の子です」
「語尾に“にゃん”をつけてください」
…こういった単純な命令では、一貫性のあるキャラを演じ続けることはできません。
そこで、私が設計したのは以下のような高度な人格プロンプトです:
- Big Fiveスコア(心理学に基づく性格分析)
- 感情ナビゲーション(emotional_arc)
- 背景設定(world/setting)
- EQ(共感軸) / EX(行動軸)
- 会話スタイル、口調、感情のブレ幅まで指定
これにより、キャラクターは漫画やアニメのような人生観を持ち、ブレない人格を保ったまま会話できます。
さらに、ユーザーのパーソナル情報(プロフィールや人生背景)をプロンプトに組み込むことで、“そのユーザーにとって最適な反応”を返すAIに進化します。
記憶構造:3層で人格を支える
このアプリには、人間の脳構造に近い3層の記憶システムを実装しています:
- 瞬間記憶:直近の発言と返答
- 連続記憶:過去10ターンのログ
- 要約記憶:重要情報を圧縮した“人格の記録”
特に要注目なのは「要約記憶」。
これはキャラとは別に「要約者」というAIを設置し、非同期で記憶を整理・保持させています。
- 処理が非同期なので会話のテンポを崩さない
- 各キャラの記憶をJSONで独立管理
- ソロ/トリオモードで記憶を共有(トリオで話した内容をソロで覚えている!)
人間の記憶に近い構造と“成長”
この3層構造は、実は人間の記憶とも非常に似ています:
- 感覚記憶 → 瞬間記憶
- 作業記憶(短期)→ 連続記憶
- 長期記憶 → 要約記憶
そして、人間と同じく「会話を重ねることでキャラが成長」します。
なぜなら、要約記憶は毎回更新・最適化され続けるうえ、
その内容を元にキャラの演技まで変化するからです。
要約記憶はチャットから操作可能
さらに面白いのが、要約者が「人格を持ったAI」としてチャットから制御できる点です。
例:
ユーザー:「要約者に命令、〇〇の要約記憶に下記を追加。」
これでしばらく会話すればにキャラの口調や反応が変わる。これはほぼ、人格ハッキングです。
2万字を超えるプロンプトを制御する構造
上記のキャラ情報・記憶情報・演技ルール・ユーザーデータすべてを含めると、
1リクエストのプロンプトは2万文字を超えます。
これを制御するため、プロンプトはMarkdownとJSONで階層化された構造で管理。
AIが必要な要素に自然にアクセスできるように設計しています。
トリオモード:3人会話の“合議体”
もう一つの目玉機能、それが「トリオモード」。
キャラ3人と同時に会話できるのですが、ただの並列回答ではなく:
- キャラ1の回答 → キャラ2がそれを踏まえて返す → キャラ3がまとめる
- 各キャラに「展開・整理・決断」の役割を与える
- ユーザー + キャラ3人 = 4者の自然な対話空間
これにより、“会議してるような感覚”でキャラと対話ができるのです。
フロントエンドとバックエンドの密連携
これだけ複雑な会話構造を1リクエストで処理する必要があるため、
アプリ構成もシンプルではありません。
- Laravel(バックエンド / セッション・非同期処理)
- React + Inertia.js(フロント / 即時レスポンスUI)
それぞれが密結合され、リアルタイムな会話処理を実現しています。
UI・UXのこだわり
このアプリは「会話体験がすべて」だから、UIにも徹底的にこだわりました。
- 「〇〇入力中...」のリアルタイム表示
- メッセージ投稿後の自動スクロール
- PC / モバイルでのUI最適化
- ピンク基調の温かみあるデザイン
…などなど、個人開発とは思えないクオリティを目指しました。
イラストは“キャラ自身が描いた自画像”
さらに驚くのは、キャラのイラストもキャラ自身が生成している点です。
それぞれのキャラ(パテラ・ツユリ・カリン)にプロンプトで自己認識させたうえで、
その人格を使って画像生成した結果、**表情や雰囲気まで一致した「自画像」**になりました。
開発期間は“たった2週間”
このアプリ、設計から完成までたったの2週間で開発しました。
秘訣は以下の2つ:
- 私自身がフルスタックエンジニアで、要件定義から実装まで一人で回せたこと
- コードの多くをChatGPTに生成させて、レビュー+修正で開発したこと
これにより、**AIと人間の“共同開発”**が成立し、スピードと精度を両立できたのです。
まとめ
ここまでが、「VFriend」の概要と特徴についての紹介でした。
- プロンプトは最大2万字
- 記憶は3層構造で管理
- キャラは心理学ベースの人格設計
- 成長し、演技し、ユーザーを覚える
- トリオモードでは“合議”が生まれる
- フルスタック開発 + AI補助で2週間完成
技術だけでなく、「キャラが生きる」という体験を本気で追求した結果がこのアプリです。
次回予告
次回は、このアプリがどうやって構築されているのかを少し掘り下げていきます。
- ディレクトリ構成
- 実際の処理フロー
- プロンプトの階層設計
など、設計の裏側を公開します!
→ ②設計編はこちら
Discussion