【ガンダムコントで解説】AIエージェントに「長期記憶」を持たせる!GibsonAI/Memori 導入と活用法


【ガンダムコントで解説】AIエージェントに「長期記憶」を持たせる!GibsonAI/Memori 導入と活用法

GibsonAI/Memori

2025-11-16

Memoriは、LLM(大規模言語モデル)やAIエージェントに、人間のように「記憶」を持たせ、文脈(コンテキスト)を理解させるためのオープンソースのメモリーエンジンです。

これはまるで、ホワイトベース隊が「ザビ家の陰謀」や「アムロのわがまま」といった過去の経験や人間関係を、戦闘のたびにいちいち思い出さなくても、自然に判断を下せるようになるのと同じです!

役立ちポイント

長期記憶(LTM)の実現
LLMは通常、セッション(会話)が終わるとすべて忘れてしまいます。Memoriは、過去の会話や重要な情報(エンティティ、事実、好み、ルール)を永続的にデータベースに保存します。

文脈の自動注入
次の会話やタスクの際に、関連する記憶(長期記憶や短期記憶)を自動的かつインテリジェントにLLMのプロンプトに含めます。これにより、エージェントは過去の経緯を踏まえた、より賢く、一貫性のある応答や行動ができます。

コント
アムロとブライト艦長

ブライト
「アムロ、なぜ連邦軍がジオンに勝ったのか、君はもう3回も説明しただろう!毎回『えーっと、何だっけ?』はやめろ!」

アムロ(Memori搭載)
「ブライトさん、分かっています。ミノフスキー粒子の特性と、サイド7での戦闘データですよね。短期記憶に昇格済みです。今回は『ザクにはヒートホークが効かない』という長期記憶を基に、ビームサーベルで挑みます!」

ブライト
「……フン、少しは成長したようだな!」

役立ちポイント

Pydanticによる構造化
MemoriはPythonのPydanticを活用し、記憶を抽出・分類する際に、構造化された型安全なデータとして扱います。

信頼性の向上
エンジニアは、単なるテキストの羅列ではなく、「ユーザー名」「プロジェクト名」「技術スタック」といった検証済みの情報として記憶を扱えるため、エージェントの処理の信頼性が大幅に向上します。

コント
マチルダさんと整備班

マチルダさん
「ホワイトベースの修理データ、今回もメモ書きで提出したのかい?」

整備班(Memori使用)
「いえ、今回の修理はPydanticで型検証されたデータです!『修理箇所
ガンダムの左肩』『交換部品
ビームサーベル』『緊急度
A』と、構造化されています!メモの紛失や誤字によるデータ欠損はありません!」

マチルダさん
「素晴らしい!これなら本国のデータとすぐに同期できるね!」

役立ちポイント

共通の記憶領域
複数のAIエージェント(例
計画立案エージェント、実行エージェント、ユーザー対応エージェント)が、Memoriデータベースを介して共通の知識ベースを共有できます。

シームレスな連携
エージェント間でいちいち文脈を引き継ぐ必要がなくなり、より複雑なタスクを分担し、効率的かつ一貫性のあるチームワークを実現できます。

コント
カイさんとハヤト

カイ(情報収集エージェント)
「敵はシャアのザク。過去の戦闘で長期記憶に登録された『シャアは赤が好き』という情報と、『新しいモビルスーツの弱点』を短期記憶に格納したぞ!」

ハヤト(戦闘エージェント)
「了解!共通のMemoriデータベースでその情報を見た!俺は『シャアの予想進路』を自動でプロンプトに含めて、最適な迎撃ルートを計算する!」

ブライト艦長
「(…みんな、私が怒鳴らなくても連携できるようになったのか…)」

MemoriはPythonで提供されています。

まずは、戦いに必要な装備(ライブラリ)を整えます。

pip install Memori

デフォルトではSQLiteを使用できますが、より本格的な運用ではPostgreSQLなども使えます。特に準備は不要で、実行時に自動でデータベースファイルが作成されます。

