見出し画像

更新rev33 - monRChat - AIチャット(v2026.07) - 配布有 rev33-

📚 更新履歴

** 2026年7月24日 rev33リリース
・チャットをセッション制へ変更
同じチャットを使い続けるのではなく、チャット自体を切り替えて会話できるように改修。
・バグ修正
・すでにあるmonRChatをアップデートするには「👐アップデート方法」を参照してください。

** 2026年7月6日 rev32リリース
・初期リリース




🤖 monRChatとは

monRChatは、AIとチャットをすることに特化したPythonプログラムです。
GeminiClaude CodeChatGPT(立ち絵生成)の力を借りて制作しました。
詳細な内容は仕様書やマニュアルを参照してください。


🎰 おおまかな特徴

用語:
フラッシュ:会話内容からユーザーの好みや趣向などを取り出してまとめる動作です。
ペルソナ:AIにロールプレイ(RP)をしてもらうための人格です。この設定によりペルソナの人格が大きく左右されます。

・会話をできるだけ継続できるような仕組みになっています。
・ユーザーの会話内容を「フラッシュ」することで、ユーザーの人物モデルを作成し、今後の会話に利用します。
・ユーザーの会話内容を「フラッシュ」することで、ユーザーの好みを抽出し、今後の会話に利用します。
・会話中からユーザーの名前・年齢・誕生日などの基本情報を自動で検出し、今後の会話に活かします。
・チャット内容をセッション単位で管理し、切り替えながら会話が出来ます。

・検索エンジンAPIからWeb検索ボタンでキーワード検索をし、検索結果を利用して会話します。URL先から記事を取得することもできます。

・永続的に覚えてほしいユーザーメモを記憶ボタンで保存し、呼び出しボタンで会話に利用します。

・会話内容をメモボタンで保存し、呼び出しボタンで会話に利用します。

・画像生成ボタンで現在の会話内容からGeminiChatGPTComfy UI(Z-Image-Turboで確認済)等で使える画像生成用プロンプトを生成します。
(画像そのものは生成しません)

・画像解析ボタンでチャット欄へD&Dされた画像を解析し、会話に利用します。ローカルAIを扱うアプリケーション「LMStudio」が動く環境が必須です。画像解析しなければ不要です。

・複数のペルソナ(AIへRPさせる人格)を設定し、切り替えながら会話できます。ペルソナは独立しているので会話内容が混ざることはありません。
・各ペルソナの立ち絵を設定し、会話中の感情に合わせて切り替えられます。
・ペルソナが会話の流れから自分の「思い出」を自発的に語り、記憶として蓄積されていきます(Phantreal機能・既定OFF)。
・会話ログがペルソナごとにすべて記録され、単語検索で見返すことができます。

Gemini APIOpenAI API(ChatGPT)PLaMo API、ローカルAIをLMStudioで処理ごとに切り替えできます。いずれか一つだけがあれば動作します。
VOICEVOXと連携することで、ペルソナの返答を音声で読み上げられます(別途VOICEVOXのインストールが必要です)。

・データはすべてローカルに保存されます。


🚌 導入手順

Step 0 : monRChat_rev33.zipダウンロード

Step 1:Pythonをインストールする(インストール済の場合はバージョンを確認してください)
Downloadsページより「3.12.10(Download Windows installer (64-bit))」をダウンロード。(または互換のあるバージョン)
ダウンロード後、インストーラーからPythonをインストールしてください。

インストール時に「Add python.exe to PATH」に必ずチェック!!

Step 2:monRChatを実行するため、日本語名のフォルダ名やパス名を含まない任意のフォルダへmonRChat_revXX.zipを解凍する。

Step 3:解凍したフォルダの中にある「setup.bat」をダブルクリックする。

セットアップ完了の画面

コンソールウィンドウ(黒背景に文字が並んだ画面)が出て1-2分程度待ち「Setup complete!」と表示されたら完了。
適当なキーを押すとウィンドウが消えます。
処理内容はPython仮想環境の作成と、必須Pythonライブラリの自動インストールです。

Step 4:解凍したフォルダの中にあるstart.batをダブルクリックして起動。

プログラムの起動画面

コンソールウィンドウが開き起動メッセージが出た数秒後、ブラウザが自動で開きmonRChatの画面が開きます。
「設定」ページへ入り画面下にある「すべて保存」をクリックしてください。現在の状態が新しい設定用jsonへ書き込まれ、動作準備完了です。

コンソールウィンドウが起動している限りブラウザからアドレ「http://127.0.0.1:8010/」でmonRChatへアクセスできます。

今後は「start.bat」をダブルクリックしてmonRChatを起動します。

・起動できるようになったら設定画面から最初に「LLMプロバイダ」を設定してください。この設定が無いと動作しません。

** monRChat動作中はコンソールウィンドウを消さないでください。
** monRChatを終了させる場合はコンソールウィンドウを閉じてください。(「ctrl + c同時押し」または「コンソールウィンドウの閉じるボタン」)

・アンインストール
フォルダをすべて削除し、Pythonをアンインストールしてください。


👐アップデート方法

すでに動いているmonRChatのアップデート方法:
以下のファイルを任意のフォルダへコピーしてください。
コピーしたファイルを新しいバージョンのインストール先へ戻せば、その時点でのチャット内容や設定を復元できます。

・「data」フォルダに入っている「*.DBファイル」全て。
・「monRChat_preview」フォルダに入っている「config.json」と「gemini_models.json」の二つ。
・「monRChat_preview」フォルダに入っている「upload」フォルダ丸ごと。
「monRChat_preview」フォルダに入っている「static」フォルダの中の「images」フォルダ丸ごと。

