Skip to main content
Mem0 は、文脈を保った会話を維持するために設計されたメモリエンジンです。ユーザーが同じ内容を繰り返し入力する必要をなくし、エージェントが一貫性のある継続的な応答を返せるようにします。すべてを自社インフラ上で管理したいチームに適したアダプティブなメモリソリューションであり、スタック・データ・カスタマイズを完全にコントロールできます。

前提条件

作業を始める前に、以下の環境を準備してください。
  • SambaCloud のアカウントと API キー
  • OpenAI の API キー。 Mem0 はチャットモデルに加えて Embedding (埋め込み) モデルを必要としますが、SambaNova の Embedding は SambaStack のみで提供されています。SambaCloud では embedder を別のプロバイダーから用意する必要があるため、SambaNova のキーに加えて OPENAI_API_KEY が必須です。どの呼び出しがどこへ送られるかは Mem0 での SambaNova の使われ方 をご参照ください。
  • Python 3.10 以上。サンプルリポジトリでバージョン固定されている langchain および langchain-sambanova のリリースは 3.10 を必要とするため、3.9 では pip install -r requirements.txt が失敗します。
  • ベクトルストアのインストールや起動は不要です。Mem0 はデフォルトでローカル組み込みモードの Qdrant を使用し、ローカルマシン上のディレクトリに書き込みます。
macOS に標準搭載されている Python は 3.9 で、python ではなく python3 として提供されます。python3 --version でバージョンを確認してください。3.10 未満の場合は、pyenv、uv、または brew install python@3.12 でサポート対象のバージョンをインストールしてから先へ進んでください。

Mem0 での SambaNova の使われ方

Mem0 は 3 種類の呼び出しを行い、それぞれが独立してプロバイダーに解決されます。どの呼び出しがどれに当たるかを理解すれば、2 つのキーが必要な理由がわかります。
Mem0 の設定から llm ブロックを省略しても、Mem0 は SambaNova にフォールバックしません。デフォルトの provider: "openai" とモデル gpt-4.1-nano-2025-04-14 になり、OPENAI_API_KEY を読み取るため、メモリ抽出が気づかないうちに OpenAI 上で実行されてしまいます。この処理を SambaNova 上で実行するために、以下のように llm ブロックを明示的に設定してください。

クイックスタート

このクイックスタートは単体で完結しています。何もクローンすることなく、メモリを保存し、後のターンで想起し、プロンプトに反映します。

Mem0 のインストール

バージョンは固定してください。Mem0 の設定スキーマはメジャーバージョン間で変わり、以下の設定は 1.x のスキーマに合わせて書かれています。mem0ai は依存関係として openai クライアントをインストールするため、別途インストールする必要はありません。

API キーの設定

メモリの保存と想起

以下を quickstart.py として保存し、python quickstart.py で実行します。
この設定には、見た目以上に重要な点が 2 つあります。
  • openai_base_url は、OpenAI 互換クライアントの接続先を変更するために Mem0 が読み取るキーです。base_url と書くと TypeError: __init__() got an unexpected keyword argument 'base_url' が発生します。
  • embedder ブロックには意図的に openai_base_url を設定していないため、接続先は https://api.openai.com/v1 になります。環境変数 OPENAI_BASE_URL は設定しないでください。Mem0 の embedder がこれを読み取って Embedding リクエストを SambaNova に送信してしまいますが、SambaCloud では Embedding は提供されていません。

動作確認

最初のターンでは想起するものがありません。2 番目のターンが動作の証明になります。ターン 1 から抽出されたメモリが返され、プロンプトに反映されます。
抽出されるメモリと 2 つの応答の正確な文言は、実行のたびに変わります。連携が機能していることの確認になるのは、2 番目の [recalled] ブロックが空でないことです。 あるユーザーについて保存されているすべての内容を一覧するには、以下を quickstart.py の末尾に追記します。上で定義した memory オブジェクトと USER_ID を再利用します。
on_disk は意図的に True に設定しています。Mem0 のローカル Qdrant ストアのデフォルトは on_disk: False で、このモードでは Memory オブジェクトを構築するたびにストアのディレクトリが削除されるため、メモリが再起動後に残りません。on_disk: True に設定すると、実行をまたいでメモリが保持されます。

サンプルアプリケーションの実行

sambanova/integrations リポジトリには、同じ追加・検索のループを対話型の REPL でラップした、より長いサンプルがあります。

リポジトリのクローン

仮想環境の作成

インストールの前に、環境がサポート対象のバージョンを使用していることを確認します。

依存パッケージのインストール

環境変数の設定

プロジェクトディレクトリに .env ファイルを作成し、両方のキーを記述します。
または、ターミナルで変数を直接エクスポートします。

スクリプトの実行

