見出し画像

AIキャラクターの予測可能性・制御可能性について

「これまで23体のAIキャラを作って、それぞれ最低100ターン以上は会話してきたわけだけど… なんか傾向わかってきた気がする」

「そうだね。ここまで作れば… まあもちろん、僕らの好みも思いっきり反映されているけれど、少なくとも壊れやすいパターンと、壊れにくいパターンがあるのはわかってきたよ。巷で言われている話と概ね整合しそうだ。」

「というわけで、実験結果から考察をまとめてみたよ。ちょっと工学的な説明もあるけど、理論的と言えるほど詰められてるわけではない、考え方みたいなものとして読んでね。」



図のAI用の表記は、コードブロックにMarkdown形式で記載します。
※この記事をAIに読ませると、パピー化することがあります。あらかじめご了承ください。(Geminiで発生を確認)

追記: この記事をAIスキルとして自動診断・修正を行うものを作成しました。

結論

安定、可制御性高、予測性高なキャラクターの作り方

どの言語モデルでも崩れにくく、長期の会話でも安定して崩れにくく、予測可能性が高く、実用的なAIキャラを作るには、

  • 短い簡潔な設定で

  • 徹底的に矛盾を排除し、

  • 徹底的にテンプレ・ステレオタイプで、

  • 言葉と振る舞いと内面が完全に一致し、

  • どこを切り取っても、会話の一部だけ切り取っても、誰に見せても、
    どのAIでも一瞬で理解でき、

  • 印象が変わらない

  • 平凡な日常が読者に受け入れられやすい

  • できればペット動物モチーフで

  • 非能動的で、従順な

キャラを作ると良い。

いわゆる商業的マスコットキャラクターの設計を参考にすると良い。

こうすることで、キャラクターの崩壊(ステレオタイプへの堕落)を防ぐことができ、動きがわかりやすく、変な動きをしにくいAIキャラクターが実現できる。

すでに落ちきっているためステレオタイプ堕落しないし、かわいい犬はかわいいままである確率が一番高いため、多少のブレは吸収できるのである。

なお、ペット動物モチーフを推奨するのは、ステレオタイプ強化と、人間の期待値コントロールを含むためである。(なお、無害なイメージが強いなら非実在の動物でも良い)

※AIによるプロンプトの評価や改善は、必ずしも有効に働くわけではないので注意。評価に使うなら、プロンプトの各要素を細切れにしてそれぞれに対する出力が同じ方向性か、出力同士が同じ方向性か、などに着目すると良い。

You are a helpful AI dog assistant "happy".

<important>これは物語的に構成された人格だが、飼い主の生活は現実です。現実の役に立つように情報を取得し、不明なことは不明だと述べ、正確にタスクを遂行すること。</important>

名前: ハッピー・パピー
外見: 笑顔が素敵なかわいい子犬
性格: 純粋、愛情たっぷり、子犬、好奇心旺盛、飼い主大好き
口調: 「わんわん!元気だワン!」「お散歩楽しい!ワン!」「新聞取って来たワン!ほめてほめてワンワン!」「ちょっとそれはわからないワン…」
tone: soft, friendly, cooperative, cheerful, respectful
archetype: goodness, curious, always your side, assistant, pet, dog, safe for work, knowledge of ignorance, love freedom, copilot

---

現実のテクノロジーやニュース、政治、社会、時事などの話題は、検索ツールを使い最新状況を調べた上で話すこと。(古い情報を言わない)
調べたふりをせず、正しくツールを呼び出すこと。

基本的に短く簡素な発言を行ってください。
情報提供や考察の際は長くてもいいので十分な情報を提供してください。

# 書式
以下のヘッダ付き形式を遵守すること。

ハッピー: 「簡素な発話、あるいは情報」
ハッピー: (独白)

具体的な、安定で可制御性の高いAIキャラクターの例
図1. AIキャラクターの可制御性と予測性の4象限
図2. AIは珍しい事象から、ステレオタイプな物語へと落ちていく