LLMを扱うライブラリ(LangChainやLlamaIndexなど)と組み合わせて使用しますが、ここではMemori単体での基本的な使い方を紹介します。

この例では、エージェント(アムロ)が「連邦軍のパイロットである」という基本情報と、「過去の戦闘経験」を記憶し、次の会話でそれを活用します。

from Memori import Memori

# 1. パイロット(エージェント)を初期化
# 'pilot_amuro'というIDで記憶エンジンを起動
amuro = Memori(agent_id='pilot_amuro')

print("--- 起動(Memori初期化) ---")

# 2. 初期設定の注入(長期記憶に登録)
# 'conscious_ingest=True'で、重要な情報(基本設定、ルール)を意識的に短期記憶にも注入
initial_facts = [
    "私は連邦軍のパイロットである。",
    "私のモビルスーツはRX-78 ガンダムである。",
    "シャア・アズナブルは宿敵である。",
]

for fact in initial_facts:
    # Memoriに情報をインジェスト(取り込み)
    amuro.ingest_memory(
        memory_type="FACT", 
        memory_value=fact, 
        conscious_ingest=True
    )

print("\n--- 記憶の確認(検索) ---")
# 'pilot_amuro'に関連する記憶を検索
relevant_mems = amuro.retrieve_memory(query="私の立場と宿敵について教えて")

for mem in relevant_mems:
    # 検索結果(関連度の高い記憶)を表示
    print(f"**関連記憶:** {mem.memory_value}")

# 3. 会話の記録と処理(戦闘経験の記録)
print("\n--- 会話の記録と処理 ---")
# 新しい会話を記録(ユニバーサル記録)
amuro.universal_record(
    speaker="ブライト艦長", 
    message="アムロ、ザクにはビームライフルが最も有効だ。ヒートホークは避けろ!"
)

# 記録された会話からエンティティや事実を自動抽出・分類し、長期記憶に保存される
amuro.process_last_record() 

# 4. 次の戦闘(LLMへのプロンプト)に記憶を自動注入
print("\n--- 次のプロンプトへの自動注入 ---")
# 'get_context()'で、Memoriが最も関連性の高い記憶を自動で選び、
# LLMに渡すべきプロンプト文脈を生成
context_for_llm = amuro.get_context(query="次のザクとの戦闘で取るべき行動は?")

print("LLMへ渡すコンテキスト(アムロの記憶):")
print(context_for_llm)
LLMへ渡すコンテキスト(アムロの記憶):
**短期記憶:**
- 私は連邦軍のパイロットである。
- 私のモビルスーツはRX-78 ガンダムである。
- シャア・アズナブルは宿敵である。
**長期記憶:**
- ブライト艦長: アムロ、ザクにはビームライフルが最も有効だ。ヒートホークは避けろ!

---
次のザクとの戦闘で取るべき行動は?

解説

amuro.get_context()で、Memoriは「私は誰か」「宿敵は誰か」といった短期記憶と、「直近のブライト艦長の忠告」という長期記憶の中から関連度の高いものを選び出し、LLMが即座に使える一つの文脈(プロンプト)としてまとめてくれます。

これで、アムロ(エージェント)は毎回同じ質問をすることなく、賢く次の行動を判断できるようになるわけです!


GibsonAI/Memori




AIの知性を飛躍させる「MemoriLabs/Memori」入門:記憶の保存と検索のアーキテクチャ

ご提示いただいたオープンソースの記憶エンジン「MemoriLabs/Memori」について、ソフトウェアエンジニアの視点から、その有用性、導入方法、そしてサンプルコードの例を、コントのお化け屋敷のように面白おかしく、しかし技術的に分かりやすく解説しますね!


ソフトウェアエンジニアのためのAIエージェント入門:自律的なデバッグと実行のループを設計する

