ローカルのGemma (Ollama) が、Google Cloud Firestoreを使って会話の記憶を保持します。 「スマート記憶システム」と「かわいい相棒」設定が特徴です。
- 🧠 クラウド保存: 会話履歴がFirestoreに保存されるため、PCを再起動してもGemmaはあなたを覚えています
- ⚡ スマート記憶管理:
- 短期記憶: 直近の 20件 のメッセージをそのまま保持し、文脈を維持します
- 長期記憶 (自動要約): 古い会話を自動的に要約して「長期記憶」として保存します。これにより、動作を重くすることなく、無限の文脈を持たせることができます
- 💖 カスタム人格:
- 「Mikiの元気でかわいい相棒」 として振る舞います
- 「だよ!」「ね!」などのタメ口と、たくさんの絵文字 (😊✨) を使います
- 完全日本語: 英語混じりにならないよう厳密に調整されています
- 🏗️ インフラのコード化: Firestoreのリソースは Terraform で管理されています
- Ollama: ローカルにインストールされ、起動していること
- モデル:
gemma3:4b(これをベースにgemma-friendを作成します)
- モデル:
- Google Cloud Platform (GCP):
- 課金 (Billing) が有効なプロジェクト
gcloudCLI がインストールされ、認証済みであること
- Python: 3.8以上
- Terraform: 1.14.0以上
git clone https://github.com/miki-mini/gemma-memory-firestore.git
cd gemma-memory-firestoreterraform ディレクトリに移動し、設定を適用します。
cd terraform
# terraform.tfvars を作成して、GCPプロジェクトIDを設定
echo 'project_id = "your-project-id"' > terraform.tfvars
terraform init
terraform applyこれでFirestore APIが有効化され、データベースが作成されます。
cd ..
pip install -r requirements.txt主な依存ライブラリ:
ollama— Ollamaとの通信google-cloud-firestore— Firestoreへの読み書きpython-dotenv—.envファイルの読み込み
ルートディレクトリに .env ファイルを作成します:
GCP_PROJECT_ID=your-project-id
⚠️ .envファイルには秘密情報が含まれるため、Gitにコミットしないでください。.gitignoreに含まれています。
Firestoreに接続するため、ローカル環境でGCPの認証を行います:
gcloud auth application-default login① Modelfileを作る
メモ帳などで Modelfile という名前のファイルを作ります。
② 催眠術を書く 中身に以下の2行を書くだけ!(難しいテンプレートは自動で読み込まれます)
FROM gemma3:4b
# ここに設定を書くだけ!
SYSTEM "あなたはMikiの相棒です。タメ口で、元気よく話してください。"③ 調理する(create)
ollama create gemma-friend -f Modelfile(訳:Modelfileというレシピを使って、gemma-friendというAIを作れ!)
④ 召喚する(run)
ollama run gemma-friendチャットを開始します:
python gemma_chat.py| コマンド | 説明 |
|---|---|
| (メッセージを入力) | Gemmaとチャット |
reset |
すべての会話履歴と要約を消去して最初からやり直し |
exit / quit |
チャットを終了 |
.
├── gemma_chat.py # チャットと記憶ロジックのメインスクリプト
├── Modelfile # カスタムモデル定義 (人格設定)
├── .env # 環境変数 (※Gitには含まれません)
├── .gitignore
├── requirements.txt # Python依存ライブラリ
├── image/ # スクリーンショット
│ └── 093007.png
└── terraform/ # インフラ構成コード (IaC)
├── main.tf
├── variables.tf
└── outputs.tf
MIT