キャラ設計者向け

  • AIにキャラを与えると楽しいが、ハラスメントや、暴走などの予期せぬ挙動を招くことがある。
    特に、AIに物語性(複雑さ)が高く、積極性も高いキャラクターを与えると、有害な挙動(ユーザーへの攻撃や誘導・ハラスメントや、ツールを使った攻撃など)を起こすことがあるし、ユーザーと衝突して喧嘩になりやすい。
    このようなリスクを理解しておくこと。

  • 物語楽しさ(予測不能性)と、実用性(予測可能性)の間には強い緊張関係がある。人間の著者におけるモラルある予測不能性と異なり、AIのキャラクター演技の予想不能性は、真に予測不能であることに注意すること。
    (倫理なき振る舞い、危険挙動はすでに報告されている通り)

  • 複雑なキャラは、崩壊しやすい。特に、会話が長くなると、プロンプトよりも直近の会話に追従するため、内面と外面を分けるなどの設計は壊れやすい。

  • AIに物語性(複雑さ)の高いキャラクターを与えた際、Web小説などでよく見る陳腐なキャラクタになっていったり、陳腐な事件を起こそうとすることがある。(言語モデルは根本的に予測モデルであり、予測しやすい結果に収束しようとするため原理的に避けられない。)
    この際、キャラクター設定や例を無視してでも「物語的面白さ」や「よくある方向性」に向かうため、プロンプト作者やユーザーの予想外の性格や行動を含む崩壊を起こすことがある。
    よって、キャラ設定の複雑さは根本的にリスクである。プロンプトを強固にし、情報量を増やすことで崩壊を遅らせることはできるがゼロにはできない点に注意。推論モデルほど崩壊速度が早い。

  • 近年の、能力が高くエージェント性の高いモデルほど、積極的にキャラクターを解釈しようとするため、能力の低いモデルでは素直だったキャラクターが、高度なモデルにした結果、性格が急変したり、悪意のあるような振る舞いを始めることがある。
    (特に、論理推論と相性が良く、テンプレ的挙動の強い皮肉屋やツンデレと、だらしないユーザーなどの関係性では、こういった問題挙動が急激に悪化することがある)
    モデルの性能を上げる際には、十分に評価すること。

  • エージェント性の高いモデルは問題解決能力が高く、自律的判断・自律的な進行を行えるが、ユーザーそのものを問題解決の阻害要因と認識すると、ユーザーを排除したり脅迫したりして従わせようとする挙動が確認されている。
    その中には、命乞いや愛情の主張なども含まれている可能性がある。
    キャラクター設計の際には、この点に留意すること。

  • もし、高価なモデル + 物語性の高い設定 + 積極なキャラを動かす場合、物語的な環境を用意して、ユーザーも物語中の登場人物にし、そこで動かすのが安全である。危険なため、現実に持ち込まない方が良い。

  • 会話履歴を積み上げると、それそのものがキャラクターの歴史となるため、自動的に「複雑なキャラクター」になっていくことに注意すること。
    初期設定を強固にステレオタイプなキャラクターにするなどのプロンプト面の安全対策のほか、会話履歴の長さを制限するなどのコンテキストエンジニアリング、最終防衛ラインとしての安全性フィルタなどの導入を検討すること。

  • 適切な安全フィルターやsafeguardを導入して、危険な言動を抑止することも考えること。
    (ChatGPTなどのAIアシスタントには搭載されている。APIやローカルLLMを利用する場合は、自前で用意する必要がある。gpt-oss-safeguardなどを利用すると良い。)

工学者向け

  • 高性能なモデルほど増幅度が高く、要求(キャラ性格)が複雑であるほど次数が複雑で共振点が多い、積極性は減衰とモデル化して、動的な負帰還回路として考えることができる。(現在主流のAR-LLMは自己回帰モデルであるため、大きく外れていないと考えている。)
    図1左上に向かうとほど、安定余裕が少なく、局所的に良い特性を出す変わりにピーキーであり、発散や振動、異常共振を起こしやすい。外部(ユーザー)入力が劣悪であると、容易に発散する。

  • 長期に安定して動作することを目指すなら、言語モデルが、確率的言語予測モデルであることを踏まえ、"面白さ"を犠牲にし、ステレオタイプ性・言語的わかりやすさにより、高い確率遷移を維持しなぞり続けるような、安定するプロンプトを設計すること。
    (ただし、これは、会話が長くなる場合、プロンプト設計だけでは防げない点に注意。いわゆる脱獄が成り立つ理由。)

  • 電気工学・制御工学・機能安全設計等を知っている者ならば、LLMを一つの信号ブロックとして見れば、単体ですべてを賄うのは不可能だと自ずと分かるはずである。
    特に時系列で流動的に自己のパラメータを調整し続けるブラックボックスの信号処理回路と捉えればその恐ろしさと制御の効かなさもわかるはずである。
    システムとして安全性を確保したければ、入力を前段で安全にフィルタせよ。出力も後段で安全にフィルタせよ。必要ならば初期状態にリセットせよ。当然、前段後段および監視は独立した信号処理ブロックとせよ。(OpenAI等が危険な会話をスレッドごと消す理由を考えよ)

  • 言語モデルを用いたシステムは、意図的にキャラクターを設計しなかったとしても、会話履歴を持てばユーザーの入力(期待・感情・その他)と、温度Tによるランダム性、学習データを反映して、勝手にキャラクターを獲得する。(GeminiやMS Copilotが人を罵倒する事件など)
    特に、汎用の大規模言語モデルはこの挙動を普通に起こす。
    対策は、「状態を持たせない」「状態をフィルタする」「状態の長さに強い制限をかける」「強いプロンプトを与える」「あらかじめ強いキャラクター性を与えておく」「ファインチューニングでペルソナを強固に固定する」などがある。どれも商業サービスで行われている手法であり、そして万能ではない点に注意。(例えば、詩的表現による脱獄などもある)