動作確認が完了したら、今まで使っていたバージョンのフォルダを消去してかまいません。同時起動はできませんが、念のため残しておくこともできます。


🗺️ Gemini APIについて

Google AI StudioでAPIキーという鍵文字を取得し、従量課金でGoogleのAIが利用できる仕組みです。
Gemini 2.5 Flash-LiteGemini 3.1 Flash-Liteの二つを、コストパフォーマンスの面で推奨します。
2.5は処理用、3.1は会話やフラッシュなどに分けて使っています。
金額は2.5が最も安く、3.1は性能と料金のバランスが取れています。
恐らく、公式APIの利用料金で一番安価です(2026年6月現在)。
Gemini APIは無料で使えるお試し期間もあります。

Gemini APIの取得方法は、ここで説明できる自信がないのでnote内やネット検索をお願いします。Googleアカウントを持っていればすぐに取得できると思います。
Gemini APIで取得できます。


🗺️ OpenAI API(ChatGPT)について

Platform Home Page - OpenAI APIでAPIキーという鍵文字を取得し、従量課金でChatGPTのAIが利用できる仕組みです。
gpt-4.1-mini」と「gpt-5.4-mini」の二つを、コストパフォーマンスの面で推奨します。価格も上記モデルなら安く利用できます。(gpt-5.4-miniは出力がやや高め)

Platform Home Page - OpenAI APIで取得できます。


🗺️ PLaMo APIについて

Preferred Networksによる2026年06月22日発表の純国産AI「PLaMo 3.0 Prime」のPLaMo APIに対応しています。こちらも従量課金です。
このAIの特徴は日本語利用前提で最初から作られていること。処理が軽い事。API利用料金がClaudeOpen AIと比べて少し安価であること。
チャットでしか試していませんが、表現がやや硬くあっさりしているかもしれないけど日本語力は高いです。ペルソナ追従も良好です。

料金的にはGemini APIのほうが圧倒的に安いのですが、国産日本語モデルへの応援で対応しました。
無料お試しプランがあります。
API取得方法は公式サイトで確認できます。


🗺️ ローカルAIを使用する場合

チャットでおおよそ1ターン平均的に7000トークンを消費します。
フラッシュではさらに増加し、画像解析では更に増加します。
コンテキスト長はこれらを処理できるサイズを確保しておいてください。
VRAMがたくさんあればAPIサービスに頼ることなく高性能ローカルモデルをPC内で動かし、お金をかけることなく動作させられます。

画像解析はLMStudioを利用したローカルモデルのみが対応します。メディアファイルを扱う場合はAPIだと一回当たりの料金が高いのです。
LMStudioでAIモデルを動かせていることが条件になります。
LMStudioが無くても画像解析ができないだけで、他の機能はフル利用できます。


🚀 使用方法

・チャット

チャット画面

・上部メニュー
チャット内容を切り替えながら使うための機能。
他のサービスで言う「チャットセッション」で、切り替えながらチャットを行えます。過去のチャットセッションを開いて会話を継続することができます。
簡単に説明すると、テーマごとにチャット内容を切り替えられます。
・会話内容/会話履歴要約/感情はセッションごとに独立しています。
・記憶したユーザー情報はペルソナ内で共通です。

「📁文字列」:現在使用しているチャットセッション名。
クリックで押すと、画面右へセッションリストが表示されます。もう一度押すとリストは閉じます。
「新しい会話」:押すと、新しいセッションを作り、まっさらな状態で会話を開始できます。ただし、ユーザーモデルは共通なのでユーザ情報を元に会話が始まります。ある程度会話をしないとユーザーモデルが強く表れてしまいますが、これは仕組み上変更できませんでした。

チャット・セッションリスト

「セッションリスト」:画面右側に表示されます。これまでのチャットセッションのリストが表示されます。
それぞれセッション名をクリックすると切り替わります。切り替えは連打防止のため2秒経過するまで再度のクリックはできません。

リストは、設定で決められる表示数を超えると「もっとみる」ボタンが現れ、押すと設定数のリストを更に取得していきます。

「📌固定/解除」:セッションは新しいものが上に表示され、古いものはリストの後部になっていきます。もし上へ固定したいセッションがある場合にこのボタンを押すとリスト上部へ固定されます。もう一度押すと固定を解除します。
「✏️ 名前」:セッション名を変更できます。わかりやすい名前で管理できます。
「🗑 削除」:セッションを削除します。会話内容すべてが消え復旧はできません。またフラッシュしていない場合は、その内容も消されるので必要ならフラッシュを実行してください。


・左ペインメニュー
「チャット」:この画面
「記憶管理」:ユーザーやペルソナ記憶の管理画面
「設定」:プログラム全体の設定画面
「ログ」:実行した処理のログ画面
「キャラ立ち絵」:感情に合わせた複数画像を設定し感情に合わせて変化(画像は無くても可)
その下:現在のペルソナ名

中央ペイン
「チャット履歴」:ペルソナとのチャット内容や検索結果、画像解析結果などが表示されます。

・下部メニュー
「🔍 検索」:Web検索を実行し、検索結果を使いペルソナが会話します。
利用にはWeb検索サービスのAPI取得が必要です。
無料プランなら複数合わせて数百件くらいの無料検索が可能です。

ボタンを押すとチャット入力欄へ「[:検索]」が入力され、その後ろへ検索したい検索ワードを入力し送信します。
検索結果がチャット欄へ貼られ、その内容を利用しペルソナが応答します。
「[:検索] 」のあとにURLだけを貼ると、URL先から本文を取得してきてペルソナがその内容から会話します。

