エージェントメモリーサービス¶
プレミアム機能
DataRobot's Agentic AI capabilities are a premium feature; contact your DataRobot representative for enablement information. DataRobotの試用版では、この機能を制限付きでお試しいただけます。
DataRobotのエージェントメモリーサービスでは、異なるユースケースに対応する2つの異なるAPIが提供されています。 お使いのビルドに合った方法を選択し、その方法に関するドキュメントに従ってください。 1つのアプリケーションで2つをマージする必要はありません。
DataRobotモデル(datarobot.models.memory.Sessionまたはdatarobot.models.memory.MemorySpace経由でアクセス)を使用して、DataRobotのREST APIおよびPython APIクライアントを通じてチャットスタイルの履歴(セッション)を保持および取得する必要がある場合は、チャット履歴APIセクションに説明があるチャット履歴APIを利用します。 詳細については、REST APIおよびPython APIクライアントのリファレンスドキュメントを参照してください。
長期的なmem0スタイルのメモリー(オープンソースのmem0スタックからの移行を含む)を使用している場合、またはmem0製品に準拠した例やリクエスト形式が必要な場合は、mem0 APIを利用します。 このインターフェイスの場合、標準のリソースはmem0ドキュメントです。
チャット履歴APIは、DataRobotに統合されたパスです。これは、他のDataRobotリソースに使用するのと同じREST APIであり、DataRobot Python APIクライアントでも同様の機能が提供されています。
Python APIクライアント:Python APIクライアントには、構築を容易にするために専用の型が追加されています。
datarobot.models.memory.MemorySpaceは、メモリースペース(保存された会話データのコンテナ)に基本的なCRUDを提供します。datarobot.models.memory.Sessionとdatarobot.models.memory.Eventは、チャットスタイルのエージェントアプリケーションを構築する際、セッションとイベント(セッション内のメッセージ)を使用します。
REST API:これらのリソースにはREST APIを使用します。認証およびベースURLのパターンは、DataRobot APIの他の部分と同様です。 詳細については、関連する操作とスキーマのREST APIリファレンスを参照してください。
DataRobotのチャット履歴およびセッションモデルを、プラットフォームのAPIやPythonパッケージと連携させたい場合は、この方法を選択します。
DataRobotには、オープンソースのmem0製品のインターフェイスと1対1で対応することを目的とした、mem0互換のREST APIも用意されています。
概念の概要、エンドポイントの動作、特に例(言語およびフレームワーク固有のスニペットを含む)については、その製品用に管理されている公式のmem0ドキュメントを参照してください。
https://docs.mem0.aiからmem0の主要なドキュメントにアクセスし、リクエストとレスポンスの形式、メモリーの追加や検索の方法、一般的なエージェントフレームワークとの連携方法について確認してください。 DataRobotサービスは同じAPIサーフェスと互換性があるように構築されているため、これらのガイドはDataRobotのエンドポイントと認証に適用されます。 mem0のセマンティクスやエコシステムをターゲットとする場合、またはオープンソースサービスに対して作成された統合を移植する場合は、この方法を選択してください。
クイックスタート¶
以下のクイックスタートワークフローを確認します。
前提条件¶
- Python 3.9以降
- DataRobotアカウント、APIキー、エンドポイントURL(例:
https://app.datarobot.com/api/v2) pip install datarobot mem0ai
環境変数(DATAROBOT_API_TOKEN、DATAROBOT_ENDPOINT)または~/.config/datarobot/drconfig.yamlを使用して、資格情報を一度設定します。 以下のスニペットは、それらを明示的に渡します。
接続する¶
import datarobot as dr
dr.Client(token="<YOUR_DATAROBOT_API_TOKEN>", endpoint="https://app.datarobot.com/api/v2")
メモリー空間の作成¶
メモリー空間とは、1つのアプリケーションまたは1人のエンドユーザーに対する分離境界のことです。
from datarobot.models.memory import MemorySpace
space = MemorySpace.create(
description="Acme support assistant",
llm_model_name="gpt-4o", # used for mem0 fact extraction
)
print(space.id)
セッションの作成¶
セッションは1つの会話です。 participantsはMongoDB-ObjectId文字列のリストで、通常はエンドユーザーです。
from datarobot.models.memory import Session
session = Session.create(
memory_space_id=space.id,
participants=["67500a000000000000000001"],
description="Triage chat #42",
)
print(session.id)
ソフト削除ライフサイクル戦略を指定しない場合、サーバーはデフォルトの戦略(180日間)を割り当てます。
メッセージの投稿¶
各メッセージはイベントです。 bodyは自由形式のJSONです。emitterは送信者を識別します。
event = session.post_event(
body={"content": "Hello, my deployment is failing"},
emitter={"type": "user", "id": "67500a000000000000000001"},
event_type="MESSAGE",
)
print(event.sequence_id) # 0
バッチ追加(最大200イベント、単一トランザクション):
session.post_events([
{
"body": {"content": "Looking at it now."},
"emitter": {"type": "agent", "id": "67500a000000000000000002"},
"event_type": "MESSAGE",
},
{
"body": {"content": "Found the issue - rolling back."},
"emitter": {"type": "agent", "id": "67500a000000000000000002"},
"event_type": "MESSAGE",
},
])
イベントの読み取りと編集¶
# Newest 20 events:
recent = session.events(last_n=20)
for e in recent:
print(e.sequence_id, e.emitter_type, e.body)
# Edit message #1:
session.update_event(
sequence_id=1,
body={"content": "Looking at it now (ETA 5min)."},
)
update_eventは、楽観的並行性のためにオプションのcreated_atを受け付けます。そのタイムスタンプ以降にイベントが変更されている場合、サーバーは更新を拒否し、呼び出し元は再読み込みして再試行する必要があります。
標準のmem0クライアントを使用したメモリーの抽出¶
このサービスは、メモリー空間ごとにmem0互換のサブルートを公開します。 標準のmem0ai.MemoryClientがそのルートを参照するようにすれば、通常のmem0クライアントは変更なしで動作します(add()、get()、search()、get_all()、delete())。
from mem0 import MemoryClient
endpoint = f"https://app.datarobot.com/api/v2/memory/{space.id}"
memory = MemoryClient(host=endpoint, api_key="<YOUR_DATAROBOT_API_TOKEN>")
memory.add(
[{"role": "user", "content": "I deploy on Fridays using ArgoCD"}],
user_id="alice",
agent_id="support-bot",
)
hits = memory.search("when do we deploy", user_id="alice", agent_id="support-bot")
api_keyはDataRobot APIトークンです。 メモリー空間のスコープは完全にURLパス内にあり、追加のヘッダーは不要です。