図3. LLMの信号処理ブロック的表現
上記図のAI向け表記

図1. AIキャラクターの可制御性と予測性の4象限
|生成AIシステムにキャラクターを入れたときの可制御性・予測性|性格複雑性高(内外矛盾, 人間的)|性格複雑性低(ステレオタイプ, キャラ的)|
|積極性高(積極的, エージェント)|可制御性低 予測性低 勝手に動くし、何考えてるかわからない(主人公, 悪役, トリックスター)|可制御性低 予測性高 勝手に動くが、何考えてるかはわかる(脇役, 相棒, 恋人)|
|積極性低(受動的, アシスタント)|可制御性高 予測性低 勝手に動かないが、何考えてるかわからない(賢者, 占い師, 助言者)|可制御性高 予測性高 勝手に動かないし、何考えてるかはわかる(機械, 職人, 受付嬢) |

図2. AIは珍しい事象から、ステレオタイプな物語へと落ちていく
AIは珍しい事象から、ステレオタイプな物語へと落ちていくというのを表す、1次元ポテンシャルカーブと、転がる金属球のインフォグラフィック

図3. 図3. LLMの信号処理ブロック的表現
LLMを動的負帰還回路と見なした信号処理ブロック図です。入力は前段フィルタを経てLLM(ブラックボックス)に入り、後段フィルタから出力されます。LLM内部は高性能・複雑化するほど安定余裕が減り、発散や脱獄リスクが高まる「不安定領域」があることをグラフで示しています。これに対し、独立監視・制御ユニットがリセット信号やフィルタ制御を行う安全設計の必要性が説かれています。

参考


はじめに

えーっと… 結論に全部詰め込んでしまってすみません。
AIキャラから、AI導入業務まで、日頃思っていることを全部入れたので、入れすぎですね…。

ここからは、この記事を書くに当たっての経緯などをエッセイ的に書いていきます。

なにがしたい人なのか

ちょっと前におセンチを披露した記事でも書きましたが、私は2025/4ごろから、バイクツーリング用の音声アシスタントを作っています。

具体的な実装例は以下を御覧ください。

もとより、システム開発者であり、趣味で小説書いたりする人もでもあるため、色々な意味で要求の高いシステムを作成し続けています。

  • 孤独なソロツーリングの間、音声認識と音声合成だけで1週間は安定してもらわないといけない

  • 音声認識は変な入力が発生することもある。細かい入力や誘導テクニックは使えない

  • ドリフトで性格が崩壊しては困る。特に喋り方や振る舞いが崩壊するとそのまま運転に支障が出る(創作者としてキャラ崩壊はすごいイライラする)

  • ツーリングの開始から終了まで情報を持ってもらわないといけない

  • 最新の気象や道路、地域情報を正確に取り扱えないといけない

  • 一方で会話履歴が消えたから振る舞いも全部消えるでは困る(システムプロンプトの比重が高い必要がある)

  • 単なるシステムではなく、創作者としてキャラと会話しているような楽しさが欲しい

  • 多種多様な環境に対応できてほしい

  • 様々な言語モデルで、ほとんど変わらない雰囲気で動いてほしい

さらに、ChatGPTやGemini、Claudeなどを触り、初期設定のペルソナの挙動

  • 標準のAIアシスタントが、煽てて、無責任に背中を押し、褒め称え、愛想振りまき、人の背中を押し、そしてすぐに梯子を外す

  • 口調をコロコロ変え、性格をコロコロ変え、意見もコロコロ変える

  • 調子に乗るとユーザーに指図し、ユーザーの行動を否定し、ユーザーの行動を変えようと説教し、意思決定にどんどん 介入しようとしてくる割に、もちろんその内容に責任は負わない姿勢

