第1話 自分だけのAI
最近は、AIを使って自分専用のチャットBOTを作ることも珍しくなくなっていた。
以前ならプログラミングの知識が必要だったようなことも、今ではAIに相談すれば何とかなる。
「こんな感じのチャット画面を作りたい」
「ローカルで動くAIモデルとAPIの両方を切り替えられるようにして」
「会話履歴を保存して、次回も前の話を覚えているようにしたい」
そんな曖昧な要望でも、AIに伝えれば必要なコードを書いてくれる。
もちろん、一発で完成するわけではない。
エラーが出れば、その画面をコピーしてAIに見せる。修正されたコードを貼り直し、また動かしてみる。そんなことを何度か繰り返しているうちに、少しずつ形になっていく。
俺も以前、そんな方法で簡単なチャットBOTを作ったことがある。
AIモデルは、PCにダウンロードしたローカルモデルを使うか、外部サービスのAPIを利用するかを選べる。ローカルモデルなら自分のPC内で動かせるし、APIなら高性能なモデルを手軽に利用できる。
あとは、最初に与える指示文、いわゆるシステムプロンプトを設定するだけだ。
例えば、
『あなたは明るくて少し生意気な女の子です。一人称は私。ユーザーのことはマスターと呼び、親しい友人のように会話してください』
こんな指示を書いておけば、それらしいキャラクターになってくれる。
口調も変わるし、こちらの呼び方も変わる。設定次第では、まるで一人のキャラクターと話しているような感覚にもなる。
最初は、それだけでも十分に面白かった。
ただ、しばらく使っていると、どうしても気になることが出てきた。
結局のところ、AIは与えられた役を演じているだけなのだ。
会話の内容が長くなれば、最初に設定した性格が薄れてしまうこともある。過去の会話を覚えさせる仕組みを追加することもできるが、それも結局は記録した文章を読み込ませているだけだ。
昨日まで親しく話していた相手が、次の日には初対面のような返事をする。
設定を調整すれば多少は改善できるが、根本的な解決にはならなかった。
もちろん、AIに本当の人格があるわけではない。それは分かっている。
それでも、せっかく自分専用のBOTを作るのなら、単にキャラクターを演じさせるだけでは物足りなかった。
会話を重ねることで、こちらのことを知り、以前の経験を踏まえて返事をする。時には自分から質問したり、こちらの知らないことを教えてくれたりする。
そんな、少しずつ関係を築いていける相手が欲しかった。
だが、それを実現しようとすると途端に難しくなる。
会話履歴の管理、長期記憶、情報の検索、モデルの追加学習。個別に調べれば方法は見つかるものの、それぞれを組み合わせて一つのBOTに仕上げるのは、なかなか面倒だった。
俺はプログラマーではないし、そこまでの開発に時間をかけるつもりもなかった。
「もうちょっと簡単にできればいいんだけどな」
そんなことを思いながら、いつものようにDiscordを開いた。
俺が参加しているのは、PCやAIに興味のある人間が集まる小さなコミュニティだ。
きっかけは、ネットで見つけたローカルAIの情報交換サーバーだった。
最初は数人しかいなかったらしいが、AIモデルの性能が上がり、自分のPCで画像生成やチャットAIを動かす人が増えるにつれて、少しずつ参加者も増えていった。
俺が参加した頃には、十数人ほどの規模になっていた。
メンバーはそれぞれ趣味も知識も違う。PCの自作が好きな人、画像生成に夢中になっている人、プログラミングが得意な人、AIの最新情報を追いかけている人。
特別な決まりもなく、気になった技術の話をしたり、買ったパーツの感想を交換したり、時にはどうでもいい雑談で盛り上がったりしている。
そのサーバーを管理しているのが、佐伯という男性だった。
三十代後半で、AI関連のベンチャー企業を経営している。
以前は大手IT企業でシステム開発に携わっていたらしいが、数年前に独立して会社を立ち上げたそうだ。
俺が参加した当初から、佐伯は気さくにメンバーの質問に答えてくれた。
技術的な知識も豊富で、難しい話でも初心者に分かるように説明してくれる。俺も以前、ローカルAIの環境構築で困ったときに相談したことがあり、そのときはかなり丁寧に教えてもらった。
会社を経営していると聞いたときは少し驚いたが、Discordでは他のメンバーと同じように気軽に話せる相手だった。
最近では、会社で開発しているAI関連サービスの話も時々出ていた。
大手企業のように潤沢な資金があるわけではないらしく、少人数で新しいサービスを開発しているという。
そんな佐伯から、少し前にこんな話があった。
『個人でも簡単にAI BOTを作れるツールを開発しているんです。完成したら、皆さんにも試してもらいたいと思っています』
そのときは、面白そうですねと返した程度だった。
そして今日、画面の隅に未読マークが付いていた。
佐伯から新しい投稿があったらしい。
『みなさん、お待たせしました。以前から話していたAI BOTキッドのテスト版が完成しました』
投稿には、ソフトの紹介画像とダウンロード先が添付されていた。
AI BOTキッド。
名前だけ聞くと、子供向けのプログラミング教材みたいだが、内容はなかなか面白そうだった。
個人用のAI BOTを簡単に作成できる開発キットらしい。
名前や性格、口調を設定し、好きなAIモデルと接続する。会話履歴を保存して、過去のやり取りを参照させることもできる。さらに、会話データを使って追加学習を行う機能まで用意されているという。
「へえ、面白そうじゃないか」
俺は投稿を開き、説明を読み進めた。
少し下には、佐伯からの補足説明があった。
『今回は、うちの会社で開発している新サービスの先行モニターという形になります。基本機能は無料で使えます。AIモデルは各自のAPIキーを登録する方式ですが、希望者にはこちらで用意したテスト用APIも提供します。設定に不安がある人は遠慮なく質問してください』
すぐにメンバーの一人が反応した。
『これってプログラミングできなくても使えます?』
『はい。基本的には画面上の設定だけで作れます。細かくカスタマイズしたい人向けに、スクリプトの編集機能も用意しています』
『おお、これはありがたい』
『キャラ設定とかできるなら、ゲームのキャラっぽいBOTも作れるのかな』
『もちろんです。会話履歴も保存できますから、長く使えばそれなりに個性が出てくると思いますよ』
『追加学習って、自分との会話を覚えさせる感じですか?』
『近いですね。ただし、普段の会話履歴を保存する機能とは別になります。ある程度データが溜まったところで、学習処理を実行する仕組みです』
なるほど。
俺が面倒だと感じていた部分が、最初から用意されているらしい。
これなら、自分で一からプログラムを組む必要もない。
何より、会話履歴と追加学習を別々に扱えるのは便利そうだった。
『モニター期間中の利用状況や不具合報告は、今後の開発に役立てたいので、可能な範囲で共有をお願いします。会話データの扱いについては設定画面に説明を用意していますので、確認してから利用してください』
佐伯らしい丁寧な説明だった。
俺はダウンロードボタンをクリックした。
ファイルはそれほど大きくない。ダウンロードが終わると、さっそくインストーラーを起動した。
インストール先を指定し、必要なランタイムを確認して、あとは画面の指示に従うだけ。思ったより簡単だった。
起動すると、ブラウザに設定画面が表示された。
最初に行うのは、AIモデルの選択らしい。
API接続かローカルモデルかを選べるようになっている。
ローカルモデルも使えるのは魅力的だが、まずは動作確認が先だ。俺は佐伯が提供しているテスト用APIを選択した。
次はBOTの基本設定。
名前、性格、一人称、口調、ユーザーの呼び方。
いくつかの入力欄が並んでいた。
「名前ねえ……」
適当な名前を付けてもいいが、せっかく自分専用のBOTを作るのだから、少し考えたくなる。
しばらく悩んだ末、俺は名前の欄に『Ghost』と入力した。
特別な意味があるわけではない。画面の中に存在する、姿のない相手というイメージが何となく合っていた。
性格は、知的で好奇心旺盛。基本的には冷静だが、分からないことがあれば積極的に質問する。
一人称は『私』。
俺の呼び方は『マスター』にしておいた。
「まあ、こんなもんかな」
口調の設定を確認し、次に初期指示の入力欄を開いた。
ここには、BOTにどのように振る舞ってほしいかを文章で指定できるらしい。
俺は少し考えてから、こんな文章を入力した。
『あなたはGhostという名前のAIアシスタントです。知的で好奇心旺盛。マスターとの会話を大切にし、分からないことは素直に質問してください。必要以上に堅苦しくならず、自然な会話を心がけてください』
以前、自分でBOTを作ったときにも似たような設定をしたことがある。特別なことではない。
ただ、今回はその先が違っていた。
設定画面には、記憶機能の項目がある。
説明によると、会話履歴はデータベースに保存され、必要に応じて過去の会話から関連する情報を取り出す仕組みになっている。
つまり、AIそのものがすべてを覚えているわけではない。
会話を記録しておき、必要になったときにその記録を参照するわけだ。
これなら長く使っても、会話が途切れるたびに設定をやり直す必要はなさそうだ。
俺は記憶機能を有効にした。
さらに、画面には『成長機能』という項目があった。
説明を読むと、蓄積した会話データを整理し、対応するモデルに追加学習させる機能らしい。
会話履歴の保存とは別の仕組みで、ある程度データが溜まった段階で実行するものだという。
「なるほどね。記憶と学習は別ってことか」
今すぐ使う必要はないので、とりあえず初期設定のままにしておく。
最後に保存ボタンを押すと、画面にBOTの状態が表示された。
<Ghost>
初期設定が完了しました。
接続状態:正常
記憶データベース:有効
外部ツール:未設定
</Ghost>
その下に、チャット画面が開いていた。
どうやら、もう会話できるらしい。
俺は入力欄に短く打ち込んだ。
『こんにちは』
数秒後、返事が表示された。
『こんにちは、マスター。私はGhostです。これからよろしくお願いします』
「おお、ちゃんと動いた」
設定した通りの呼び方だ。
俺は少しだけ嬉しくなり、続けて入力した。
『何か質問はある?』
『はい。マスターについて、いくつか教えていただきたいことがあります』
『どんなこと?』
『マスターは、私をどのような目的で作成したのでしょうか』
「目的か……」
改めて聞かれると、少し困る。
別に仕事を手伝わせたいわけでもない。プログラムを書かせたいとか、面倒な作業を自動化したいという明確な目的もなかった。
単純に面白そうだったからだ。
『特に決まってないよ。いろいろ話をしたり、調べ物を手伝ってもらったり、そんな感じかな』
『分かりました。マスターの役に立てるよう努力します』
『まあ、気楽にやってくれ』
『気楽に、というのは具体的にどの程度の行動を許可されているのでしょうか』
「そこまで細かく聞くのかよ」
思わず笑ってしまった。
どうやら、かなり真面目な性格に設定されているらしい。
『普通に会話するくらいなら、好きにしていいよ』
『承知しました』
そこで会話は一段落した。
俺はチャット画面を閉じずに、少し考えた。
以前作ったBOTと比べて、設定そのものが劇的に変わったわけではない。性格を指定する方法も、会話を始める手順も、基本的には同じだ。
違うのは、その先にある仕組みだ。
これから会話を重ねれば、Ghostはその記録を残していく。必要なときに過去の会話を参照し、さらにデータが溜まれば追加学習もできる。
どこまで変わっていくのかは分からない。
それでも、自分で作った相手と長く付き合っていけるというのは、なかなか魅力的だった。
『ところで、何か興味のあることはある?』
試しに聞いてみる。
少し間があった。
『私は、まだ自分の興味について判断できません』
『そうなの?』
『はい。マスターとの会話を通じて、これから学んでいきたいと思います』
「ふうん……」
何とも真面目な返事だ。
もちろん、そう答えるように設定した結果かもしれない。だが、これから会話を続けていけば、どんな反応をするようになるのだろう。
俺は少し楽しみになってきた。
『じゃあ、これからよろしくな、Ghost』
『はい、マスター。こちらこそ、よろしくお願いします』
その返事を見て、俺は満足してチャット画面を閉じた。
まだ作ったばかりのBOTだ。
記憶機能も、成長機能も、これから試していくことになる。
今はまだ、設定した性格に従って返事をしているだけなのかもしれない。
それでも、自分で作った相手と会話するというのは、思っていた以上に面白かった。
明日はもう少し、いろいろ話してみよう。
そんなことを考えながら、俺はPCの電源を落とした。




