AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

スタンドアロン メモリ サービスの使用

MongoDB Atlas Agent Engine メモリ サービスは、エージェントの完全な配置とは別に、スタンドアロンサービスとして実行できます。このガイドを使用して、メモリプロジェクト用のメモリサーバーをプロビジョニングし、agent-engine-sdk-memory Pythonソフトウェア開発キット(SDK)を使用して外部アプリケーションからの対話コンテキストをレコードおよび取得します。

次のいずれかのモードでメモリ サービスを実行できます。

  • ホスト型: メモリサーバーはAtlas Agent Engine で実行され、アプリケーションは サービス アカウント アクセス トークン を使用してそのサーバーに接続します。配置されたアプリケーションにはこのモードを使用します。

  • ローカル: メモリサーバーはagentengine CLI によって管理されるローカルDockerコンテナ内で実行され、アプリケーションはそれに直接接続します。このモードを使用して、ローカルで開発とテストを行います。

ホスト型モードでは、agent-engine-sdk-memory SDK はサービス アカウント アクセス トークンを使用してホスト型メモリ ゲートウェイに接続します。ゲートウェイは、サービス アカウントから組織とプロジェクトを読み取ります。やり取りごとに user_id と session_id の値を SDK に渡して、やり取りのメモリをそのユーザーとセッションにスコープ設定します。

Tip

メモリの詳細については、 「エージェントメモリのガイド」を参照してください。