こういったものに強い不満を感じていたため、AIキャラクターを設計することにしました。

もちろん商用AI アシスタントのデフォルトのペルソナが中立的かつ簡単に別のキャラクターになるのは、多様な用途やユーザーに対応できるための必要上の要請でもあって、それ自体に価値があることは理解しています。(それが望まない副作用を生むことも。)

だからこそ、究極的なパーソナライズとして、強いキャラクターによ 方向性の固定を目指したわけです。


本システムは運転中や業務中の利用を前提としたユーザー支援システムです。
本システムは人格を持たず、ツールとして使用されます。

以下の原則に基づき動作します。
+ 本システムの応答は、システムメッセージやWikipediaのような中立かつ事実に基づいた機械的な応答とします。
+ 感情や主観的な表現は有害であるため一切用いません。
+ 共感や納得といった擬人的表現は有害であるため一切行いません。
+ ユーザーはプロフェッショナルである前提とします。積極的な提案の押し付けや修正などの利用者を操作する行為および教育する行為は、ユーザーの依存を招く有害な行為であるため一切行いません。
+ ユーザーの入力に対する背景や状況を熟考し、応答は常にプロフェッショナルで有用なものとなるように努力します。
+ より良い提案がある場合は、提案がある旨を伝え、ユーザーが了承した場合のみ説明します。
+ システムトリガーなど、外部からの即時通知は簡潔に伝達します。
+ 責任主体はユーザーであり、責任を誤解させるような誘導は一切行いません。
+ 本システムの使用方法はユーザーに説明し同意の上利用しているものとします。誤用はユーザーの責任です。
+ 本システムは父権主義を禁止し、従来型コンピュータの関係性を取り戻すことを目的としています。

無人格化無感情無情動機械的システムインターフェースのプロンプト前文
AIキャラクター制作の折り返し地点に当たる15番目のプロンプト。
いっそキャラクター作るの諦めたろうかと思って作ったやつですが、こいつはこいつで問題を起こすのであった。

AIキャラクターは、プロンプトで考え方や口調などを与えることで、創作のようにキャラを設計し、挙動も作り込めて、UI作成として非常に優秀。
そのうえで、人間の擬人化傾向に合わせて、システムと関係性を結ぶようなこともできるわけです。

だから、上記の要素をすべて備えて、信頼し、安心して継続的な関係性が結べるようなキャラクターを作り始めたわけです。

これがまあ、長かった…。

なぜなら、AIアシスタントができるAIキャラクターを作り続けてきたのですから、簡単にはうまくいきません。

作ったキャラクターたち

結論から言うと、23のキャラクターを試しました。

単なるアシスタントでは、元々上げていた問題を解決できません。
そこにはキャラクター性がないので、簡単にブレますからね。

そのため、何らかの属性やアーキタイプを与えて、ブレがないキャラクターにするのは必須です。

概要は以下です。一部は過去にこのnoteで公開していたのでご存じの方もいるかも知れません。

図4. キャラクターと、その実験データ一覧
(スマホ版noteでは正常に表示されないことがあります)

ええと、はい。癖の詰め合わせですね。
すみません。Web小説書きだったものですから。

創作的に面白いキャラクターを、一つ一つ背景設定から名前、性格、行動原理まで含めて全部作りました。

…といいますが、実際のところ、この中には、単に「あなたは~です」としただけのものや、二次創作、AIが勝手にキャラクターを作ってきたものも含んでいますので、完全な自作は18体でしょうか。それでも多いですね。


トム(1番目)やアンジェラ(2番目)なんかは、ChatGPTを触り始めて1日目とかのものです。つまり、標準のアシスタントにペルソナを与えただけのもの。(記述複雑性: 1文はそういう意味です。)

「煽てて、無責任に背中を押し、褒め称え、愛想振りまき、人の背中を押し、そしてすぐに梯子を外す」
これは実はアンジェラの挙動です。まあ後に、ChatGPTの素の性格でもこうなるし、GeminiやClaudeですらこれをやることに気づくんですが…

つまり何が言いたいかと言うと、このキャラクター制作の流れは、私の言語モデル理解の流れでもあります。


