Overview
MongoDB Atlas Agent Engine メモリ サービスは、エージェントの完全な配置とは別に、スタンドアロンサービスとして実行できます。このガイドを使用して、メモリプロジェクト用のメモリサーバーをプロビジョニングし、agent-engine-sdk-memory Pythonソフトウェア開発キット(SDK)を使用して外部アプリケーションからの対話コンテキストをレコードおよび取得します。
次のいずれかのモードでメモリ サービスを実行できます。
ホスト型: メモリサーバーはAtlas Agent Engine で実行され、アプリケーションは サービス アカウント アクセス トークン を使用してそのサーバーに接続します。配置されたアプリケーションにはこのモードを使用します。
ローカル: メモリサーバーは
agentengineCLI によって管理されるローカルDockerコンテナ内で実行され、アプリケーションはそれに直接接続します。このモードを使用して、ローカルで開発とテストを行います。
ホスト型メモリ サービス
ホスト型モードでは、agent-engine-sdk-memory SDK はサービス アカウント アクセス トークンを使用してホスト型メモリ ゲートウェイに接続します。ゲートウェイは、サービス アカウントから組織とプロジェクトを読み取ります。やり取りごとに user_id と session_id の値を SDK に渡して、やり取りのメモリをそのユーザーとセッションにスコープ設定します。
次の機能は、 ホスト型モードで利用できます。
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(最小要件)、 、 、またはそれ以降の階層クラスター(推奨)。クラスターをプロビジョニングするには、「
M10M20Atlas リソースの設定 」を参照してください。メモリ データとインデックス数が大きくなるにつれて対応するために、専用の
M10以降の階層クラスターを配置することをお勧めします。 Atlas Flex は、メモリ サービスをサポートできる最低のクラスター層です。クラスターのIP アクセス リストは、 Atlas Agent Engine データ プレーンからのトラフィックを許可する必要があります。データプレーンのIPアドレスを追加する方法については、「 Atlas ネットワークアクセスの構成 」セクションを参照してください。
注意
リンクされた Atlas クラスターが、 メモリに必要な検索インデックスとベクトル検索インデックスを作成できない場合、Atlas Agent Engine は Memory: waiting ステージで配置を停止し、Error: context deadline exceeded エラー メッセージを表示してタイムアウトすることがあります。
手順
メモリ設定を構成します。
project-config.yamlファイルを開き、memory:ブロックの下にシークレット名と抽出プロバイダーを設定します。次のコマンドを実行して、プロジェクトに必要なシークレットを設定します。
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 プロバイダーのキー名に置き換えます。メモリ構成を保存します。
agentengine memory configure
注意
MONGODB_URI シークレットを設定しない場合、またはメモリ サービスが接続文字列のポイントするクラスターに到達できない場合、プロビジョニングは失敗します。プロビジョニングに失敗した場合は、クラスターのIP アクセス リストに Atlas Agent Engine データ プレーンのIPアドレスが含まれていることを確認します。
サービス アカウントを作成し、アクセス トークンを取得します。
以下のコマンドを実行して、プロジェクトのサービス アカウントを作成します。
agentengine service-account create memory-service --project-id <project-id> --role PROJECT_OWNER <project-id>プレースホルダーをプロジェクトIDに置き換えます。コマンド出力からクライアントIDとクライアントシークレットを保存します。 Atlas Agent Engine はクライアントシークレットを 1 回だけ表示します。次のコマンドを実行して、クライアント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 時間です。現在のトークンの有効期限が切れる前に新しいトークンをリクエストします。
Python SDK をインストールします。
前のステップでエクスポートしたアクセス トークンを使用して、プラットフォームのプライベート レジストリから 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 は、前の手順でエクスポートしたアクセス トークンに解決されます。
セッションのコンテキストを記録および取得してください。
アプリケーションに、次のコードを追加して、クライアントを作成し、ユーザー 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() の結果に表示されない可能性があります。
メモリ構成の更新
サーバー を再プロビジョニングせずにメモリ構成を更新するには、次の手順を実行します。
project-config.yamlファイル内のmemory:ブロックを編集します。プロジェクトディレクトリから、
agentengine memory configureを実行してメモリ構成をアップロードします。agentengine memory applyを実行して構成を適用します。
プラットフォームでメモリを構成する方法については、「 メモリの構成 」を参照してください。
ローカル メモリ サービスの構成
このセクションでは、スキャフォールディング、開始、および ローカル メモリスタックへの接続方法を説明します。
前提条件
このチュートリアルを開始する前に、次のリソースがあることを確認してください。
agentengineCLI がインストールされました。詳しくは、「 インストールと認証 」を参照してください。メモリ埋め込みを生成するための投票AI APIキー。
バックグラウンド抽出を有効にする場合は、
ANTHROPIC_API_KEYなどの大規模言語モデル(llm)プロバイダーのAPIキー。pipまたはuvがインストールされた場合、 Python SDK をインストールします。
手順
ローカル メモリプロジェクト の足場
次のコマンドを実行して、ローカル開発用のメモリ専用プロジェクトを実行します。 "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 フラグと組み合わせて使用できません。
環境変数を構成します。
プロジェクトディレクトリに .envファイルを作成し、ファイルに次の変数を設定します。
VOYAGE_API_KEY: 投票AI埋め込みに必要LVM プロバイダーキー(
ANTHROPIC_API_KEYなど):project-config.yamlでバックグラウンド抽出が有効になっている場合に必要です
MONGODB_URI 変数を設定する必要はありません。 agentengine dev up コマンドは、バンドルされているローカルMongoDBコンテナを自動的にプロビジョニングし、接続します。代わりに外部のMongoDBインスタンスを使用する場合は、この変数を設定します。
ローカルスタックを起動します。
プロジェクトディレクトリから、次のコマンドを実行してローカル メモリスタックを起動します。
agentengine dev up
メモリ専用のプロジェクトの場合、このコマンドは次のコンテナのみを起動します。
mongodb: Atlas と互換性のあるMongoDB のローカルインスタンスmemory-server: メモリ ランタイム サービスoe: SDK が接続するローカル 組織化エンジンのプロキシ
コマンド出力には、ローカルの oe サービスと memory-server サービスの URL が含まれます。後のステップで使用する oe URLをコピーします。
ローカルスタックを管理するには、次のコマンドを使用します。
コマンド | 説明 |
|---|---|
| ローカルスタックのステータスを表示します。 |
| すべてのサービスのログをストリームします。引数として |
| コンテナを削除せずにローカルスタックを停止します。 |
| ローカルスタックを停止し、コンテナとボリュームを削除します。 |
SDK をローカルスタックに接続します。
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 エンジンで実行されるエージェントのメモリを有効にするには、「 エージェントへのメモリの追加 」ガイドを参照してください。