Becomer: LLM-agnostic persistent memory API. Store and recall memories across GPT, Claude, Gemini, or any model — zero tokens per recall. について
BECOMERは、セッションをまたいで情報を保存・取得するAIアプリ向けのメモリーAPIです。Python SDKとREST APIに加え、MCP連携とuser_id単位の分離に対応します。
主な機能
- 01セッションをまたぐメモリーの保存と取得
- 02user_idごとのメモリー分離
- 03Python SDKとREST API
- 04保存済みメモリーの削除と統合
活用シーン
- 01会話をまたいでユーザー設定を保持
- 02アプリのユーザーごとにメモリーを分離
- 03AIアプリ向けの関連情報の取得
MCP 対応
BECOMERはMCPサーバーとして動作し、対応ホストからメモリーの保存と取得を行えます。user_idによるユーザー単位の分離にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
BECOMER — AI アプリケーション向けメモリー API
3 行のコードで、AI アプリに永続的なメモリーを追加できます。
from becomer import Client
mem = Client("bk-your-api-key")
mem.store("User prefers dark mode and speaks French")
memories = mem.recall("user preferences") # → ['User prefers dark mode...']
→ 無料の API キーを取得 · ドキュメント · ベンチマーク · サンプル
BECOMER を選ぶ理由
多くのメモリーソリューションはベクトルストアを追加しただけで完成としています。BECOMER は、長期的な会話メモリーを評価する標準的な学術ベンチマークである LongMemEval に照らして性能を測定した、独自の検索エンジンを採用しています。
| ベンチマーク | BECOMER | Hindsight(次点) |
|---|---|---|
| LongMemEval(500 件のプローブ) | 94.4% | 91.4% |
94.4% という数値は、ユーザーが「先週、食事について何を伝えた?」と尋ねたとき、正しいメモリーが呼び出されることを意味します。曖昧に関連するものではなく、正しい情報が呼び出されます。
インストール
pip install becomer
依存関係はありません。Python の標準ライブラリのみで動作します。
クイックスタート
from becomer import Client
mem = Client("bk-your-api-key")
# Store anything worth remembering
mem.store("User is building a React app, prefers TypeScript")
mem.store("User's name is Sarah, she's a senior engineer at Stripe")
# Recall before each LLM call
context = mem.recall("what do I know about the user?")
# → ['User is building a React app, prefers TypeScript',
# "User's name is Sarah, she's a senior engineer at Stripe"]
# Build your prompt with memory injected
system_prompt = "You are a helpful assistant.\n\nWhat you remember:\n" + "\n".join(context)
3 つの統合方法
1. Python SDK(このリポジトリ)
from becomer import Client
mem = Client("bk-your-api-key")
mem.store("...")
mem.recall("...")
2. MCP — Claude Desktop、Cursor、あらゆる MCP ホストで動作
{
"mcpServers": {
"becomer": {
"command": "python",
"args": ["-m", "becomer"],
"env": { "BECOMER_API_KEY": "bk-your-api-key" }
}
}
}
Claude はセッションをまたいで、メモリーを自動的に保存および呼び出します。コードを変更する必要はありません。
3. REST API — 言語を問わず利用可能
# Store
curl -X POST https://becomer.net/v1/store \
-H "Authorization: Bearer bk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"content": "User prefers concise answers"}'
# Recall
curl -X POST https://becomer.net/v1/recall \
-H "Authorization: Bearer bk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"query": "user preferences", "top_k": 5}'
マルチテナント(1 つのキーで複数のユーザーに対応)
各ユーザー専用の分離されたメモリーが必要なプロダクトを開発していますか?user_id を渡すだけで利用できます。追加のキーは不要です。
from becomer import Client
# One master key for your whole app
mem = Client("bk-your-master-key", user_id="user-alice")
mem.store("Alice prefers Python over JavaScript")
# Different user — completely isolated memory space
mem_bob = Client("bk-your-master-key", user_id="user-bob")
mem_bob.recall("programming preferences") # → [] (can't see Alice's memories)
# Or override per-call
mem = Client("bk-your-master-key")
mem.store("Bob uses dark mode", user_id="user-bob")
mem.recall("preferences", user_id="user-alice") # → Alice's memories only
ユーザーごとに分離した MCP:
{
"mcpServers": {
"becomer": {
"command": "python",
"args": ["-m", "becomer"],
"env": {
"BECOMER_API_KEY": "bk-your-master-key",
"BECOMER_USER_ID": "alice-123"
}
}
}
}
REST API:
curl -X POST https://becomer.net/v1/store \
-H "Authorization: Bearer bk-your-master-key" \
-H "Content-Type: application/json" \
-d '{"content": "Alice prefers dark mode", "user_id": "alice-123"}'
user_id には、UUID、ユーザー名、メールアドレスなど、アプリ内部で使用している任意の文字列を指定できます。異なる user_id 間のメモリーは完全に分離されます。料金はマスターキーに対して計上されます。
LangChain
from langchain.memory import BaseMemory
from becomer import Client
from pydantic import Field
class BecomerMemory(BaseMemory):
client: object = Field(default=None)
memory_key: str = "history"
def __init__(self, api_key: str, **kwargs):
super().__init__(**kwargs)
self.client = Client(api_key)
@property
def memory_variables(self):
return [self.memory_key]
def load_memory_variables(self, inputs):
query = inputs.get("input", "")
memories = self.client.recall(query)
return {self.memory_key: "\n".join(memories)}
def save_context(self, inputs, outputs):
self.client.store(f"User: {inputs.get('input','')} | AI: {outputs.get('output','')}")
def clear(self):
self.client.forget()
# Usage
from langchain.chains import ConversationChain
from langchain_openai import ChatOpenAI
chain = ConversationChain(
llm=ChatOpenAI(model="gpt-4o"),
memory=BecomerMemory(api_key="bk-your-api-key")
)
chain.predict(input="My name is Sarah and I work at Stripe")
# Next session — Sarah is still remembered.
OpenAI / Anthropic との直接連携
import openai
from becomer import Client
mem = Client("bk-your-api-key")
def chat(user_message: str) -> str:
context = mem.recall(user_message)
system = "You are a helpful assistant."
if context:
system += "\n\nWhat you remember about the user:\n" + "\n".join(f"- {m}" for m in context)
response = openai.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system},
{"role": "user", "content": user_message},
]
)
reply = response.choices[0].message.content
mem.store(f"User said: {user_message}")
return reply
API リファレンス
| メソッド | 説明 |
|---|---|
Client(api_key, user_id=None) | クライアントを作成します。user_id はすべての呼び出しをサブユーザー単位に名前空間化します。 |
store(content, user_id=None) | メモリーを保存します |
recall(query, top_k=5, user_id=None) | 関連性の高いメモリーを上位 k 件取得します |
forget(user_id=None) | このキー(またはサブユーザー)のすべてのメモリーを削除します |
sync(user_id=None) | ワーキングメモリーを長期ストレージに統合します |
REST API の全ドキュメント → becomer.net/docs.html
サンプル
| ファイル | フレームワーク |
|---|---|
| quickstart.py | プレーンな Python |
| openai_chat.py | OpenAI SDK |
| anthropic_chat.py | Anthropic SDK |
| langchain_memory.py | LangChain |
| langgraph_memory.py | LangGraph |
| llamaindex_memory.py | LlamaIndex |
| crewai_memory.py | CrewAI |
| autogen_memory.py | AutoGen |
| mcp.json | MCP(Claude Desktop / Cursor) |
| mcp_multitenant.json | MCP マルチテナント |
料金
| プラン | 月間呼び出し回数 | 価格 |
|---|---|---|
| Free | 1,000 | 永年無料 |
| Pro | 50,000 | ₹1,140/月 |
開発元
Obsidex Pvt Limited · Aravind Balaji、創業者 · [email protected]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。