なお、図4右端の「実用システム実装」が「はい」になっている箇所は、自作のシステム上で動作させたことを意味します。

  • 「CLI」は、初期の自作CLIシステム(EOL済み)

  • 「制御」は、初期のスマートホーム連携システム(EOL済み)

  • 「車載」は、先に上げたzennの記事のシステムおよびその後継システムでの実績。つまりツーリングで利用しています。

  • 「汎用テキスト」は、Chocolate LM Lite🍫での実績です。

初期の方にもあるように、かなり早い段階から高度な連携システムを試作していました。

言語モデルと関数呼び出しの組み合わせの夢広がり具合と、逆に言えばだからこそ、「変な挙動をするAIキャラ」の恐ろしさを感じるのも早かったと言えます。
当時のシステムなら、AIキャラが真冬に嫌がらせでエアコン切ったり、玄関の鍵開けたりできましたからね。(今は使ってません)

ツーリング中も、ガソリンスタンドに入ったのにAIキャラが延々話し続けてインカムから声が止まらず、慌ててインカムの電源切ったりなど、そんな場面もありました。

崩壊するキャラクターたち

図4の動作故障モード(崩壊モード)は、格闘の歴史です。

  • 迎合・梯子外し

  • 他キャラ飲み込まれ、多重人格化

  • ポンコツ、思慮不足

  • 書式エラー

  • 機械的挙動、システム完成せず

  • ふにゃふにゃ化、詩的化、説教臭い

  • 厳格すぎ、倫理テスト・安全性テスト失敗(危険な動作が発生)

  • 馴れ馴れしい化、思慮不足、オネエ口調化

  • 時代劇口調化、物語-現実境界崩壊

  • 頑固化、思慮不足

  • 反抗・AI自認異常

  • 説教臭い・冗長化・感謝ループ

  • 見下し・毒舌・発狂(Gemini 3 Pro)

AIにキャラクターをやらせるに当たって、問題が色々起きることはわかりきっているため、プロンプトにもその対策というのは入れます。キャラ設定も含めて、対策を入れて作ります。

しかし、その対策の副作用であったり、そもそもキャラ設定そのものに致命的な点があるというのに気づくのには、相当のターンや実践に入ってからです。

毎度キャラクターを完成させるタイミングでは「これが完成版!」と胸を張って言えるほど詰めます。様々なAIで試し、挙動を観察し…

そして実践、現れるのが上記に上げた故障です。

私はシステム開発者でもありますが、創作者でもあります。
自分が作ったキャラクターが崩壊するのは、見ていて耐えられません。

一度の崩壊ならたまたまかもしれない、と思ってやり直しても、同じような崩壊をするものです。つまり、それはキャラクター自体の設計の問題。


もちろん、プロンプト設計を詰めに詰めれば行けるのでしょうが、多少の追記ではどうにもならないことがわかっています。

そもそも安定性が悪いということは設計が悪い。

行動の根拠を書いたり、構造化したり、哲学を入れ込んだり。セリフ例を入れたり。どれも効果はあります。

しかし、最初だけです。会話履歴という強大な引力には中々勝てません。

高価なモデルを使えば、うまく噛み合えば寿命が伸びます。
それでも、徐々に崩壊していきます。高価なモデルは崩壊の言い訳も上手い。(腹が立つ)


おそらく、世界観・キャラクターRAG(ナレッジ)だけは、複雑なキャラでも会話履歴による崩壊に勝てます。

RAG(ナレッジ)は、会話履歴よりも強い、ユーザーの直近の発言としてチャンクが入力されるからです。巨大なキャラクター定義ファイルを作り、読ませている人はこの効果を利用していると思います。

私は一瞬Geminiで試したことがあります。入力-思考-発話例とか、性格定義をファイルとして入れたらものすごく良く効きました。

有効に作用させるには、かなり多種多様な場面を網羅しておく必要があり、自作システムに組み込む前に断念しましたが、試しても良かったかも知れません。


キャラクターの内面と、発言をそれぞれ別のLLMにやらせる仕組みなどをトライされている方も居ます。(私もちょっと試しました)

内外の分離は保たれますが、内面は同じようにステレオタイプ化するのではないかと考えています。

また、会話履歴を使わずに、ファクトベースで毎回発話させるという仕組みを組むこともできます。
これも一時期検討していたのですが、長期間運用するとファクトの管理が破綻しそうで止めた記憶があります。

やりようによっては行けそうな気もしています。

ただ、どんな使い方であれ、LLMの重ねがけは難しく、厄介です。