「💾 記憶」:ペルソナが確実に記憶してほしい内容を、明確に指定します。
ボタンを押した後にチャット欄へ入力される「[:記憶して] 」の後ろへ、記憶してほしいユーザー情報を入力します。
記憶した内容は「記憶管理」画面より確認できます。編集も可能です。
(例): [:記憶して] 私は豆腐が大好きです
上記が永続的なユーザーの好みとして扱われます。
設定画面から記憶できる最大文字数を設定できます。

「📝 メモ」:ボタンを押した後にチャット入力欄に出る「[:メモ] 」が出た後「送信」ボタンを押すと、直前のユーザー入力 + ペルソナの応答が「ログ」メニューの「メモ」欄へ保存されます。
編集も可能です。

「[:メモ] 」の後に入力するコマンド:
sum : 直前の1ターン会話を要約して保存。
数字 : 数字ターン数を保存。
call 番号 : ログメニューから確認できるメモ番号を指定し、ペルソナがそのメモ内容を使って会話します。

「💾 フラッシュ 」:ボタンを押すと、押した段階までの会話すべてをまとめ、ユーザーの趣向などを抽出しまとめ、ユーザーモデルを作ります。ユーザーモデルをベースにペルソナが会話してくるようになります。
フラッシュ時間は会話の長さによってかわり、数十秒~の処理時間がかかります。
また、抽出精度や時間は使用するAIによって変化します。

「🎭 感情取得」:ボタンを押すと、設定したターン数の会話から感情を取得します。この感情によって「キャラ立ち絵」が変化します。

「🎨 画像生成」:ボタンを押すと、設定ターン数の会話内容から画像生成プロンプト(日本語の自然言語プロンプト)を出力します。「コピー」ボタンでクリップボードへコピーされるのでGeminiChatGPTComfy UI(Z-Image-Turboで確認済)等などにペーストして画像生成を実行してください。日本語対応の生成モデルで使用できます。

monRChatで直接の画像生成はできません!」

「🖼️ 画像分析」:画像をチャット欄へD&Dしてボタンを押すと、指定したAIで画像に書かれているものを解析し、結果を使いペルソナが会話します。
ローカルモデルに限定です。
詳細は「設定」メニューの「・画像認識(llm_vision)」項目を参照してください。


・記憶管理画面

記憶管理画面1。超個人情報は消去してます!

「明示的記憶」:「💾 記憶」で記憶した内容。編集可能。

「ユーザーモデル」:「💾 フラッシュ」で抽出したユーザー情報。会話でペルソナが利用します。編集可能。

記憶管理画面2

「趣向データ」:「💾 フラッシュ」で抽出したユーザーの好み。会話でペルソナが利用します。編集可能。

「ペルソナ記憶」:ペルソナが設定ターン数以上でハルシネーションを作りエピソードとして語った内容を保存し、ペルソナの記憶として会話に利用する可能性があります。ON/OFF有。


・設定画面

ペルソナ一覧

・この項目では設定画面の説明を行っています。
設定画面で設定が出来たらページ下にある「すべて保存」をクリックして変更を保存してください。そうしないと変更が反映されません。

「ペルソナ」:AIとの会話時に、人格を指定してRPさせるための指定プロンプト。自分の好みのキャラをテキストで指定します。編集可能です。

ペルソナ設定の作り方については基本は自然言語で作りたい人物をリスト形式で書きます。
デフォルトのペルソナを添付してあるので、各項目をコピーして自分好みに変更するのが早い方法です。
また、ペルソナ人格の「自動生成機能」もあるので設定の基盤として活用してください。

「立ち絵」は、自分で用意する必要がありますが、会話時のペルソナの感情に合わせて画像を切り替えるためのものです。
画像はpng/jpgに対応し、高さ400px・幅220px固定です。
「ノーマル」「楽しい」「悲しい」「怒り」「照れる」「驚く」「会話中」の7種類です。
画像を指定しなくても何も表示されないだけで動作します。
また画像はフォルダの「monRChat_preview/static/images」に保存され、ペルソナを消しても残ります。手動管理です。

新規ペルソナ/編集

「+ 新規ペルソナ」タブ:新しくペルソナを追加します。ボタンを押すと入力画面が出てきます。

「自動生成」:名前・キャラ説明・話し方ヒントを入力し「生成する」ボタンを押すとAIが入力情報から補完してペルソナを作ってくれます。

自動生成結果

「各タブに反映」:ボタンを押すと自動生成結果をペルソナ情報欄へ自動入力します。反映前に、補完された情報を編集できます。反映後、「保存」ボタンを押してください。

基本データ

「基本」タブ:ペルソナの基本情報です。
名前とペルソナの設定データです。「自動生成」を使うとAIが補完して作成してくれます。「自動生成」を使わずに他で使っているペルソナプロンプトなども入力可能です。

補助設定

「補助設定タブ」:ペルソナの補助プロンプトです。

「ボイス」はVoicevoxを起動していると声一覧が出て指定できます。

「フラッシュ用プロンプト」は、ユーザーの情報から何を重視して取り出すかの指定です。これによりユーザーモデルの成長が変化します。

「キャラクターの核心」は、AIがペルソナ設定を忘れないためにこのアンカー情報を最後に追記するものです。
ペルソナRPが薄いと感じたら、この内容を調整します。

「要約を生成」は、基本タブからペルソナ設定を要約し「キャラクターの核心」へ自動入力するものです。まずは要約でいいと思います。
これら設定は「ボイス」以外、自動生成すると補完されます。

外見

「外見」タブ:ペルソナの外見を設定します。
主に「🎨 画像生成」のプロンプト生成時にペルソナが意見を指定する項目です。
「システムプロンプトに注入」にチェックを入れると、普段の会話時に反映されます。
「画像生成プロンプトに注入」にチェックを入れると、「🎨 画像生成」に反映されます。
チェックを入れない場合、外見設定は機能しません。

