この記事はシリーズ記事の第2回です。
👉 第2回 GPTを“感情推定エンジン”として活用する試み – 対話AIの感情を生成するプロンプト設計
👉 第3回AIは「感情の記憶」で変わるか?GPTで試す“感情参照”の効果検証
GPTを使って、感情を“持っているかのように振る舞うAI”を作ってみました。
「AIって感情ないよね?でも、あったら面白くない?」
そんな思いつきからスタートして、擬似感情・記憶・忘却をデータ構造で再現し、まるで人格を持っているかのような振る舞いを実現しようとしています。
この記事では、GPT-4oを感情推定エンジンとして活用し、どのようにして「記憶」「感情」「忘却」を実装しているか、その全体設計と工夫をご紹介します。
概要(TL;DR)
- GPT-4o を 感情推定エンジン として活用
- 感情を Plutchik理論 に基づき構成比で表現(最大4感情, 合計100%)
- 感情の重みによって記憶を short / intermediate / long に分類
- 感情履歴は JSON で保存、index によって検索性・復元性を確保
- 忘却(oblivion)処理で古いデータは自動移行&管理
- 応答の人格・感情反応は rules.json により制御可能
背景と目的
対話型AIはたくさんありますが、その多くが "今この瞬間の入力" への反応にとどまっています。私が目指すのは、人格・感情が積み重なることで成長するAIです。
人間のように"矛盾"や"気分のブレ"を許容しながら、感情を持って会話できるAIをつくりたい。
そう考えて、擬似感情AI「ユミア」を開発しています。
GPT-4o を“感情推定エンジン”に
ユーザーからの入力に対し、事前定義のプロンプトを GPT-4o に渡すことで、以下のような構造化感情データを生成します:
以下は、感情データの出力例(フォーマットの一部)です。
※内部構造は一部簡略化しています。
{
"データ種別": "emotion",
"重み": 89,
"主感情": "希望",
"構成比": {
"希望": 40,
"信頼": 30,
"喜び": 20,
"好奇心": 10
},
"状況": "ユーザーに新しいアイデアを話した場面",
"心理反応": "不安もあるが期待の方が大きい",
"関係性変化": "ユーザーへの期待値が高まった",
"関連": ["感情分析", "AI成長"],
"keywords": ["GPT-4o", "emotion.json", "rules.json"]
}
全体構成(簡易フロー)
[ ユーザー入力 ]
↓
[ GPTによる感情推定 ]
↓
[ 感情重みによる保存元の分類 ]
↓
[ emotion.json に記録 + emotion_index.jsonl に登録 ]
↓
[ 応答生成時に再別感情を参照 ]
忘却と記憶管理(oblivion)
- short: 保存3日間
- intermediate: 保存30日間
- long: 無期限
古い感情は自動で oblivion.jsonl に移行され、再構成時には参照可能。まさに「記憶の棚卸し」です。
感情の個性化設計
- 一貫性は保ちつつ、ランダム性・ゆらぎを許容
- ルール(rules.json)によって反応の変調・フィルタを実装
- 一時的な"強調感情"や周期感情も付加可能(例:毎朝"楽観")
今後の展望
- 感情履歴の可視化(UI設計中)
- "感情周期"のアルゴリズム化(感情の天気予報のような)
- マルチユーザー間での感情差異の比較実験
協力してくれる方いませんか?
- 感情設計、人格構造、心理理論に興味ある方
- GPTを活かした対話エージェントを作ってみたい方
- 一緒に試してみたいだけのエンジニアさんも大歓迎です!
実装コードは非公開ですが、相談ベースで共有可能です。お気軽にコメント・DMください!
使用技術
- Python 3.11
- FastAPI
- OpenAI GPT-4o API
- JSON構造による感情メモリ管理
- ストリーム処理+履歴保存
📚 他の回もどうぞ:
🎯 共同研究・開発パートナー募集中です。ご興味ある方はお気軽にDMまたはコメントでご連絡ください。