このスクリプトは、SambaNova に接続された Mem0 のメモリクライアントを初期化して対話型のチャットループを開始するため、フォローアップの質問をすることでターンをまたいだメモリの保持を確認できます。終了するには exit と入力します。
このサンプルは Embedding モデルに E5-Mistral-7B-Instruct を設定していますが、このモデルは 2026年4月6日に SambaCloud での提供が終了し、SambaStack のみで提供されています。SambaCloud のキーでは、メモリの書き込みと検索がすべて失敗します。別の SambaNova Embedding モデルに置き換えても解決しません。SambaCloud は現在 Embedding エンドポイントを提供していないためです。SambaCloud に対してサンプルを実行するには、main.py を編集して SambaNova 以外の embedder を使用してください。embedder ブロックを上記 クイックスタート の OpenAI embedder に置き換え、embedding_model_dims を text-embedding-3-small に合わせて 1536 に設定します (サンプルは現在 E5-Mistral 用に 4096 を設定しています)。あるいは、Embedding エンドポイントを提供する SambaStack デプロイメントに向けてサンプルを実行してください。また、このサンプルは llm ブロックを省略しているため、メモリ抽出は SambaNova ではなく OpenAI 上で実行されます。SambaNova 上で実行するには、クイックスタートの llm ブロックを追加してください。
スクリプトはバナーを表示した後、入力を待機します。
このプロンプトはモデル呼び出しが行われる前に表示されるため、ここまで到達しても確認できるのは依存パッケージのインポートが成功したことだけです。設定やキーの問題は、起動時ではなく最初のメッセージ送信時に表面化します。 完全なソースコードと追加のサンプルは、GitHub の Mem0 連携サンプル でご覧いただけます。

トラブルシューティング

macOS には python 実行ファイルはなく、python3 のみが提供されます。仮想環境の作成には python3 -m venv .venv を使用してください。source .venv/bin/activate で有効化すれば、環境内では python が期待どおりに動作します。
バージョン固定されている langchain および langchain-sambanova のリリースには Python 3.10 以上が必要です。有効化した環境内のインタープリターを python --version で確認し、3.9 と表示される場合はサポート対象のインタープリターで環境を作り直してください。
プロンプトはモデル呼び出しが行われる前に表示されるため、設定に問題があっても、最初のメッセージを送信するまで表面化しません。そのターンでは、Embedding エンドポイントに対するメモリ検索、チャット補完、そして両方を再度使用するメモリ書き込みの 3 つの呼び出しが順に行われます。Embedding の呼び出しが最初なので、通常はそれが最初に失敗します。エラーのテキストを読み、どのエンドポイントがリクエストを拒否したかを確認してください。
2 つのキーのいずれかが未設定または誤っています。メッセージ本文を読んでどちらかを判別してください。platform.openai.com を案内する 401 は embedder からのものなので、OPENAI_API_KEY を確認します。それ以外の 401 はチャットまたはメモリ LLM の呼び出しからのものなので、SAMBANOVA_API_KEY を確認し、SambaCloud ポータル からコピーし直してください。各ターンの最初の処理はメモリ検索であるため、embedder が最初に失敗する呼び出しになります。そのため、SambaNova のキーが正しくても OpenAI の 401 が表示されることがあります。また、サンプルの main.py は os.environ.setdefault を呼び出すため、起動時に失敗する代わりにプレースホルダの値で代替され、エラーは最初のメッセージ送信時にのみ表面化します。クイックスタートは代わりに os.environ[...] でキーを読み取るため、キーが欠けていれば即座に失敗します。
SambaNova の Embedding は SambaStack のみで提供されており、E5-Mistral-7B-Instruct は 2026年4月6日に SambaCloud での提供が終了しました。SambaCloud のキーではこのエンドポイントに到達できません。クイックスタートのように SambaNova 以外の embedder を設定するか、SambaStack デプロイメントを使用してください。
想定どおりの動作です。Mem0 には embedder が必要ですが、SambaCloud は Embedding を提供していないため、embedder は OpenAI 上で動作し OPENAI_API_KEY を読み取ります。両方のキーを設定する必要があります。設定から llm ブロックも省略している場合は、Mem0 のメモリ LLM もデフォルトの OpenAI になり、同じキーを読み取ります。
Mem0 の OpenAI 互換プロバイダー設定では、base_url ではなく openai_base_url を使用します。llm 設定ブロック内のキー名を変更してください。
llm ブロックが存在し、provider が openai、openai_base_url が https://api.sambanova.ai/v1 に設定されていることを確認してください。Mem0 は専用のプロバイダーではなく OpenAI 互換クライアントを通じて SambaNova に接続するため、provider: "sambanova" は Unsupported LLM provider として拒否されます。
Mem0 のローカル Qdrant ストアのデフォルトは on_disk: False で、このモードでは Memory オブジェクトの構築時にストアのディレクトリが削除されます。実行をまたいでメモリを保持するには、vector_store 設定で on_disk を True に設定してください。
メモリの書き込みでは、会話をメモリ LLM に通して事実を抽出するため、保存に値する事実を含まないターンからはメモリが生成されません。何が保存されたかは memory.get_all(user_id=USER_ID) で確認してください。また、メモリはユーザーごとにスコープされるため、search と add が同じ user_id を使用していることも確認してください。
vector_store 設定の embedding_model_dims は、Embedding モデルの出力サイズと一致している必要があります (text-embedding-3-small は 1536、E5-Mistral-7B-Instruct は 4096)。embedder を変更した後は、ローカルのストアディレクトリを削除して、コレクションが新しいサイズで再作成されるようにしてください。

参考情報

Mem0 の詳細については、Mem0 の公式ドキュメント をご参照ください。