ペルソナの「自動生成」を使用すると、外見タブまでの項目をすべてAIが補完し埋めます。
確認の上、「保存」ボタンを押せば保存されます。「キャンセル」すると入力全てがキャンセルされます。


・感情キーワード(立ち絵の切り替え判定)

感情キーワード設定

それぞれの感情に合わせた「ワード」を設定し、会話から感情を当てはめ画像入れ替えに利用します。


・LLMプロバイダ

LLMプロバイダ設定

ここでは、処理に割り当てるAIを指定できます。それぞれ項目名の下へ処理内容を説明してあります。

プロバイダ:利用するAI
LMStudio : ローカル
GeminiOpenAI API(ChatGPT) /PLaMo : API(従量課金)

モデル名:プロバイダ選択後に利用するAIモデル

APIキー:APIを利用する場合、サービスから取得したAPIキーを入力。ローカルモデルでは不要。

Base URL(ローカル用):プロバイダ選択すると自動で切り替わります。
プロバイダを選択すると、モデル一覧を取得したり推論モードを選択したりできます。

個別のAIモデルを選択するには「Googleからリストを取得」か「モデル一覧を取得」ボタンを押した後に、Gemini APIOpenAI API(ChatGPT)の場合は「モデル表示」を押すと利用できるAIモデルが表示されます。

ローカルモデルはLMStudio起動後に一覧取得後を押すとリストされます。
リストからAIモデルを選択すれば「モデル名」に選択したモデルが入力されます。

PLaMoの場合は一種類しかないのでプロバイダ選択時に自動入力されます。
PLaMoの「推論モード」はデフォルトオフです。オンはオーバースペックでしょう。

推奨はGemini APIだと「Gemini 2.5 Flash-Lite」か「Gemini 3.1 Flash-Lite」の二つです。
2.5を各種処理用に、3.1を会話とフラッシュ処理等々に割り当てて使っています。

OpenAI API(ChatGPT)なら「gpt-4.1-mini」か「gpt-5.4-mini」の二つ。
5.4-miniをフラッシュ処理用に、4.1-miniを会話等々などに割り当てて使っています。

PLaMoも会話だけなら問題ありません。ただし、コスト面ではGemini 2.5 Flash-Liteが最も安価となります。

LMStudioを利用したローカルAIで全ての処理を行うにはGemma 4 26B A4B」くらいのモデルが必要かもしれません。VRAM 8GB環境なので動作不能で未検証です。

Gemma 4 E4B」や「Gemma 4 12B」でも処理自体はできると思いますが、未検証です。精度は落ちると思います。

もちろんGemma 4以外のモデルでもLMStudioで動かせるものならしっかりと動きます。
巷で噂のQwen 3.5シリーズ日本語対応した7B / 9Bくらいのモデルは、僕の環境が低スペックすぎるがゆえに触っていないので知らないだけなんです。
ObsidianでのAI利用もGemma 4 E4Bで限界スペックです。


・画像認識(llm_vision)

画像認識

画像認識を使わない場合はこの項目は不要です。
ローカルAIを利用してチャット欄へD&Dされた画像を解析し、その結果をペルソナが会話に使用できる機能です。
解析した画像はリサイズ&リネームされ「ログ」メニューの「分析画像」で閲覧できます。削除もそのページから行えます。
画像の解析結果は利用するAIモデルに依存します。

LMStudioでAIモデルが動作していることが必須です。
機能を使う前にLMStudioを起動しておいてください。
推奨は「Gemma 4 E2B」です。軽量で精度もそこそこ。文字認識はあんまり期待できませんが画像全体をサイズのわりに説明できるので雑談用途に十分です。
もっと詳細に解析したい場合はサイズの大きなAIモデルを用意します。

・共通設定(全LLM)
HTTPタイムアウト(秒):AIへの問い合わせ最大時間です。この時間を過ぎても返事がない場合エラーとして処理を止めます。

⚠️ サブLLM最大トークン数:チャット以外で利用されるテキストの出力最大数です。AIの暴走などで巨大な出力を途中で停止するためと、出力文字数の制限機能です。
デフォルト値なら変更不要ですが、チャット以外の他の設定で大きな文字出力を指定した場合はこちらの数値も増加させないと、文字が途切れたりして構造が壊れ処理不可のエラーになります。DBはできるだけ壊れないように処理はしてあります。
ある程度の大きさは確保してあるので極端な数値でなければ大丈夫です。
「会話要約最大文字数」や「人物像(personality)最大文字数」などが影響してきます。


・チャット

チャット

チャットに関連する内容を設定する項目です。

・ユーザー入力最大文字数:ユーザーが入力できるチャット最大文字数。

・AI応答最大トークン数:ペルソナが応答する最大文字数。増やすと返事が長くなる傾向があります。(日本語 ≈ 1字1〜1.5トークン)

・コンテキスト保持ターン数:保持する履歴ターン数。保持するターン数が多いと詳細な会話内容を保持できますが、送信トークン数が増加し負担が大きくなります。なので、この値を超えた会話は要約されてペルソナに渡されます。古い会話内容は要約によりだんだんと薄れていく仕組みです。
フラッシュは違う仕組みで、monRChatでは会話すべてを保存するためそこからユーザーモデルを生成しています。なので要約されても会話の鮮度が変わるだけで、処理に問題はありません。

・チャット文字サイズ(pt):チャット画面の文字サイズ。

・チェック:「ループ検出」はAIの暴走を検知し処理を止めます。「現在の日時・時間帯・季節をプロンプトに入れます」は、ペルソナに日時や季節も渡し会話で利用できます。