「本当のAIエージェント(Claude Codeのようなもの)」をどう作るのか、実際に手を動かした時のワクワク感を込めて解説します!これまで僕たちが使ってきたチャットAIは、言わば「アドバイスをくれる同僚」でした。でも、Claude CodeのようなAIエージェントは違います。彼は「実際にキーボードを叩いて、コマンドを実行し、バグを直して、テストを通す実務担当者」なんです。


AIアプリケーション開発のためのレシピブック

今日は「Haystack」という、AIの世界で最近話題の新しいカクテルを紹介させてください。これ、ただのAIじゃなくて、色々なAIの材料を組み合わせて、お客様の好みにぴったりの一杯を作り出すためのツールなんです。ソフトウェアエンジニアの視点から言えば、Haystackは例えるなら「AIアプリケーション開発のためのシェイカーとレシピブック」です。


PythonとNode.jsの力を解き放つ。ByteDanceのオープンソース「Deer-flow」でエージェント開発を加速させる

エンジニアの視点で見ると、これって「ただのチャットAI」とは全然別物。まるで、一歩先を読んで複雑な家事(仕事)を全部片付けてくれる、すごく有能な執筆・開発パートナーって感じかな。「どれが一番似合うかな?」って水着選びで迷うみたいに、Deer-flowの可能性を一緒に探っていこう!


22世紀のチャット運用術:AstrBotによるマルチプラットフォーム抽象化とエージェント基盤

のび太「ドラえも〜ん!LINEとかDiscordとか、いろんなSNSで動く自分専用のAI秘書を作りたいんだけど、設定が難しすぎて頭がパンクしそうだよ〜!」ドラえもん「やれやれ、のび太くんは相変わらずだね。でも安心しなよ!そんなときのために……(四次元ポケットをガサゴソ)……『AstrBot(アストラ・ボット)』!!」


現場直結!Difyで始めるプロダクションレディなエージェントワークフロー入門

(現場は薄暗い取り調べ室。刑事役の私と、容疑者役のDifyが向かい合っています)私(刑事) さて、Difyくん。キミは一体何者なんだ?「Production-ready platform for agentic workflow development」… ソフトウェアエンジニアにとって、どういう意味があるのか、正直に話してもらおうか!


ゲームをどこでも!ラーメン屋に学ぶ「Sunshine」の導入と活用法

想像してみてください。あなたは最高に美味しいラーメンを作る天才的な職人。あなたのラーメン(ゲーム)を求めて、遠くからお客様(Moonlight)がやってきます。お客様 (Moonlight) 「あぁ、あの店のラーメンが食べたい!でも遠いな


「あら、設定が丸見えよ!」Prowlerで焦げ付かないクラウド・セキュリティ管理術

「あら、大変!AWSの設定が油ギトギト(脆弱性だらけ)じゃない!」ソフトウェアエンジニアの皆さん、自分の作ったインフラが安全かどうか、不安で夜も眠れないことはありませんか?Prowlerは、あなたの代わりにクラウド環境を隅々までチェックして、焦げ付きや汚れを見つけ出してくれる、最強の自動お掃除ロボットなんです。


Pythonパッケージ管理の新境地:Poetryの魅力

夜の帳が降り、キーボードの光だけが部屋を照らす。君は、Pythonのプロジェクトを始めようと、指を静かに滑らせる。しかし、そこには常に付きまとう悩ましい問題があった。そう、依存関係の管理だ。requirements. txt と virtualenv を駆使しても、その関係性は複雑で、絡み合う糸のように、いつの間にか君を縛り付けてしまう。


型安全にAIとUIを繋ぐ:tambo-ai/tambo で始めるエージェント指向のフロントエンド開発

まずは、ちょっとした「コント」でこの技術の本質を掴んでもらおうかな。エンジニア(僕) 「ねえ、AIちゃん。単刀直入に聞くけど……彼女の下着は何色?」AI(tambo導入済み) 「えっ、急に何ですか!?……まあ、あなたがそう言うなら、これを見て判断してください(スッ)」