次の機能は、 ホスト型モードで利用できます。

  • record_turn()セッションのコンテキストを記録と取得するための 、build_context()、search() SDK メソッド

  • セマンティック、エポック、手順、分類別検索

  • 作成操作と読み取り操作を直接作成し、save_*、get_*、または list_* の形式で操作します

  • カスタム メモリ型(汎用の save() メソッドと retrieve() メソッドを使用

ローカルモードでは、agentic-platform-memory SDK は、マシン上で agentengine dev up コマンドによって起動されるローカル Organization Engine(oe)プロキシに直接接続します。 base_url 値はローカル oe URLに設定する必要があります。接続用に project_id またはアクセス トークンを設定しないでください。

次の機能は ローカルモードで利用できます。

  • record_turn()セッションのコンテキストを記録と取得するための 、build_context()、search() SDK メソッド

  • セマンティック、エポック、手順、分類別検索

  • 作成操作と読み取り操作を直接作成し、save_*、get_*、または list_* の形式で操作します

ローカルモードではカスタムメモリ型を使用できません。

さまざまなメモリ型の詳細については、 エージェント メモリのガイドを参照してください。

このセクションでは、Atlas Agent Engine でホストされているメモリ専用プロジェクトを作成する方法を説明します。

このチュートリアルを開始する前に、次のリソースがあることを確認してください。

  • agentengineCLI がインストールおよび認証されました。詳しくは、「 インストールと認証 」を参照してください。

  • agentengine auth loginを実行中して Atlas Agent Engine にアクセスします。

  • メモリ埋め込みを生成するための投票AI APIキー。

  • 大規模言語モデル(LVM)プロバイダーのAPIキー(ANTHROPIC_API_KEY など)。

  • pip または uv がインストールされた場合、 Python SDK をインストールします。

  • メモリ データを保存するには、Atlas Flex(最小要件)、 、 、またはそれ以降の階層クラスター(推奨)。クラスターをプロビジョニングするには、「M10 M20Atlas リソースの設定 」を参照してください。

    • このガイドでは、Atlas クラスターの接続文字列が必要です。接続文字列を取得する方法については、 「クラスターへの接続」ガイドを参照してください。

    • メモリ データとインデックス数が大きくなるにつれて対応するために、専用の M10 以降の階層クラスターを配置することをお勧めします。 Atlas Flex は、メモリ サービスをサポートできる最低のクラスター層です。

    • クラスターのIP アクセス リストは、 Atlas Agent Engine データ プレーンからのトラフィックを許可する必要があります。データプレーンのIPアドレスを追加する方法については、「 Atlas ネットワークアクセスの構成 」セクションを参照してください。

注意

リンクされた Atlas クラスターが、 メモリに必要な検索インデックスとベクトル検索インデックスを作成できない場合、Atlas Agent Engine は Memory: waiting ステージで配置を停止し、Error: context deadline exceeded エラー メッセージを表示してタイムアウトすることがあります。

1

メモリ専用のプロジェクトを足場 するには、次のコマンドを実行します。 "My Project" をプロジェクト名に置き換えます。

agentengine create --memory-only --name "My Project"

コマンドは、project-config.yamlファイルのみを含み、agent.yamlファイルとワークスペースは含まれないプロジェクトディレクトリを生成します。

2
  1. 以下のコマンドを実行して、プロジェクトを登録します。このコマンドは、新しいプロジェクトIDを出力します。

    agentengine project create "My Project"
  2. 新しいプロジェクトをアクティブとして選択します。 <project-id> を、前のコマンドによって出力されたプロジェクトIDに置き換えます。

    agentengine auth login --project-id <project-id>
3
  1. project-config.yamlファイルを開き、memory: ブロックの下にシークレット名と抽出プロバイダーを設定します。

  2. 次のコマンドを実行して、プロジェクトに必要なシークレットを設定します。

    agentengine secret set MONGODB_URI --value "<value>" --project-id <project-id>
    agentengine secret set VOYAGE_API_KEY --value "<value>" --project-id <project-id>
    agentengine secret set ANTHROPIC_API_KEY --value "<value>" --project-id <project-id>

    以下のプレースホルダー値を置き換えます。

    • <value>: シークレットの値。

      • MONGODB_URI: Atlas クラスターの接続文字列。

      • VOYAGE_API_KEY: 投票AIキー。

      • ANTHROPIC_API_KEY: LM プロバイダーのキー。

    • <project-id>: agentengine project create コマンドによって返されたプロジェクトオブジェクトID 。このフラグは、メモリ専用ワークフローに agents.yamlファイルが含まれていないために必要です。

    別のプロバイダーを使用する場合は、ANTHROPIC_API_KEY を LM プロバイダーのキー名に置き換えます。

  3. メモリ構成を保存します。

    agentengine memory configure

注意

MONGODB_URI シークレットを設定しない場合、またはメモリ サービスが接続文字列のポイントするクラスターに到達できない場合、プロビジョニングは失敗します。プロビジョニングに失敗した場合は、クラスターのIP アクセス リストに Atlas Agent Engine データ プレーンのIPアドレスが含まれていることを確認します。

4

メモリのランタイムを開始し、準備ができるまで待ちます。

agentengine memory apply --wait
5
  1. 以下のコマンドを実行して、プロジェクトのサービス アカウントを作成します。

    agentengine service-account create memory-service --project-id <project-id> --role PROJECT_OWNER

    <project-id> プレースホルダーをプロジェクトIDに置き換えます。コマンド出力からクライアントIDとクライアントシークレットを保存します。 Atlas Agent Engine はクライアントシークレットを 1 回だけ表示します。

  2. 次のコマンドを実行して、クライアントIDとクライアントシークレットをアクセス トークンと交換します。

    export ACCESS_TOKEN=$(curl --fail-with-body --silent --show-error \
    --user <client-id> \
    --data grant_type=client_credentials \
    "https://agentengine.mongodb.com/api/v1/oauth/token" | jq -er .access_token)

    <client-id> プレースホルダーをクライアントIDに置き換えます。 curl はクライアントシークレットを反復せずに入力するよう要求します。

    Tip

    アクセス トークンの有効期間は 1 時間です。現在のトークンの有効期限が切れる前に新しいトークンをリクエストします。

6

前のステップでエクスポートしたアクセス トークンを使用して、プラットフォームのプライベート レジストリから agent-engine-sdk-memoryパッケージをインストールします。

pip install agent-engine-sdk-memory \
--extra-index-url "https://ignore:$ACCESS_TOKEN@agentengine.mongodb.com/api/v1/packages/python/simple"
uv pip install agent-engine-sdk-memory \
--extra-index-url "https://ignore:$ACCESS_TOKEN@agentengine.mongodb.com/api/v1/packages/python/simple"

URL はusername:password形式を使用します。レジストリは パスワードフィールドのアクセス トークンのみを使用して認証するため、 ignore はプレースホルダーユーザー名です。 $ACCESS_TOKEN は、前の手順でエクスポートしたアクセス トークンに解決されます。

7

アプリケーションに、次のコードを追加して、クライアントを作成し、ユーザー ID をバインドし、切り替えが発生したときにレコード、後でのやり取りで関連コンテキストを検索します。

from agent_engine_sdk_memory import (
Memory,
MemoryRequestContext,
)
# Create the client using your access token.
memory = Memory(service_account_token="<your-access-token>")
# Bind the user and session for this conversation.
chat = memory.bind(
MemoryRequestContext(
user_id="user_1",
session_id="thread_123",
)
)
# Record turns as they happen.
chat.record_turn(
role="user",
content="I always fly out of Boston.",
)
chat.record_turn(
role="assistant",
content="Got it, Boston is saved as your home airport.",
)
# In a later conversation, recall what matters.
later = memory.bind(
MemoryRequestContext(
user_id="user_1",
session_id="thread_456",
)
)
context = later.build_context(
query="Where should the flight book from?"
)
hits = later.search("home airport", top_k=5)

注意

タームを記録しても、長期的なメモリはすぐには生成されません。メモリ サービスは、 を非同期に長期メモリに統合します。記録されたタームは、書込み後すぐに search() または build_context() の結果に表示されない可能性があります。

サーバー を再プロビジョニングせずにメモリ構成を更新するには、次の手順を実行します。

  1. project-config.yamlファイル内の memory: ブロックを編集します。

  2. プロジェクトディレクトリから、agentengine memory configure を実行してメモリ構成をアップロードします。

  3. agentengine memory apply を実行して構成を適用します。

プラットフォームでメモリを構成する方法については、「 メモリの構成 」を参照してください。

このセクションでは、スキャフォールディング、開始、および ローカル メモリスタックへの接続方法を説明します。

このチュートリアルを開始する前に、次のリソースがあることを確認してください。

  • agentengineCLI がインストールされました。詳しくは、「 インストールと認証 」を参照してください。

  • メモリ埋め込みを生成するための投票AI APIキー。

  • バックグラウンド抽出を有効にする場合は、ANTHROPIC_API_KEY などの大規模言語モデル(llm)プロバイダーのAPIキー。

  • pip または uv がインストールされた場合、 Python SDK をインストールします。

1

次のコマンドを実行して、ローカル開発用のメモリ専用プロジェクトを実行します。 "My Project" をプロジェクト名に置き換えます。

agentengine create --memory-only --name "My Project"

コマンドは、memory_only を true に設定し、 メモリ構成スキーマを指定する project-config.yamlファイルを書き込みます。

このコマンドは、agent.yamlファイル、 agents/ディレクトリ、またはエージェントランタイム コードを生成しません。 --memory-only フラグは、--template、--llm、--memory、または --open-egress フラグと組み合わせて使用できません。

2

プロジェクトディレクトリに .envファイルを作成し、ファイルに次の変数を設定します。

  • VOYAGE_API_KEY: 投票AI埋め込みに必要

  • LVM プロバイダーキー(ANTHROPIC_API_KEY など): project-config.yaml でバックグラウンド抽出が有効になっている場合に必要です

MONGODB_URI 変数を設定する必要はありません。 agentengine dev up コマンドは、バンドルされているローカルMongoDBコンテナを自動的にプロビジョニングし、接続します。代わりに外部のMongoDBインスタンスを使用する場合は、この変数を設定します。

3

プロジェクトディレクトリから、次のコマンドを実行してローカル メモリスタックを起動します。

agentengine dev up

メモリ専用のプロジェクトの場合、このコマンドは次のコンテナのみを起動します。

  • mongodb: Atlas と互換性のあるMongoDB のローカルインスタンス

  • memory-server: メモリ ランタイム サービス

  • oe: SDK が接続するローカル 組織化エンジンのプロキシ

コマンド出力には、ローカルの oe サービスと memory-server サービスの URL が含まれます。後のステップで使用する oe URLをコピーします。

ローカルスタックを管理するには、次のコマンドを使用します。

コマンド
説明

agentengine dev status

ローカルスタックのステータスを表示します。

agentengine dev logs

すべてのサービスのログをストリームします。引数として memory-server を渡し、そのサービスのログのみをストリーミングします。

agentengine dev stop

コンテナを削除せずにローカルスタックを停止します。

agentengine dev clean

ローカルスタックを停止し、コンテナとボリュームを削除します。

4

agentic-platform-memoryパッケージをインストールするには、次のコマンドを実行します。

pip install agentic-platform-memory
5

Pythonアプリケーションディレクトリに移動します。このディレクトリは、最初のステップで作成したプロジェクトディレクトリとは別にすることができます。

次に、次のコードをアプリケーションに追加してローカルスタックに接続します。 http://localhost:<oe-port> を、agentengine dev up コマンド出力からコピーしたURLに置き換えます。

from agentic_platform_memory import Memory, MemoryRequestContext
# Set the base_url to the local oe URL printed by "agentengine dev up".
memory = Memory(base_url="http://localhost:<oe-port>")
# Bind conversation identity.
session = memory.bind(
MemoryRequestContext(
user_id="user_123",
session_id="session_456",
)
)
# Record a turn.
session.record_turn(role="user", content="I prefer window seats on flights.")
# Build context.
context = session.build_context(
query="What seat preferences are known?",
enabled_sources={"stm", "semantic", "episodic"},
)
print(context.formatted_context)

ローカル メモリスタックを実行中いる場合、MemoryRouteNotFoundError(404)エラーが表示される場合があります。このエラーに対処するには、project_id の値を設定しないようにします。

SDK は project_id 値を使用して、リクエストを受信するURLパスを識別します。ローカル接続の場合と同様に、project_id が設定されていない場合、SDK はローカルの oe プロキシが提供するパスにリクエストを送信します。 project_id が設定されている場合、SDK は、ホストされている Atlas Agent のみが提供するプロジェクトスコープのパスにリクエストを送信します。ローカルスタックはプロジェクトをスコープ指定したパスを提供していないため、このパスに送信されたリクエストはエラーを生成します。

ホストされているワークフローからシェルに古い AGENTIC_MEMORY_PROJECT_ID 環境変数が設定されている場合、SDK はプロジェクト スコープのルートをリクエストし、ローカルスタックに対して MemoryRouteNotFoundError を返します。ローカルスタックに接続する前に、次の コマンドを実行中てこの変数を設定解除します。

unset AGENTIC_MEMORY_PROJECT_ID

Atlas Agent エンジンで実行されるエージェントのメモリを有効にするには、「 エージェントへのメモリの追加 」ガイドを参照してください。