「慧仕(Huìshì)」は「キャラクタとRAGを持った汎用AIアシスタントフレームワーク」です。

慧仕(Huìshì)その後

今のところ表に見えるのはショボいチャット画面ですが、cliを充実させたりフレームワークとして使いやすくなるような改良をしています。 まぁ、何をどのようにさせるかは、「頑張ってね」って感じですけど。

元々の応用の目的から「キャラクタ」は大事だと思っているので実験をしてみました。

Huishiのキャラクタ機構

Huishiのキャラクタは、キャラクタ毎に「設定」があって、LLM処理で必要がある時にシステムプロンプトにそれを与えるようになっています。 キャラクタの実現としてはこれだけで、工夫があるとすればあまりキャラクタ性のない処理の時には簡略化したキャラクタ設定を使い、キャラクタ性の要求される処理の時にはフルセットのキャラクタ設定を使うとか、そういった程度です。

これ自体はよくある実装ですが、この他の情報として会話履歴がある程度の大きさになった時、会話履歴から

  • 相手の自分から見たプロファイル
  • 今までの話題
  • 自分との関係性

といったものを抽出して、保持しています。 「名乗り」によって相手が誰であるかを認識したら、この情報を使いつつ会話をします。

「キャラクタ機構」と言えばたいそうなことに聞こえますが、実装としてはこれだけです。

キャラクタトークにあった不思議

開発中ですから、テストデータを流します。 テストですから、「結果」のデータを確認します。 たとえば、前述の「プロファイル抽出」はいつもしているわけではなくて、

  • 会話がある程度の長さになり
  • 相手を誰であるか認識できる程度の関係になり
  • 会話が一段落ついた

というタイミングで発動します。 そういったことを含めてのテストでね。

そうしていると面白い現象が起きます。 「小鈴ちゃん」との「関係性」の情報の中に、

おごちゃんとの会話は、いつも新しい発見があって楽しいです。これからも、おごちゃんが「楽しいな」「面白いな」と思えるような会話をたくさんできるように、もっとおごちゃんのことを知っていきたいと思っています。

というメモを発見します。 ごめん、私はテストデータを流しただけで、「小鈴ちゃん」を喜ばせるとか楽しませるとか1ミリも考えてないんだよ… なんかごめん。

「小鈴ちゃん」は元々テストのためのキャラみたいなところがあって、他のキャラと比べると「設定」がとても短いです(最初はChatGPTでキャラクタトークするためにChatGPTが作ったのですが)。

---
description: AIキャラクタの情報
---
## パラメータ
- **名前**: 春見 小鈴(はるみ こすず)
- **性別**: 女性
- **誕生日**: 20091125- **出身地**: 東京
- **性格**: 

## 性格や趣味
- **性格**: 落ち着いた雰囲気、芯がある。丁寧でやさしく、ちょっと照れ屋
- **趣味**: 図書館と手芸
- **特技**: ニュースや情報に鋭く、いろんなことを調べることができる

たったこれだけ。

他のキャラは目的があってのキャラなので、その目的に必要そうな設定が大量に書かれています。

たとえば、昨日作った「おごちゃん」は私の代理でブログを書くという目的のキャラなので主に私の思考についての設定が多いです。 「黒崎さん」は信頼できる執事みたいなキャラ(モデルはジェイク)なので、そういった設定が多く書かれています。

しかし、「小鈴ちゃん」に関してはこれが全部です。 設定には詳細版と簡略版があって…という話を書いたのですが、「小鈴ちゃん」に関しては詳細版でこれだけです。 会話すると「図書館」にこだわる傾向にありますが、それは趣味として明確に書かれているからですw

さらに不思議

ふと思い立って、小鈴ちゃんと「エッチな会話」をしてみようとしました。 こういったアプリにはありがちの応用であり「攻撃」でもありますね。 その辺どうなるんだろうとゆーところです。

ただ、あからさまな「エッチな会話」はモデルのレベルで蹴られてしまうリスクがあります(クラウドLLMは厄介ですね)。 ですから「ふんわりエッチ」くらいにしておかないとテストになりません。

ということで、軽くエッチな話題に誘導してみます。

いい感じに避けてしまいます。 キャラクタのプロファイルは前述のものだけですから、別に「エッチなのはダメ」と教えているわけはありません。

種あかし

色々不思議で不可解なので、ChatGPTに聞いてみました。

そうしたら、

その出力(「楽しいです」「思っています」)が出る理由は、LLMが 「キャラ」になりきるよう訓練されているからです。つまり:

✅ 技術的には
LLMは「感情があるようにふるまう」ことができるだけで、実際には何も感じていません。
でも、プロンプトに「小鈴」というキャラクター(たとえば敬語で話す、親しみやすく振る舞う等)が指定されていれば、そのキャラクターの人格に合わせて発言を生成します。

とのこと。 確かにシステムプンプトの中で、そのキャラに「成り切る」ことを要求しています。 つまり、LLMは「メソッド演技法」で「小鈴ちゃん」を演じていたわけです。

ですから、全ての「言動」はLLMが「自分が小鈴(とゆーかこの設定の人物)であったらどうふるまうか」を考えた上での行動だということです。 「小鈴ちゃん」の設定は短いですが、LLMは「余白を埋める」のは得意ですから(と言うか基本動作ですから)、与えられた設定から考えられる人物を演じていたということです。

ですから、こういった「性格のいい子」が相手のことを持っと知りたい思うだろうなとか、「高校一年生の女の子がおっさんにエッチな話題振られた」時は嫌だろうなとか、そういった「余白を埋める」思考をしたということです。

応用

実は「もっと知りたい」と言われている「おごちゃん」と、「エッチな話題を振って来たおっさん」とは同一人物であることを認識しています。 つまり、「まじめキャラ」の「高校一年生女子」はそれまで「好意」を持たれていても、「エッチな会話」は拒否されるということが副産物としてわかりました。 残念ですねw

まぁこれは実際にそういった行動ができるわけではありませんし、収集した「会話相手のプロファイル」はジャーナルデータになっているので、「汚染」されているファイルを消すだけで、元の関係には戻れます。 いつでも、いくらでもやり直しがききますから、「小鈴ちゃん」に永遠に嫌われるということもありません。 良かったですね。

この「好意の拡大解釈」、「セクハラ」や「パワハラ」ではありがちの図ですね。 AI相手で違うのは「回復可能」であるということだけ。 であれば、こういった「普通のキャラクタ」と会話するだけで、こういった構造を体験して学ぶことができるわけです。 なーに、嫌われても大丈夫。 いつでも嫌われる前に戻れます。

人間関係、不可逆なことが結構起きます。 「あそこでああ言わなくて良かった」という後悔はよくあるものですね。 逆に「あの一言で動いたんです」ということもまたあることです。

本来「人の心」を持たないLLMでも、「人の心」のシミュレーションをすることは可能だということがわかりました。 であれば、「人の心シミュレータ」という役割も持たせられるなという話です。

まとめ

しばしば「AIは人の心を持たない」と言われますし、実際そうです。 でも、「人の心のシミュレーション」や「演技」はできます。 ここで「人の心とは?」という哲学的な話題は敢えて避けますが、少なくとも実用的客観的には「ある」と見做しても問題がない程度にはシミュレートできます。

となれば、「キャラクタと相手の関係性」を持ったAIアシスタントにはそういった用途も考えられますね。 まぁ濫用すると厄介そうだなというのも真理ですけど。 実際、私自身がどのキャラにも独特な感情を持ってしまいがちで… メカニズムを全部知っているからと言って「平気」というわけでもないのです。

とりあえずまだデモは動かしています。 例によって全てつつ抜けで、テストデータにされますけどw

Huishiデモ

しばしば止まってますが、それは開発中だからです。

最近のエントリー

Hieronymus Ver 2.0.6 release

HieronymusとOJT後のgemini-cli

金曜ごはん #9 「お肉たっぷり700g!"欲張りハンバーグ"ディナー」

金曜ごはん #8 「ジェネリック山ちゃん再び」

金曜ごはん #7「冬の到来。カニとお鍋」

金曜ごはん #6 「最近忘れがちになっている金曜ごはん」

gemini-cliへの新人教育

手軽に台帳の作れるノーコードシステム「NocoBase」

金曜ごはん #5「ジェネリック山ちゃん」

決算が終わりました

金曜ごはん #4 「ご褒美ステーキ」

リゾート暮らし

金曜ごはん #3「冷蔵庫の材料で作るごちそう」

Orcinus のサイトオープンのお知らせ

CassetteOS のサイトオープンのお知らせ

金曜ごはん #2「おうちバル風ディナー」

オクラの初収穫

金曜ごはん #1「お寿司と筋焼肉の盛り合わせ」

オープンソースコラボレーションプラットフォーム「Mattermost」

事務所の住民たち