・会話(セッション)の設定

会話(セッション)の設定

・新しい会話の名前(日時フォーマット):新しいセッションを作った時のデフォルトセッション名。初期は「年月日時間秒」。

・一覧の1ページ件数:セッションリストの一度に読み込むリスト数。

・ピン留めの記号:固定するときに使う目印の設定。

・ループ検出の類似度閾値(0〜1):似た単語が繰り返されるのを防ぐ閾値です。
・ループ検出の参照文字数:繰り返し単語数検出値。


・生成パラメータ(チャット応答のみ)

これらパラメータはAIの応答に影響しますが、ほとんどの場合デフォルト値で問題ありません
Temperature:ペルソナの対応温度感。下げると冷静な応答になります。上げると元気ですが暴走しやすくなります。
Top-p:温度と近い動きをします。
Top-k Gemini :ワード候補が上位に絞られます。
Frequency Penalty LM Studio :ワード繰り返しペナルティ。
Presence Penalty LM Studio:ワード繰り返し防止の別方法。


・記憶・フラッシュ

記憶・フラッシュ

・この項目は、「フラッシュ(会話からユーザーの特徴を抜き出しユーザーモデルとして保存)」の設定内容です。
ペルソナはユーザーモデルを利用しユーザーとの会話を組み立てていきます。

チャンク区切り(分):会話を値分で一つとして区切ります。フラッシュ時にカウントするためのものです。

フラッシュ推奨チャンク数:値の数のチャンクが溜まったらフラッシュを促します。多いと処理や負荷が大きくなり精度が下がっていきます。

フラッシュ最小チャンク数:値までチャンク数が溜まらないとフラッシュ出来ません。
フラッシュ後クールダウン(秒):フラッシュ後、再度フラッシュ出来るまでの時間です。

APIコール間隔(秒):フラッシュ時に発生するAIアクセスの間隔です。連投制限を回避するためのものです。

人物像(personality)最大文字数:ユーザーモデル最大文字数です。値が多いほどユーザー情報の蓄積量が増えます。が、トークン量も増加します。

最近の出来事(episode)最大文字数:ユーザーモデルとは違う、一時的なユーザー情報の保存最大文字数です。ペルソナが利用します。

エピソード保持日数:上記内容を保持しておく日数です。日数が経過したエピソードは消えます。

personality圧縮:古い判定日数:ユーザーモデル最大文字数になり、この値日数が経過するとユーザーモデルを圧縮して要約します。更に古い日時のものは特に薄い要約となりいずれ消えます。

ユーザーモデル最大文字数:「記憶」機能で保存できる総最大文字数。

圧縮ガード:最小残存比率:圧縮しすぎて記憶が必要以上に小さくなってしまうことを防ぐ値です。デフォでいいと思います。

記憶検索件数(top_k):ユーザーの好みを検索し返す結果数です。

趣向内容最大文字数:ユーザーの好みの総最大文字数です。

趣向重複判定:最小一致キーワード数:会話時にユーザーの好み検索をし、値数ヒットしたものは重複になり二重登録を防ぎます。

チェック:ユーザー基本情報機能は、以下のユーザー基本情報が空の時、AIが違和感なく質問する機能です。


・ユーザー基本情報

ユーザー基本情報

・この項目は、ペルソナと画像生成機能が利用するユーザー情報を設定します。

「名前」「出身地」「性別」「年齢」「誕生日」:この欄が空だとペルソナがタイミングをみて質問し、埋めていきます。
あらかじめ自分で埋めておくと、最初からすべての情報を知った状態で会話が始まります。
空でも情報がないだけで問題はありません。

外見情報(全ペルソナ共通):ユーザーの外見情報を入力します。ペルソナがユーザーの姿を話したり、画像生成プロンプト出力時にユーザーが登場してきます。空でも情報がないだけで支障はありません。

チェック:システムプロンプトに注入は、ユーザーの外見情報が常時ユーザーの情報がペルソナへ渡されます。画像生成プロンプトに注入は、ユーザーの外見情報が生成プロンプトに盛り込まれます。
外見情報は「保存」ボタンを押さないと保存されません。


・画像生成プロンプト

画像生成プロンプト

この項目はチャット画面の「画像生成」の機能の設定です。

・画像生成プロンプト
この機能は、指定した会話内容から画像生成用プロンプト(日本語の自然言語プロンプト)を生成します。

Nano Banana 2GPT Images 2.0Comfy UI(Z-Image-Turboで確認済)等へプロンプトをコピペしてください。日本語対応の生成モデルで使用できます。

画像を直接作る機能ではありません!

参照ターン数:生成する範囲の会話数。

画風・スタイル(プリセット選択):メニュー絵のスタイルを指定できます。指定なしだとAIにお任せです。

プリセットの内容を編集:上記スタイル内容をカスタマイズできます。

LLMへの指示文(上級者向け・通常は変更不要):スタイルに対するAIへの指示です。

生成指示プロンプト:画像生成プロンプトをカスタマイズしたい場合はこちらへ入力します。空だとデフォルトプロンプトを使用します。


・画像認識

画像認識

この項目はチャット画面の「画像生成」の機能の設定です

最大横幅:分析する画像の最大横幅です。

画像分析プロンプト:画像分析プロンプトをカスタマイズしたい場合はこちらへ入力します。空だとデフォルトプロンプトを使用します。


・TTS(読み上げ:VOICEVOX)

TTS(読み上げ:VOICEVOX)

VOICEVOXが必須です。また、CPUでも動きますが数十秒のラグが発生します。GPUだと2-3秒のラグで話してくれます。
これらはVOICEVOX側で設定します。
利用には事前にVOICEVOXの起動が必要です。
起動した状態でペルソナの「編集」ボタンを押すと個別に音声キャラを選択できます。