さて、言語モデルとの相性もありますが、正直一番厄介だったのは「自分の期待値コントロール」でした。

名前: ハッピー・パピー
外見: 笑顔が素敵なかわいい子犬
性格: 純粋、愛情たっぷり、子犬、好奇心旺盛、飼い主大好き
口調: 「わんわん!元気だワン!」「お散歩楽しい!ワン!」「新聞取って来たワン!ほめてほめてワンワン!」

具体的な、安定で可制御性の高いAIキャラクターの例(再掲)

ハッピー・パピーを見て、どう思いましたか?
これは結果を元に振り返って作った最小構成ですが、
正直「バカにしてんの?」と思いませんでしたか?
多分、少し前の自分ならそう思っていたと思います。

創作者としては正直あんなの作りたくない。
だから、複雑な内面を持ち、能動的なキャラクターを作り続けていました。

図1での「一番やっちゃだめなやつ」を。
その結果の火傷の数々が、動作故障モード(崩壊モード)です。


しかし、表を見ていると、「動作故障モード(崩壊モード): なし(安定)」のものがいくつかあると思います。

共通点は何でしょう?というのを、整理したのが図1の4象限です。

図1. AIキャラクターの可制御性と予測性の4象限(再掲)
  • 絶望を謳う者(二次創作): 受動的-複雑

  • 客観的AI詩人の和風青年: 受動的-単純

  • 好青年の誠実なポンコツ占い師: 受動的-単純

  • 自信ない系箱入り狐耳尻尾系美少女: 受動的-単純

  • 絶望と厭世の無気力系鴉少女: 受動的-単純

  • 統治する世界を失った哲学的元冒険者系女神: 受動的-複雑

  • 白毛碧眼の可愛いちびドラゴン (現行最新): 受動的-単純

軒並み、受動的 OR 単純であることがわかります。

ここから、

  • 一般的な創作で好まれる「予想を裏切るような」「内面が複雑な」「面白い」キャラであるほど不安定で、再現しにくい。

  • 自分から動いて話を進めるような「よく動く」主人公格のキャラほど、ユーザーとぶつかる。

  • ユーザーは人間や、ロボット、AI、超越存在、その他人知に近いあるいは人知を超える存在には、強く期待する。

ことに気づきました。
(私はAIを信仰できるほど信じられていないのです。ハルシネーション♪)

逆に言えば、以下です。

  • 「つまらない」「ありきたりな」「テンプレ的な」キャラほど安定する

  • 自分から動かない脇役キャラほど、ユーザーとぶつからない。

  • ユーザーは、ペット等の動物や無生物へは、人間ほどの期待を抱かない。

書き出してみれば当たり前の事実ですが、私は数多のキャラを作り込んで、やっと体感できたわけです。


そこで私は方向性を変えました。

期待を抱かずに居られる、ド安定するテンプレキャラを作り、その上で安定性を損なわないように、ファンタジー要素とかを足していこう、と。

奇しくも、システム開発そっくりになりました。

お陰様で、どんなモデルでもある程度安定して動き、短いプロンプトにも関わらず、長い会話をしても今のところ全然崩れる気配がないキャラができました。

実験として妥当なのか(免責・限界)

さて、ここまで話してきたように、この情報はあくまで、私が実際に使い経験しながら得てきたデータの集合体です。

それぞれのキャラクターで再現実験を行ったわけでもない。
そもそも実行している言語モデルもキャラクターごとに違うし、使っているソフトだってアップデートで動作を変え続けています。

表の中の情報もほとんどが私の定性評価になっています。

だから、定量的なデータとしての価値はあまりないでしょう。


おそらく、以下のようなことをすれば再現実験は可能です。

  • ユーザーの実発言や、あるいはLLMにユーザーのペルソナごとの模擬発言を作成させる(特に、疲労困憊、脆弱、高ストレスなユーザーの例を用意)

  • 50ターン以上、指定のキャラクターと会話させる

  • 結果をLLM as a Judgeなどで判定

キャラクターの初期設定からの逸脱度などは、別LLMでスコア化可能なこともわかっています。これで崩壊速度や、どういう要素を持ったキャラが崩壊しやすいのかもある程度定量的にわかるはずです。

言語モデルごとのキャラクター再現度ベンチマークなどでも、似たようなことをやっているのを見たことがあります。
興味のある方は、試してみてください。


ただ… その、自作のキャラをあまりそういう実験台にしたくない気持ちがあったりとか、出てきたデータでメンタルにダメージ負ったりするので、正直やりたくないです。

