シャーリー:本当に役立つ AI パーソナルアシスタントの作成への私の探求(セルフホスト型 ChatGPT + 長期記憶 + RAG)
Situational Awarenessを読んだ後、私は次のような考えを抱きました。AI が AGI からほんの数年しか離れていないのであれば、私がずっと望んでいた AI アシスタントを作成できるほど十分に近いのかもしれません。
さて、AGIが3年も先に実現するとは到底思えないという方もいらっしゃるかもしれません。それはそれで構いません。私が言いたいのは、現在のAI技術は本当にパーソナルアシスタントを作るのに十分なのかということです。
まあ、ある意味、AIはありますね。例えば、スマホやスマートウォッチに「来週火曜日の午後1時に歯医者の予約をリマインダーして」と言えば、ちゃんとリマインダーが来ます。でも、それはAIではありません。音声認識をアプリに取り込んでいるだけです。
私が欲しいもの
私が欲しいのは、会話できる AI (タイピングでも構いませんが、音声があるともっと良いです) で、次のことができる AI です。
- ToDoリスト、予定、メモ、プロジェクトを管理する
- 私が言ったことは決して忘れない
- ChatGPT が gen-AI タイプの質問に答えるという点では、あらゆることを実行します (「Python 関数を書いてください」、「エイブラハム リンカーンを撃ったのは誰か」など)。
- ウェブとやりとりする
- スケジュール通りに物事を行える
- プライバシーを守る(そして、その意味において安全であること)
- 個性を持つ
ChatGPT はこれができますか?
答えは「いいえ」です。ChatGPT は、#2 (決して忘れない) を実行できず、#4 (Web から読み取ることができますが、POST は可能です)、#5 (cron がありません)、または #6 (Teams ではプライベートな状態です) を部分的にしか実行できません。
ちょっと無知な気持ちで、このChatGPTを試してみました。MemoryをオンにしたプライベートTeamsアカウントを持っていたので、とりあえず話しかけてみたんです。
- 私は、シャーリーという名の1950年代の喫煙者の意地悪な秘書の性格を、いくつかの性格のヒントとともに与えました。
- 私は次の5日間の旅行の予定を伝えました
- 私はいくつかのToDoリストを作成するように指示しました
- 私はIronsworn: Starforgedのプレイ方法を教えました
…そして新しいセッションを開くと、すべて消えていました。
さて、2つ目の試みは「覚えておいて…」という指示をいくつも与えるというものでした。これはうまくいきました。ある程度は。
実際には、約5,000ワードの凝縮された情報です。それを超えると、Memoriesの容量を超えてしまいます。「20TBのデータがあります。覚えておいてください」と言えるとは思っていませんでしたが、5,000ワードよりはずっと多いだろうと思いました。
OpenAIのカスタムGPTを使えば、より多くの情報を持つボットを作成できます。しかし、これはボットが動作を開始する前にすべてセットアップされます。つまり、これはROM(読み取り専用メモリ)であり、得られる「ディスク容量」は5,000ワードです。実際、カスタムGPTにメモリが確保されるかどうかは分かりません。
メモリがいっぱいになるまでは、本当に素晴らしかったです。プロジェクトについて話し合い、ToDoリストを整理し、リストを作りました。あの旅行の計画は本当に楽しかったです。「よし、ここに着いた。8時間運転したらどの都市に着くかな?その辺りはどんな感じだろう?別のルートで行くとしたら?」など、シャーリーが旅行代理店の人のように自然な会話で話せたので。
それはデジタルの楽園を垣間見るほんのつかの間の体験でした。
自分で作れますか?
私はいくつかの GPU にアクセスできます。1 つは M1 Max ラップトップに搭載されている GPU、もう 1 つはゲーム用 PC の 4080 です。
ChatGPTはダウンロードできませんが、llama-3やその他の様々なモデルをダウンロードできます。独自のセルフホストAIを簡単に構築する方法は次のとおりです。
- ollama.comにアクセスしてパッケージをダウンロードしてください
- Windowsの場合はWSLをセットアップする
- ollamaをインストールする
- ollamaコマンドを使って様々なモデルをダウンロードできます。ollama.comで検索してください。コマンドはDocker風です。llama3、codegemma、mistalモデルがお好きな方もいらっしゃるかもしれませんが、他にもたくさんあります。
- 次に「ollama run <model>」と入力すると、プロンプトが表示されます。
- もっと凝ったものが欲しい場合は、dockerを起動してopen-webuiを実行してください。ChatGPT風のインターフェースが表示されます。
NetworkChuck にはこれに関する素晴らしいビデオがあります。NetworkChuck が大好きです。
つまり、これは簡単で、ローカルAIが完成します。ChatGPT(数兆トークンで学習済み。これらのモデルのほとんどは70億または700億トークン規模)ほど優れているわけではありませんが、 llama-3 (Metaによって学習された、無料で利用できる最も高度なモデルの1つ)は非常に優れています。
また、Retrieval Automated Generation(RAG)と呼ばれる手法もあります。これは、ベクターデータベースに接続し、必要な量のデータを入力するものです。その後、AIに話しかける際に、データベース内の情報(「いとこマイクの住所は?」や「昨年9月にオハイオ州でアップルソースを何瓶売った?」など)を尋ねると、AIはその情報を参照します。
そろそろ…目標に近づいてきましたね。では、私の要件に基づいて、ChatGPTとセルフホスト型システムを比較してみましょう。少しフォーマットを変えました。
| チャットGPT | セルフホスト | |
| ToDoリスト、予定、メモ、プロジェクトを管理する | ✅ | ✅ |
| 私が言ったことは決して忘れない | ❌ | ❓ |
| 個人情報に関する広範な知識ベースを持っている | ✅ | 🟡 |
| 通常のGenAIのもの | ✅ | ✅ |
| ウェブと対話する | 🟡 | 🟡 |
| スケジュール通りに物事を行える | ❌ | ❓ |
| 個性を持つ | ✅ | ✅ |
| どこからでもアクセス可能 | ✅ | ✅ |
| 音声で利用可能 | ✅ | ❓ |
| プライベート | 🟡 | ✅ |
いくつかの注意点:
- 「ToDoリストや予定などを管理する」というのは、まるで秘書のように話しかけられるという意味です。これらの概念を理解しています。つまり、秘書の「ロールプレイ」ができるということです(ただし、バーチャルデスクで追いかけたりはしません。llama3の無修正モデルもありますが…)。
- ChatGPTはWebからの読み取りはできるけど、POSTはできない。おそらく、世界征服を防ぐためだろう。冗談…いや、冗談じゃない。
- ChatGPTをAPI経由でスケジュールに従って実行することはできるが、ChatGPT自体は何も開始できない。
- ChatGPTは一種のプライベートです。Teams上にプライベートワークスペースを設定できますし、OpenAIはそのようなデータで学習していないと言っていますが、それでも、毎日大規模な攻撃を受けているプラットフォーム上のクラウド上には、あなたのデータが保存されているのです。
- 「どこからでもアクセス可能」というのは、理想的にはノートパソコンで入力しながら、スマートフォンのAIと会話できるということです。残りの9つの項目が実現できれば、iOSアプリの書き方を学ぶ時間を取ります。それまでの間、SSHやWebアプリでAIと会話できれば最高です。
理想のパーソナルアシスタントの50%を自宅で構築し、比較的安価なハードウェアで動作させることができるというのは、かなりクールだと思います。これは、Timex Sinclair 1000から始めた人間と話をしているようなものです。
より簡単なもの
「Webとの対話」が一番簡単だと思います。具体的に何が関わっているのかはよく分かりませんが、AIに何らかのWebインターフェースを組み込むだけです。llama3は初期状態ではURLにPOSTできると認識していますが、実際には何もしません。ロールプレイングゲームのような感じです。これはアプリ特有の機能だと思います。
同様に、「音声で利用可能」もアプリの機能です。FOSSの音声認識の現状は分かりませんが、macOSとiOSにはきっと優れたライブラリがあるはずです。
スケジュール管理は、トーク・レスポンス・モデルに反する側面があります。LLMはただ座って考えるだけではありません。テキストを変換するのです。自動化によって解決できるかもしれません。AIに「覚えておくべきことはこれです」と指示し、1分ごとに期限が迫っているかなどを確認するジョブを用意するのです。繰り返しますが、トーク・レスポンス・モデルは制約要因となります。AI自身では「何か期限が迫っているか」と尋ねることはできないので、質問する必要があります。
本当に難しいもの
残っているのは「知識ベース」と「完璧な記憶」です。
ナレッジベースには一応解決策があります。RAGを接続することもできますが、私が読んだ限りでは、ここにあるFOSSソリューションはかなり脆弱です…いわば、強化されたgrepのようなものです。
ChatGPT のカスタム GPT にスプレッドシートを読み込むと、これらのシートから情報を要約したり、表にまとめたりすることができましたが、これは可能ですが、FOSS ソリューションがまだ存在するかどうかはわかりません。
理論上、AIはRAGに情報をフィードバックできるはずです。それが究極の目標、つまり成長するメモリストアです。
しかし、ここがフロンティアであることが判明しました。
私のToDoリスト:
- RAGテクノロジーの現状を調査する
- 生地をもっと探す
- 簡単なものから最終的に望むものまで、テストケースを作成し、LLMや技術ソリューションを、どのように対応できるかに基づいて評価します。輝かしいデジタルの未来への進捗状況を追跡します。
私はPikaPodsでホストされている Jupyter ノートブックでそれをすべて追跡しています。