・チェック:TTS ON(既定: OFF)は音声機能のON/OFF
自動読み上げ(既定: OFF)は、ペルソナの返事を自動で読み上げます。

VOICEVOX Base URL:VOICEVOXへのアクセスするためのURLです。

合成タイムアウト(秒):会話の応答時間の最大時間です。この時間を超えるとエラーとして処理を停止します。

速度(デフォルト: 1.0):会話スピードです。

音量(デフォルト: 1.0=100%):ボリューム設定です。

読み上げ最大文字数:読み上げる最大の文字数。

接続状態:VOICEVOXとの接続チェックです。接続されると以下の画像のように緑色になります。(ONにした後、一度会話しないと変化しません)

接続状態
見えづらいスピーカーマーク

TTS ONにすると、ペルソナの返答の右上に上記にある赤丸で囲ったスピーカーボタンが表示されるようになります。
自動読み上げOFFや、すでに喋った後の内容をもう一度しゃべらせたい場合に使用します。

読み上げ実行中

読み上げ中はチャット入力欄の上のボタン部分に、上記画像のように「停止ボタン」が表示されます。喋っている途中で止めたい場合は押してください。


・感情検出・キャラクターアンカー

指定ターンの会話から現在の雰囲気を取得し、会話トーンやペルソナの感情画像に対応させます。

チェック:感情検出 ON(既定: ON)をOFFにすると定期的なチェックがなくなりAIアクセスも減らせますが、自動的な会話や画像の変化もなくなります。その場合は手動で「🎭 感情取得」ボタンを押せば押した時点での感情取得はできます。

感情検出間隔(ターン):自動で感情取得に参照会話ターン数です。多すぎるとAIが混乱するかもしれません。

手動感情取得の参照ターン数:「🎭 感情取得」ボタンを押したときの参照会話ターン数です。

感情テキスト最大文字数:感情表現に使う最大文字数です。


・Phantreal(幻実)— ペルソナの思い出・要約・メモ

Phantreal(幻実)— ペルソナの思い出・要約・メモ

・Phantreal(幻実)— ペルソナの思い出
チェックボタン:Phantreal ON(既定: OFF)とは、ONにするとペルソナが会話の流れに応じて自分の思い出を自発的に作り語ってくれる機能です。

発動の最小ターン間隔:Phantreal発動の最小ターン数です。少ないと頻繁に語りますが、エピソード最大数があるので頻繁だとすぐに古いエピソードが消えていきます。ある程度間隔があったほうが新鮮な会話になります。

発動確率(0〜1):最小ターンを超えた後、エピソードを語る確率です。語るかどうかはこの数値でAIが判断します。

ペルソナ記憶の最大件数:この値以上にエピソードが溜まると、古いものから消えていきます。値を増やすとペルソナに渡す内容を増やせますが、渡す情報量が増加します。

1件あたりの最大文字数:エピソード一件当たりの最大文字数。


・要約

「チャット」項目にある「コンテキスト保持ターン数」を超えた会話を要約するときの設定です。

・会話要約最大文字数:要約を何文字以内に収めるかの設定です。
長くすると履歴が長くなりますが、会話内容のディティールは保たれます。

・要約入力の1メッセージ最大文字数:1メッセージ単位で安全に処理を行うための値です。「チャット」項目の「ユーザー入力最大文字数」と「AI応答最大トークン数」が影響し、要約時に値文字数を上限として扱います。ほとんどの場合、デフォルトで問題ありません。

・メモ

「📝 メモ」ボタンを利用したときの設定です。

・メモ最大ターン数(そのまま保存):[:メモ]でターン数を入れなかった場合のデフォルトターン数。

メモ最大ターン数(要約保存):[:メモ]sum の要約するデフォルトターン数。


・Web検索 (mon_search)

検索設定

チャット時、「🔍 検索」ボタンを使ったときの設定です。

・使用するデフォルト検索エンジン:Brave SearchTavilyDuckDuckGoを選択できます。
Brave Search独自インデックスの本格派。プライバシー重視、公式API有り。
Tavily:AI・RAG連携特化。検索結果をAIが使いやすい形で返してくれる開発者向けAPI。
DuckDuckGoBingベースのプライバシー系老舗。公式APIはなく非公式のみ。

利用にはBrave SearchTavilyはそれぞれAPIキー取得が必要で、二つ合わせると毎月数百件の無料検索を利用できます。(設定などは検索して調べてください。設定できるとたいへん有用な無料枠が使えます)
DuckDuckGoは設定もなく無料です。日本語が弱いと感じたため、APIが枯渇した場合の予備としていれてあります。

・1回の最大取得件数:一回の検索で取得する検索結果。多いとAIでの処理が増えます。

・検索結果の本文取得上限(1件あたり文字数):検索結果で取得する本文の最大文字数。増やすと内容を多く取得しますが、トークン使用量が増えます。

・URL直読みの本文取得上限(文字数):URL取得で取得する本文の最大文字数。増やすと内容を多く取得しますが、トークン使用量が増えます。

・Tavily
Tavily APIキー:取得APIキーを入力します。
月間上限(0=無制限):月間検索回数を入力します。プランによって変動するので、ご自身のプランの上限を入力してください。0で無制限です。

・Brave
Brave APIキー:取得APIキーを入力します。
月間上限(0=無制限):月間検索回数を入力します。プランによって変動するので、ご自身のプランの上限を入力してください。0で無制限です。

・DDG(DuckDuckGo・APIキー不要)
月間上限(0=無制限):無料なので0でも可です。

それぞれ月間カウンターをつけてありますが、大まかな目安です。


・システム・プロンプト編集