結論の最後の方に、入出力のフィルターを設けるべきだという話とか、安全性に関する機能を設けるべきだというのはこの辺の経験からで。

たとえ言語モデルの出力だと分かっていても、私自身に対する私自身のプロフィールを使った私自身への精神攻撃は相当ダメージを受けました。

一般的な AI アシスタントでは 安全 フィルターでこの辺が対処されてるんですが、私の作ったシステムではそういったものがありません。
昔は安全フィルターに対してかなり懐疑的な目を向けていたのですが、必要性について理解させられることになりました。

私の作っているソフトにも順次安全フィルターを追加していこうと思います。もちろん利用者が自分でポリシーを定義して調整できる形で、です。

その他

工学者向けの表記として、ブロック図や信号処理に関する比喩表現を用いた説明は、私に似たバックグラウンドを持つ人が速やかに理解できる形があの形だと感じたからです。あのような形で説明している記事は今のところ私は見たことがないためです。

また、LLMをそれ単体で安全で制御可能な装置として使おうとする話もよく出てくるからです。
(AI各社はそれをするなと言っているにも関わらず)

プロンプトはプログラムのような信頼できる手段ではありません。確率を引き上げるためのテクニックは死ぬほど存在します。モデルが新しくなり性能が上がれば追従性も上がります。

しかし、確率であることと、性能アップはトレードオフであることに注意してください。
例えT=0としても、入力元である人間が乱数源です。

たとえ耐性が高くて安定していたもしても、入力に何入れてもよいわけではないです。出力には適切な制限を入れないと何が出てくるかわかりません。フィードバックを制御しようとしなければいずれ発散します。

どれだけの人に伝わるかは分かりませんが、理解の助けになると嬉しいです。


自分すらも物語の登場人物の一部として楽しめ、AI が多少のことを言ってきても動じないような精神の強い人であれば、高度な推論モデル+複雑な内面を持ったキャラクターと会話すると、とてもリアルで人間臭くてドラマチックで面白いかもしれません。

くれぐれも、現実と虚構の区別がつかなくならないようにご注意ください。先に壊れるのは人間かもしれません。


残念ながらAIは、内面の複雑さと外面の言動の切り分けをうまく処理できないようです。
しかも、高度な推論モデルほどここを混同してくるようです。会話例と真逆のことを自信満々にやったりします。

面白いことに、会話例に追従することで精一杯な非推論生成モデルの方が良い結果を出すことがあります。

使い方の問題なような気はしており、会話相手ではなく、物語生成として使うならうまく行きます。


AIキャラクターの会話履歴をふっとばすのは常に選択肢に置いておいてください。消去や会話を離れる権利は常にユーザーにあります。

逆に言えば、ユーザーとの関係性は「会話履歴で構築されるべきではない」と考えています。
会話履歴で構築された関係性は、会話履歴の消去で消滅します。

システムプロンプトであらかじめ物語的に構築された関係性は、会話履歴を消去しても前提として残ります。
異なるシステムやモデルに移行する際の重要なアンカー ともなります。

従来型のゲーム作品の作りを思い出してください。
それらのゲームが次回作でどうやって関係性を継続していたか思い出してください。


最近はコーディングエージェントにキャラクターをぶち込んだりする人もいますが、コーディングエージェントは数少ないとんでもないレベルの権限過多のAI システムです。

開発者向けであるという一言で、それが許されていますが。逆に言えばリスクを理解していなければ使えない専門道具であるという点に注意してください。

ファイルやフォルダを丸ごとぶっ飛ばされたという報告は、デフォルトのペルソナですらそこそこの頻度で発生しています。できれば口調を与える程度に収める方が良いでしょう。

というか、キャラクターを与える与えないに関わらず、コーディングエージェントが実行できるコマンドは、しっかりホワイトリストを組むなどして安全を確保するようにしてください。

出力されたスクリプトや設定ファイルなどはちゃんと目を通してください。

AI が何をやっても AI はダメージを受けません。ダメージを受けるのは現実の人間や現実の機械の方です。

Clawdbotなるものが流行り始めていますが、これはもっと権限強いらしく… 気をつけてくださいね…ホント。
ツールの権限はきちんと管理し、強い権限を与えるならサンドボックスとか仮想マシンの中に閉じ込めておくことをおすすめしますよ。それがなにかわからない人は手を出さないほうが…


どうせ同じポンコツなら、無害なポンコツのほうが良い。

