Home
Login

AIアプリケーションにメモリレイヤーを提供するPythonライブラリ。MongoDB統合とセマンティック検索機能をサポート。

MITPython 290RichmondAlakememorizz Last Updated: 2025-06-30

MemoRizz プロジェクト詳細

プロジェクト概要

MemoRizzは、AIアプリケーション向けに設計されたPythonのメモリ管理ライブラリであり、AIエージェントに永続的でコンテキスト認識型のセマンティック検索可能な情報ストレージ機能を提供します。このプロジェクトは、MongoDBとベクトル埋め込み技術をシームレスに統合することで、対話履歴の追跡、ツール使用の管理、一貫した役割の維持など、複雑な認知機能をエージェントに付与します。

⚠️ 重要警告:MemoRizzは実験的なライブラリであり、教育目的のみに使用されます。本番環境や機密データでの使用は推奨されません。

主要機能

🧠 永続的メモリ

  • AIエージェントがセッション間で記憶を保持できるようにします
  • 長期的な情報の保存と検索をサポートします
  • コンテキスト認識型のメモリ管理

🔍 セマンティック検索

  • 自然言語を使用して関連情報を検索します
  • ベクトル埋め込みに基づく類似性検索
  • MongoDB Atlas ベクトル検索との統合

🛠️ ツール統合

  • 関数の自動検出と実行
  • Python関数をLLMが呼び出し可能なツールに変換
  • ツールのセマンティックインデックスと自然言語による検出

👤 ロールシステム

  • 一貫性のある専門的なエージェントの役割を作成
  • エージェントの振る舞いと応答スタイルをカスタマイズ
  • 役割の背景と目標設定

📊 ベクトル検索

  • MongoDB Atlas ベクトル検索による効率的な検索
  • 保存された情報の自動埋め込みとインデックス作成
  • 複数のメモリタイプ分類をサポート

システムアーキテクチャ

┌─────────────────┐
│ MemAgent        │ ← 高レベルエージェントインターフェース
├─────────────────┤
│ Persona         │ ← エージェントの個性と振る舞い
├─────────────────┤
│ Toolbox         │ ← 関数登録と検出
├─────────────────┤
│ Memory Provider │ ← ストレージ抽象化レイヤー
├─────────────────┤
│ Vector Search   │ ← セマンティック類似性と検索
├─────────────────┤
│ MongoDB         │ ← 永続ストレージバックエンド
└─────────────────┘

インストール要件

  • Python 3.7+
  • MongoDB Atlas アカウント(またはベクトル検索機能付きのローカルMongoDB)
  • OpenAI APIキー(埋め込みおよびLLM機能用)

インストール方法

pip install memorizz

基本的な使用例

1. 基本的なエージェント設定

import os
from memorizz.memory_provider.mongodb.provider import MongoDBConfig, MongoDBProvider
from memorizz.memagent import MemAgent
from memorizz.llms.openai import OpenAI

# APIキーを設定
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"

# MongoDBメモリプロバイダーを設定
mongodb_config = MongoDBConfig(uri="your-mongodb-atlas-uri")
memory_provider = MongoDBProvider(mongodb_config)

# MemAgentを作成
agent = MemAgent(
    model=OpenAI(model="gpt-4"),
    instruction="You are a helpful assistant with persistent memory.",
    memory_provider=memory_provider
)

# 会話を開始 - エージェントはセッション間で記憶を保持します
response = agent.run("Hello! My name is John and I'm a software engineer.")
print(response)

# 後で別のセッションで...
response = agent.run("What did I tell you about myself?")
print(response)  # エージェントはJohnがソフトウェアエンジニアであることを覚えています

2. ロールシステムの使用

from memorizz.persona import Persona

# 技術専門家ロールを作成
tech_expert = Persona(
    name="TechExpert",
    role="Senior Software Engineer",
    goals="Help developers solve complex technical problems with detailed explanations.",
    background="10+ years experience in Python, AI/ML, and distributed systems."
)

# ロールをエージェントに適用
agent.set_persona(tech_expert)
agent.save()

# これでエージェントは技術専門家として応答します
response = agent.run("How should I design a scalable microservices architecture?")

3. ツール統合

from memorizz.database.mongodb import MongoDBTools, MongoDBToolsConfig

# ツールデータベースを設定
tools_config = MongoDBToolsConfig(
    uri="your-mongodb-atlas-uri",
    database_name="my_tools_db"
)

# デコレータを使用してツールを登録
with MongoDBTools(tools_config) as tools:
    toolbox = tools.mongodb_toolbox()
    
    @toolbox
    def calculate_compound_interest(principal: float, rate: float, time: int) -> float:
        """Calculate compound interest for financial planning."""
        return principal * (1 + rate) ** time
    
    @toolbox
    def get_weather(city: str) -> str:
        """Get current weather for a city."""
        # あなたの天気API統合コード
        return f"Weather in {city}: 72°F, sunny"

# エージェントにツールを追加
agent.add_tool(toolbox=tools)

# エージェントはこれらのツールを自動的に検出し、使用できるようになります
response = agent.run("What's the weather in San Francisco and calculate interest on $1000 at 5% for 3 years?")

メモリタイプ

MemoRizzは、情報を整理するために異なるメモリカテゴリをサポートしています:

  • Conversation: チャット履歴と会話コンテキスト
  • Task: 目標指向の情報と進捗追跡
  • Workflow: 多段階プロセス情報
  • General: 事実知識と宣言的情報
  • Working: 一時的な処理スペース(LLMコンテキスト)

高度な機能

メモリの保存と検索

# 自動埋め込み付きで情報を保存
agent.store_memory("I prefer Python for backend development", memory_type="general")

# 後で、セマンティックに関連するクエリがこれらの情報を検索します
response = agent.run("What programming languages do I like?")
# エージェントは保存された好みを検索し、使用します

メタデータ付きメモリ制御

# メタデータ付きで情報を保存
agent.store_memory(
    content="Completed project X with React and Node.js",
    memory_type="task",
    metadata={"project": "X", "technologies": ["React", "Node.js"]}
)

# 特定のメモリを検索
memories = agent.retrieve_memories(
    query="projects with React",
    memory_type="task",
    limit=5
)

環境設定

# 必須
export OPENAI_API_KEY="your-openai-api-key"
export MONGODB_URI="your-mongodb-atlas-uri"

# オプション
export MONGODB_DB_NAME="memorizz"  # デフォルトのデータベース名

セットアップ手順

  1. MongoDB Atlas クラスターを作成
  2. クラスターでベクトル検索を有効化
  3. エージェント用のデータベースとコレクションを作成
  4. 接続文字列を取得

よくある質問

  • MongoDB接続: AtlasでIPがホワイトリストに登録されていることを確認してください
  • ベクトル検索: クラスターでベクトル検索が有効になっていることを確認してください
  • APIキー: OpenAI APIキーが有効で、クレジットがあることを確認してください

サンプルプロジェクト

examples/ ディレクトリで完全な動作例を確認できます:

  • 基本的なエージェント: メモリ付きのシンプルな会話エージェント
  • 専門エージェント: ロールを持つ技術専門家
  • ツール統合: カスタム関数呼び出し付きエージェント
  • メモリ管理: 高度なメモリ保存と検索

技術的な学習価値

このライブラリは、以下の主要な概念を実証しています:

  • AIエージェントアーキテクチャ: メモリ、推論、ツール使用
  • ベクトルデータベース: セマンティック検索と検索
  • LLM統合: 関数呼び出しとコンテキスト管理
  • ソフトウェア設計: 明確な抽象化とスケーラブルなアーキテクチャ

Star History Chart