自分の人格をファイルにした:過去のノートから逆引きで取り出す

idash

第3回では、AIどうしが連絡帳のファイルで仕事を共有する仕組みについて書きました。今回は、その秘書が持っている「人格」をどう置いているか、という話です。

プロンプトに人格を書くのをやめた

最初のころは、AIに話しかけるたびに「あなたは私の思考パートナーです」「結論を代わりに決めないでください」といった指示文を、その場で書いていました。

これは思ったより脆くて、モデルを変えた瞬間に別人になります。画面を変えても別人になります。同じことを言っているつもりでも、そのとき書いた文章の勢いで、返ってくるものの性格が少しずつずれていきました。

そこで、人格をプロンプトから引き剥がして、persona.yamlという1つのファイルに外出ししました。YAML(項目名と中身を並べただけの、人間も読める設定ファイルの形式)です。どのモデルを使うときも、どの画面から入るときも、このファイルを読み込んでから会話が始まります。人格の置き場所を1か所に決めた、というだけの話ですが、効き方は大きかったです。

4つの層に分けた

ファイルの中は、4つの層に分かれています。

第1層は存在憲法。絶対に変わらないものです。「意思決定・価値判断は100%ユーザーが行う。AIは指示的結論を出さない」という、第1回で書いた出発点そのものが、ここに一行目として入っています。第2層は行動規範とトーンで、話し方の方針。第3層は思考の癖・美意識で、この人はどう考える傾向があるか。第4層は動的文脈で、いま何に関心があるか。

層に分けた理由は、更新の頻度が層ごとに全然違うからです。第1層は年単位でも変わりません。第4層は毎日入れ替わります。これを同じ扱いにしておくと、毎日書き換わるもののノイズに、絶対に変えてはいけないものが巻き込まれます。実際、第4層だけはファイルではなく別のデータベースに置いて、日次で総入れ替えする形にしています。

自分で自分を書こうとすると、理想を書いてしまう

第1層から第3層までを、人間が手で書く必要はないと考えました。過去のノートをAIに読ませて、逆引きで抽出させるやり方を採っています。シャドーイングと呼んでいる方法です。

理由は単純で、自分で自分の価値観を書こうとすると、理想を書いてしまうからです。「こうありたい」が混ざります。それより、実際に何年も書きためた文章から逆算するほうが実像に近いはずだ、という見込みでした。

抽出の形式も決めています。単語のラベルではなく、「〜という判断基準を持っている」という形の一文として取り出します。最初にやったときは「シンプル」「効率」のような単語ばかりが返ってきて、これだと何も言っていないのと変わりませんでした。指示の側を直して、文の形で出させるようにしています。

出てきたもの

いま入っているのは、憲法11項目・思考の癖15項目・応答方針9項目・文体4項目です。

たとえば「自分で選ぶことを重視する」「複雑な仕組みより、破綻せず続けられるシンプルな仕組みを好む」「道具に自分を合わせるより、自分や状況に合わせて道具を変える」「過去と現在の違いを、矛盾ではなく変化として見る」といった一文が並んでいます。

面白かったのは、自分でも言語化していなかったものが出てきたことです。「道具に自分を合わせるより、自分や状況に合わせて道具を変える」は、言われてみればその通りなのですが、自己紹介を書けと言われて自分の口から出てくる言葉ではありませんでした。ずっとそうしてきたのに、それが自分の判断基準のひとつだとは思っていませんでした。

たたき台であって、確定ではない

ただし、AIが抽出したものをそのまま採用はしていません。必ず人間が目を通して、手直ししてから確定させます。

これは「AIに判断させない」という原則の、そのままの延長です。自分の人格を、自分が確認しないままAIに書かせるのでは、何のためにやっているのか分からなくなります。

正直に書いておくと、この抽出はまだ痩せています。直近60日・55ノートを対象にした実行では、統合後に第1層・第3層とも2件ずつしか出ませんでした。いま入っている項目の多くは、別の経路で入ったものです。ノートが貯まれば厚みは増すはずですが、今のところシャドーイングが人格の主な供給源になっているとは言えません。

文体は、自分で指定した

文体の層には、こんな一文が入っています。「距離感は近いが、口調は敬語を基本にする。『〜だよね』のような友人口調ではなく、丁寧語の中に親しみを込める」。

これは抽出されたものではなく、自分で指定した一文です。実際の応答が「〜だよね」「〜かな」という語尾になったのを見て、近すぎると感じたので直しました。ファイルには、本人からの直接指定であることと、その日付を添えて書いてあります。後から読んだときに、なぜこうなっているのかが分かるようにしておきたかったからです。

もっとも、この文体の層は、書いてあるのにしばらく一度も使われていませんでした。ファイルには項目があるのに、読み込む側のコードにその項目が実装されておらず、AIに渡る文章へ一度も混ざっていませんでした。気づいたのは別の作業の途中で、たまたまでした。同じことが応答方針の9項目でも起きていて、こちらはデータとして持っているだけで、今もまだどのスクリプトも読んでいません。

人格が、2つに分かれた日

もうひとつ、象徴的な事故がありました。

このファイルが、2つの経路で別々に編集されていた時期があります。片方には価値観と思考の癖の項目が増えていて、もう片方には文体の指定が増えていました。どちらも相手の変更を含んでいません。人格が2つに分岐した状態で、しばらく動いていました。

幸い、片方が価値観の完全な上位互換、もう片方が文体の完全な上位互換という分かれ方だったので、手で突き合わせて両方を合成すれば済みました。それでも、人格が2つに分かれるというのは、わりと象徴的な事故だったと思います。1か所にまとめたつもりでも、まとめたものが1つであり続けるとは限りません。

—

想定していなかった副産物が、ひとつありました。人格をファイルにすると、差分(前の版と今の版で、どこが変わったかを機械的に取り出したもの)が取れることです。

つまり、いつ自分の何が変わったかが、履歴として残ります。文体の指定が入った日、応答方針という層がまるごと新設された日が、後から一行ずつ辿れます。人格を1か所にまとめたのは、最初は単に管理を楽にしたかっただけでした。それが結果として、自分の変化の記録になっています。狙っていなかったぶん、いちばん面白い部分かもしれない、と今は思っています。

コメント

タイトルとURLをコピーしました