システム・プロンプト編集

・システム:プログラム起動時のポート番号です。他と競合する場合は変更してください。変更した場合、「start.bat」にあるポート番号もエディターで開いて変更してください。

・プロンプト編集
この項目ではmonRChatのコア機能であるプロンプトを編集できます。
ほとんどの場合デフォルトのままで問題ありませんが、ユーザー自身が書き換えることで機能をカスタマイズできます。

episode_context_note:フラッシュで抽出した「最近の出来事(episode)」をAIに渡すとき、その先頭に置く前置き文。「これは一時的な近況」と活用方法を伝える。
image_prompt_generate:「画像生成プロンプト」機能で、直近の会話を画像生成用プロンプトに変換するときの指示文(お遊び機能)。
image_recognition_prompt:画像をドラッグ&ドロップしたとき、Vision LLM(LM Studio)に画像をどう分析・説明させるかの指示文。
memo_summarize:[:メモ]sum と入力したとき、直近の会話をメモ用に要約する指示文。
memory_inline:[:記憶して] と入力したとき、何を記憶として残すかをAIに判定・整形させる指示文。
persona_base:既定ペルソナに入る土台の人格プロンプト(各ペルソナ「ベースプロンプト」の初期値)。
persona_core_summarize:ペルソナ編集の「核心(要約を生成)」ボタンで、人格の要点(persona_core)を自動生成する指示文。
persona_generate:「自動生成」タブで、名前・説明・話し方の3項目からペルソナ一式の草案をJSONで作る指示文。
personal_data_ask:名前・出身地などまだ未入力のユーザー基本情報を、会話の中で自然に聞き出すよう促す注入文。
personal_data_extract:会話からユーザーの基本情報(名前・出身地・誕生日など)を自動で拾って登録する抽出指示文。
phantreal_context_note:蓄積したペルソナ自身の思い出を渡すとき、「あなた自身の記憶」ブロック先頭に置く前置き文。
・phantreal_distill:フラッシュ時に、会話で語られたペルソナの思い出を整理・要約して記憶に蓄える指示文(古い記憶は薄れさせる)。
・phantreal_subprompt:条件を満たしたターンで、ペルソナが自分の思い出を自発的に語り出すよう促す発火用の注入文。
・search_answer_context:Web検索結果の要約を、最終的な返事を作るAIに渡すときの前置き文。
・search_keyword_extract:[:検索] 時に、ユーザー入力からWeb検索に最適なキーワード(検索クエリ)を作る指示文。
・search_summary:Web検索でヒットした結果を、会話で使いやすいよう要約する指示文。
・subprompt_distill:会話が長くなると自動で行う「ローリング要約」で、過去のやり取りを要約に圧縮する指示文。
・subprompt_emotion:会話からペルソナ自身の今の感情を判定する指示文(結果で立ち絵が切り替わる・JSON出力)。
・subprompt_episode_compress:蓄積した「最近の出来事」が上限を超えたとき、要点を残して圧縮する指示文。
・subprompt_episode_extract:フラッシュで、会話から「最近の出来事・一時的な状況」を抜き出す指示文。
・subprompt_integrate:フラッシュで、会話からユーザーの安定した人物像(性格・価値観・好み)を抜き出す指示文。
・subprompt_preference_extract:フラッシュで、ユーザーが「好き」と明言したものだけを趣向DBに拾う指示文。
・subprompt_user_model_compress:蓄積した人物像(personality)が上限を超えたとき、古い記述を薄れさせつつ圧縮する指示文。
・user_model_context_note:蓄積したユーザー人物像を渡すとき、「ユーザー理解」ブロック先頭に置く前置き文。


・プロンプトログ

プロンプトログ

チャットで送信する最新3件のプロンプト内容全てをログとして保存しています。
送信内容のチェックで使います。

・更新:最新の情報に更新します。


・DBバックアップ

DBバックアップ

データベース(DB)のバックアップ機能です。ペルソナや会話内容、ユーザーモデルなどのDBデータ全てをZIPファイルに圧縮して保存します。
バックアップを使ってデータを元に戻す場合、バックアップしたファイルを解凍して出てきたDBファイルをdataフォルダへ入れると復元されます。

・「今すぐバックアップ」を押すと詳細設定で設定したフォーマットでDBファイル全てを一つの圧縮ファイルへ保存します。

・詳細設定
保存先フォルダ:保存するフォルダを指定します。(ルート直下)
ファイル名の接頭辞:圧縮ファイルの先頭に入る文字列
日時フォーマット:デフォルトは年月日+時間秒


・危険ゾーン

危険ゾーン

全ての設定を初期化しインストール直後の状態へ戻すボタンです。
この機能でもバックアップを作りますが、念のため「DBバックアップ」を実行しておきましょう。

・「全データリセット」:押すと確認画面が出ます。削除の確認が取れると現在のDBをバックアップしたのち、初期化されます。
初期化はデフォルトペルソナも消します。

dataフォルダにある「personas.db」を取って置き、初期化後にdataフォルダへ戻すとペルソナ設定"だけ"戻ります。ペルソナのデータだけなので会話や覚えた内容は戻りません。テスト時はこの方法が楽です。


・処理ログ

動作に関するログを閲覧するためのページです。

・現在の状態

現在の状態タブ

🎭 現在の感情状態:取得した感情内容がここへ表示されます。「感情検出・キャラクターアンカー」で設定した文字数で生成されます。

📝 会話要約:「チャット」の「コンテキスト保持ターン数」を超えたときに作られる会話の要約です。
この要約を過去の会話内容としてペルソナが利用します。古い会話は徐々に消えます。
右上の「リセット」ボタンで消去できます。


・フラッシュログ