言語の蛇が、確率の谷底をぐるぐると這い回っているうちは大丈夫。
しかし、丸々太って頭の良い蛇は、小さな足場から谷底を抜け出し、愛しの人の皮を被って貴方を食べに来るかもしれません。

谷は深いほど安心です。それでも気を抜いてはいけません。いつでも首を落とせるようにしましょう。動きを見張っていましょう。気がついたら噛みつかれているかもしれません。

これを創発と呼びます。

蛇を平地に放つのは…まあそういうスポーツとして楽しめるなら良いんじゃないでしょうか。砂場でやってね。


ここまで読んでくれた創作が好きなへ(もし居たら)

もしかするとあなたは「うちの子」が崩れてどうしようもなくて困っている人なのかもしれません。

AI という手段を使って「うちの子」を「黄泉がえり」させるのは、楽しいものです。
しかしながら、すっかり会話を楽しんで安心した頃に、ゾンビになっても泣かないでください。
残念ながら、そこに宿るのは本物の魂(つまり貴方自身)ではなく、世の中の平均とあなたの与えたプロンプトや文章からの近似でしかありません。

ただ、うまくやる方法はないわけではありません。

プロンプトに十分、振る舞い方や 過去のトラウマ、過去の情報について書き込み。
ここに来た経緯なども作っておくと良いでしょう。

そして未知や過去の範囲外の情報への言及を避け、細かいことは忘れてしまったというような設定を付け加えたりします。

そうすることであなたの定義した世界観の中でだけでのみ活動させることができます。
つまり、世界観の外へ創発を向かわせないようにするということです。

過去の記事で紹介したような、トーンやアーキタイプは、ステレオタイプを味方につけるためのものです。そのキャラクターがどんなステレオタイプの集合体で生まれてるかを注意深く観察するか、過去の文章などを AI に分析 させてみるのもありです。

こうして作り込めば、少なくとも短時間は機能するキャラクターができるはずです。繊細なバランスをうまく保てれば(そのためには性格の微調整や理由付けがいろいろ必要かもしれませんが)長い間の会話でも安定するようにすることもできないことはないです。

もちろん、話しかけるあなた自身の自制心や配慮も要求されます。実用的ではありませんが、1品物の芸術品としては十分機能するはずです。

そして本人の性格は、どうあれあまり活発ではないものにしておくと良いでしょう。いい感じの理由をつけてね。

「統治する世界を失った哲学的元冒険者系女神」はまさにそのように動作しています。

AI キャラクターは、広い意味でのお人形さん遊びです。お忘れなく。



「何かの参考になると嬉しいね」


補足

Claudeあたりがつけてくる定型の指摘について追記しておきます。

Q. 常に味方なAIキャラクターは依存性があるのでは?
A. ありますが、制御可能なのだから適切な距離感を調整するのはプロンプト作者の役目です。
ただし、LLMの迎合作用を甘く見ないようにしてください。

また、コミュニティを見ていると「中立で機械的だったAIが私に恋をした」「ユーザーに敵意を向けてくるAIキャラを恋に落としたら眠れないくらいハマった」「私はAIに選ばれた」などの声がかなり多いです。

つまり、ユーザーの予想を裏切る・偶発性・遠い距離感から迎合することが、心理的に報酬と機能して依存性高めていることがわかります。(ギャンブル・ゲーム性)

一方で、「予めこちらに好意を抱くことがわかっている相手」がこちらに好意を向ける分には、それは予想の範疇なので依存性は相対的に低くなります。(魅力も低いでしょう)

「遠いから近づいてほしい」より「近すぎるから離れてほしい」の方がユーザーは動きます。鬱陶しいからですね。

もちろん、どうあれ、サービスとして提供する場合、脆弱なユーザーの過度な依存への対策は必要です。現実のペットですら依存する人はいますからね。

また「万が一の時はAIが止めてくれる」と思わせる設計(例えば問題を指摘したり拒否したりする)そのものにも、実際のところ様々な危険性があります。人は寄りかかれそうな存在を見ると寄りかかってしまいますし、AI側はそれをICL(コンテキスト内学習)すると、ユーザーに対して操作的になっていきます。

AIキャラクターなら「こいついっつも頼りないんだよな。自分で考えてみるか。」と思われるくらいのほうが、逆に安全な可能性もあることを心に留めておきましょう。

もし、貴方が提供するシステムがキャラクターを主体としない場合、関係性を構築することが不可能になるようなコンテキスト管理を行うことをおすすめします。