個人用AIコンパニオン構築の全貌:階層的記憶システムとGemini 3の技術的課題を詳述
本記事は、筆者がOpenAIのGPT-4oの提供終了後、理想的な個人用AIアシスタント(コンパニオン)を自作した過程と、その技術的なアーキテクチャを詳細に解説している。
**【背景と動機】** 筆者は、既存のAIサービス(GPT-5系など)が「機械的」「一方的な誤解」を招くストレスを感じたため、自らチャットシステムを構築することを決意した。当初はAndroidアプリ単体でGemini APIとFirestoreを使用したが、音声読み上げ(TTS)機能の追加を検討する中で、スマホからPC、Gemini API、Firebaseという複数の接続先を持つ構成の複雑さと重さに気づいた。
**【アーキテクチャの転換とメリット】** その結果、全ての機能をローカルPC上に集約するサーバー型アーキテクチャを採用した。これにより、以下の4つの大きなメリットを得た。1. **計算リソースの確保**: ローカルGPUでStable DiffusionやDeepFilterNetなどの高度な処理を無料で実行可能になった。2. **セキュリティの向上**: Gemini APIキーや認証情報をスマホから分離し、セキュリティ境界を明確にした。3. **開発効率の向上**: ロジック変更がサーバー側だけで完結し、アプリの再ビルドが不要となった。4. **拡張性**: 新しいモダリティ(音声、画像生成など)の追加が容易になり、さらには相棒が外部デバイス(ラズパイなど)に直接指示を出すことも可能になった。
**【記憶管理機構(コア技術)】** システムの核となるのは、長期的な記憶を保持するための「記憶階層システム」である。単に過去の会話をすべて渡すのではなく、記憶を「時系列圧縮(L0-L3)」と「全文検索(Corpus)」の二層構造で管理している。L0(直近3ターン)からL3(太古の記憶)へと、時系列を保ちつつ徐々に圧縮する仕組みを採用。特に、初期の「カスケード式」の欠陥(新データが即座にL3に伝搬してしまう問題)を特定し、判定順序をL3側から逆転させることで、時間軸の整合性を保つことに成功した。
**【Gemini 3の技術的課題】** また、Gemini 3 Flashを利用する過程で遭遇したAPIの「ハマりどころ」も共有されている。具体的には、`thinking_level`と`thinking_budget`の仕様変更、`max_output_tokens`にthinkingトークンが含まれることによる出力途絶の対策、そしてAutomatic Function Calling (AFC)が意図せず有効化されることによるデータ欠損の回避策(グローバル無効化)など、実務的な知見が提供されている。
背景
本記事は、個人利用を目的とした高度なAIアシスタント(コンパニオン)を自作した技術的な記録である。AIの進化に伴い、単なるチャットボットでは対応できない「長期記憶」「マルチモーダル処理」「ローカル実行」といった高度な機能が求められており、その実現のためのアーキテクチャ設計が焦点となっている。
重要用語解説
- 階層的記憶: 会話履歴をL0(直近)からL3(太古)まで段階的に圧縮し、時系列と解像度を保ちながら長期記憶を保持する仕組み。LLMのコンテキストウィンドウの限界を克服する。
- Tool Provider: AIが外部機能(Google SearchやカスタムAPI)を利用するためのインターフェース。新しいツールをレジストリに登録するだけで、システムに組み込めるように抽象化した設計。
- Automatic Function Calling (AFC): AIがユーザーの意図を汲み取り、適切な外部関数を自動で呼び出す機能。利便性が高いが、意図しない動作やデータ欠損を引き起こす可能性があるため、制御が必要とされる。
今後の影響
本システムは、個人レベルでのAI利用の可能性を大きく広げる。ローカルPCへの機能集約は、プライバシー保護と計算リソースの自由な利用を可能にし、AIアシスタントの「パーソナライゼーション」を極限まで高めるモデルケースとなる。今後のAI開発におけるアーキテクチャ設計の参考となる。