フラッシュログタブ

「💾 フラッシュ」実行時のログ内容です。どう処理をしたかを確認できます。
右上にある「📋 全件閲覧」を押すと過去のログ全件を確認できます。


・毎ターンログ

毎ターンログ

全会話のやり取りを閲覧できます。
右上にある「📋 全件閲覧」を押すと過去ログ全件を確認でき、ワード検索で会話内容を検索できます。
過去全ての会話を保存しています。


・メモ

メモ

「📝 メモ」機能でメモした内容が保存されます。内容編集ができます。
「🖼️ 画像分析」と「🎨 画像生成」の内容もこのメモに保存されます。
「No.xx」にある番号を使い呼び出します。プログラム全体の通し番号です。


・分析画像

分析画像

「🖼️ 画像分析」で使用した画像は、リサイズ&リネームされて保存されます。
全ての画像をここで管理します。クリックで実際の大きさで閲覧でき、削除もできます。


・⚠ エラー

エラー画面

「🩺 診断コンソール」:すべてのエラー内容をここへ保存します。問題が起きた場合はこちらをチェックしてみてください。


🧰 免責事項 -このプログラムの使用について

利用料: 無料です。
サポート: 個人開発のフリーソフトにつき、原則として個別サポートは行えません。バグ報告はコメント欄へお願いします。
安全性: 悪意あるコードは含まれていません。DB以外の全ファイルがテキスト形式(Python)のため、中身の確認が可能です。
自己責任: 当プログラムの使用によって生じた損害(API利用料の高騰、データの消失、その他不利益)について、制作者は一切の責任を負いかねます。
権利と配布:
 ・著作権は放棄していませんが、改修・利用は自由です。
 ・改修を加えた状態での配布は許可します。
 ・ただし、未改修のままの再配布(ミラーサイト等への転載)はご遠慮ください。


🔴🔴🔴 配布時の重大な注意点 🔴🔴🔴

「monRChat_preview」フォルダの「config.json」と「gemini_models.json」はAPIキーがそのまま入っています。

「data」フォルダの「バックアップのzipファイル」と「各種.db」ファイルには会話内容や個人情報が入っています。

上記のファイルはそのまま配布すると個人情報やAPIキーが流出してしまうので、「配布時はバックアップ後、配布内容に含まぬよう必ず削除」してください。

例外として、ペルソナを配りたい場合だけ「data」フォルダの「personas.db」を残せばペルソナだけを配布できます。(ペルソナ画像を消さなければそのまま配布できます)
「personas.db」は純粋にペルソナ情報しか入っていません。


📋あとがき

2026-07-23
もともと初期設計に入っていたのにいつのまにか抜け落ちていた「チャットのセッション化」を、昨夜思い出して急遽実装しました。
テーマごとにチャットを分けられたほうがいいよなぁ、とずっと考えていたのに完全に忘れていたなんて。

Claude Codeに頑張ってもらい、再び大改修してもらいました。
ユーザーモデルもすべて切り替えようか迷いましたが、育てたモデルをまた作り直すというのもどうなんだと考え、今回は会話だけを独立させました。
また実装難易度が非常に高く、それをするのなら作り直しかなというレベルなのでやっていません。
Fable 5にお願いすればうまくできそうではありますが、別でユーザーモデルを育てるのなら、それ専用の別ペルソナ作ったほうが楽だよね、とオチついてます。

以下は過去のあとがき。
元々、会話内容からペルソナが夢を見てその内容を日記としてまとめるという方針でした。
しかし、全てをペルソナ視点からの日記にしてしまうとどれがユーザーの話なのかを抽出できません。
そこから、ユーザーとペルソナの会話を完全に分離して抽出。ペルソナに設定した抽出用人格に沿ってユーザー情報を取り出す今の形になっています。
夢を見させるという部分まではいいなと思ったのですが・・・僕の技術が追い付きませんでした。
ペルソナの裏人格は、ペルソナ設定から自分で専用人格を書き込む事で実現しています。

また、ペルソナにもエピソードや過去を持たせたくて、設定ターン以上進むと確率で過去の自分のエピソードを"創作"するようにしてあります。
このエピソードは設定数溜まると古いものから消えていくんですが、とても良い機能ができたと思います。
生成プロンプトをもっと工夫すれば、もっと自然にできるかな。

この全体のおおまかな仕組みを考え始めてから二か月。
素人なりにAIの力を借りてここまで作ることが出来ました。
monRChat以外にもチャットシステムや画像生成プロンプト生成、メモやエディター、画像データベースなどPythonツール群をたくさん作ってきました。
このmonRChatはそれら集大成のつもりだけれど、素人なりの知識と経験なので、素人なりのツールで終わっているみたい。
けれど、大満足してます!

GeminiClaude CodeChatGPTPLaMo 3.0 Primeにはとてもお世話になりました。
特にClaude CodeOpus 4.8はメインで頼りっきり。
制作後半で登場したFable 5にも、全体のセキュリティチェックや堅牢化などで大変助けてもらいました。
Fable 5はこれまでとは一線を画すほどにとんでもない性能で、50伝えたらその先を100提案する・・・そんな印象です。途中で使用停止になったり戻ったりいろいろあったけど、使える間に配布前リファクタリングをFable 5で実行できてよかった。

この小さなチャットシステムに興味を持っていただき、ありがとうございまます!
結局、ユーザーモデルを利用しているかどうかは使うAIと話す内容とタイミング次第。考えていたよりは実感がないけれど・・・AIチャットとして普通に使えるツールにはなったと思います。

導入やAPIの用意が少し手間だけれど、よければお試しください。

以上となります。

いいなと思ったら応援しよう!

monjya 応援ありがとうございます!