Memory
- class datarobot.models.memory.MemorySpace
A container for chat sessions and their events.
A memory space groups related sessions and memories together, providing an isolation boundary for conversational, semantic, and episodic memories in agentic applications.
Added in version v3.15.
- Variables:
id (
str) – The ID of the memory space.user_id (
str) – The ID of the user who owns the memory space.tenant_id (
str) – The ID of the tenant.description (
strorNone) – Optional. A human-readable description.llm_model_name (
strorNone) – Optional. An LLM model name associated with the memory space (maximum 200 characters). Non-reasoning models such asgpt-4oare recommended. Reasoning-capable models are significantly slower for fact extraction without producing meaningfully better results.llm_base_url (
strorNone) – Optional. The chat API URL used for memory extraction. The memory service uses the DataRobot LLM gateway by default; set this only when the default does not work — for example, in air-gapped environments or when the required LLM model is not provided by the gateway and cannot be added.custom_instructions (
strorNone) – Optional. Custom prompt instructions for fact extraction (maximum 10,000 characters).Nonemeans the default memory extraction prompt is used.created_at (
datetime.datetime) – The timestamp when the memory space was created.
- classmethod create(description=None, llm_model_name=None, llm_base_url=None, custom_instructions=None)
Create a new memory space.
Added in version v3.15.
- Parameters:
description (
strorNone) – Optional. A human-readable description for the memory space.llm_model_name (
strorNone) – Optional. An LLM model name to associate with the memory space (maximum 200 characters). Non-reasoning models such asgpt-4oare recommended. Reasoning-capable models are significantly slower for fact extraction without producing meaningfully better results.llm_base_url (
strorNone) – Optional. Chat API URL used for memory extraction. The memory service uses the DataRobot LLM gateway by default; set this only when the default does not work — for example, in air-gapped environments or when the required LLM model is not provided by the gateway and cannot be added.custom_instructions (
strorNone) – Optional. Custom prompt instructions for fact extraction (maximum 10 000 characters).
- Returns:
The newly created memory space.
- Return type:
- classmethod list(offset=None, limit=None)
List memory spaces accessible to the current user.
Added in version v3.15.
- Parameters:
offset (
intorNone) – Optional number of events to skip from the beginning.limit (
intorNone) – Optional. The maximum number of items to return.
- Returns:
The available memory spaces.
- Return type:
listofMemorySpace
- classmethod get(memory_space_id)
Get a memory space by its ID.
Added in version v3.15.
- Parameters:
memory_space_id (
str) – The ID of the memory space to retrieve.- Returns:
The requested memory space.
- Return type:
- update(description=<object object>, llm_model_name=<object object>, llm_base_url=<object object>, custom_instructions=<object object>)
Update the memory space.
If called without arguments, there is no effect. Pass
Noneto clear a field.Added in version v3.15.
- Parameters:
description (
strorNone) – The new description. PassNoneto clear the existing description.llm_model_name (
strorNone) – The new LLM model name (maximum 200 characters). PassNoneto clear an existing LLM. Non-reasoning models such asgpt-4oare recommended. Reasoning-capable models are significantly slower for fact extraction without producing meaningfully better results.llm_base_url (
strorNone) – The new chat API URL used for memory extraction. PassNoneto clear and fall back to the DataRobot LLM gateway (the default). Set this only when the gateway does not work — for example, in air-gapped environments or when the required LLM model is not provided by the gateway and cannot be added.custom_instructions (
strorNone) – The new custom instructions (maximum 10 000 characters). PassNoneto revert to the default memory extraction prompt.
- Return type:
None
- delete()
Delete the memory space.
Added in version v3.15.
- Return type:
None
- class datarobot.models.memory.Session
A chat session within a
MemorySpace.Sessions track conversations between participants and store the sequence of
Eventobjects that reflect either a single message or a state.Added in version v3.15.
- Variables:
id (
str) – The session ID.participants (
listofstr) – IDs of the participants in this session.description (
strorNone) – Optional. A human-readable description.metadata (
dictorNone) – Optional. Application-defined metadata.created_at (
datetime.datetime) – The timestamp when the session was created.lifecycle_strategies (
listofdict) – The lifecycle strategy configurations attached to this session. See the Notes section below for the dict shape, allowed values, and examples.version (
intorNone) – A monotonic counter incremented by the server on every successful update. Populated when the session is loaded from the server;Nonefor manually constructed instances or older servers that do not return it. Used as the defaultIf-Matchprecondition onupdate().deduplication_key (
strorNone) – Optional key supplied at create time to prevent duplicate sessions. Echoed back by the server and used to detect repeat session creations within the same memory space.Nonewhen the session was created without a key.memory_space_id (
strorNone) – The ID of the parent memory space. This value is set automatically.
Notes
Lifecycle strategies
Each entry in
lifecycle_strategiesis adictwith three keys:type(str, required) - one of:"soft_delete"- mark the session as deleted when the trigger fires. Soft-deleted sessions are excluded from listings and their events become unreadable, but the record is retained for audit."extract_memories"- run memory extraction over the session’s events and persist the resulting memories into the parent memory space when the trigger fires.
trigger(dict, required) - exactly one key, all integer-valued:{"ttl": <seconds>}- elapsed time since session creation.1 <= ttl <= 63_072_000(2 years).{"eventCount": <n>}- cumulative event count in the session.1 <= n <= 1_000_000.{"tokenCount": <n>}- cumulative token count over event message content.1 <= n <= 100_000_000.{"idle": <seconds>}- time since the last event (falls back to session creation time when there are no events).1 <= idle <= 63_072_000.
opts(dictorNone, optional) - strategy-specific options:"soft_delete"- no options; passNoneor omit."extract_memories":softDelete(bool, defaultTrue) - also soft-delete the session after extracting memories.agentId(strorNone) - agent ID attached to extracted memories.metadata(dictorNone) - metadata attached to extracted memories.
When
lifecycle_strategiesis omitted or empty onSession.create(), the server attaches a default"soft_delete"strategy with a 180-day TTL. A session may have at most 5 strategies.Examples
# Delete the session after 7 days. [{"type": "soft_delete", "trigger": {"ttl": 604800}}] # Extract memories after 100 events; keep the session live afterwards. [{ "type": "extract_memories", "trigger": {"eventCount": 100}, "opts": {"softDelete": False, "agentId": "support-bot"}, }] # Combine strategies: extract once idle for an hour, hard-cap with a 30-day TTL. [ {"type": "extract_memories", "trigger": {"idle": 3600}}, {"type": "soft_delete", "trigger": {"ttl": 2592000}}, ]
- classmethod create(memory_space_id, participants, lifecycle_strategies=None, description=None, metadata=None, deduplication_key=None)
Create a new session in a memory space.
Every session must have at least one lifecycle strategy. If
lifecycle_strategiesis not provided or is an empty list, the server attaches a default strategy.Added in version v3.15.
Changed in version v3.17: Added optional
deduplication_keyparameter to prevent duplicate session creations.- Parameters:
memory_space_id (
str) – The ID of the memory space to create the session in.participants (
listofstr) – IDs of the participants in the session.lifecycle_strategies (
listofdictorNone) – Optional. The lifecycle strategy configurations. Each item is adictwithtype,trigger, and optionaloptskeys - see the Notes section onSessionfor the full shape, allowed values, and working examples. When omitted or empty, the server attaches a default"soft_delete"strategy with a 180-day TTL. At most 5 strategies may be attached to a session.description (
strorNone) – Optional. A human-readable description.metadata (
dictorNone) – Optional. Application-defined metadata.deduplication_key (
strorNone) – Optional. A 1-72 character key that prevents duplicate sessions. If a live session with the same key already exists in this memory space, the server returns409 Conflictand the SDK raisesMemorySessionDeduplicationError, which carriesexisting_session_idso callers can adopt the winning session.Nonekeys do not collide; the same key may be reused across different memory spaces; soft-deleting a session frees the key.
- Returns:
The newly created session.
- Return type:
- Raises:
MemorySessionDeduplicationError – When
deduplication_keyis supplied and a live session with the same key already exists in this memory space.
- classmethod list(memory_space_id, offset=None, limit=None, participants=None, description=None)
List sessions within a single memory space.
Added in version v3.15.
- Parameters:
memory_space_id (
str) – The ID of the memory space.offset (
intorNone) – Optional number of events to skip from the beginning.limit (
intorNone) – Optional maximum number of items to return.participants (
listofstrorNone) – Optional filter by participant IDs.description (
strorNone) – Optional filter by description.
- Returns:
The matching sessions.
- Return type:
- classmethod get(memory_space_id, session_id)
Get a session by its ID.
Added in version v3.15.
- Parameters:
memory_space_id (
str) – The ID of the memory space.session_id (
str) – The ID of the session to retrieve.
- Returns:
The requested session.
- Return type:
- update(description=<object object>, metadata=<object object>, if_match=<object object>)
Update the session.
If called without arguments, there is no effect. Pass
Noneto clear a field.By default the SDK uses
version(set by a prior load) as an optimistic-concurrency precondition. If the server’s stored version no longer matches, it returns409(surfaced asdatarobot.errors.ClientError). The caller is expected to reload the session viaget()and retry.Added in version v3.15.
- Parameters:
description (
strorNone) – The new description. PassNoneto clear.metadata (
dictorNone) – The new metadata. PassNoneto clear.if_match (
intorNone) – Optimistic-concurrency precondition. When omitted, the SDK usesversionautomatically. PassNoneto opt out (legacy last-writer-wins). Pass an integer to override the version.
- Return type:
None
- delete()
Delete the session.
Added in version v3.15.
- Return type:
None
- post_event(body, emitter, event_type=None)
Create an event in this session.
Added in version v3.15.
- Parameters:
body (
dict) – The event payload.emitter (
dict) – Identifies the entity that produced the event, which typically contains"type"and"id"keys.event_type (
strorNone) – Optional. An application-defined event-type label.
- Returns:
The newly created event.
- Return type:
- events(offset=None, limit=None, last_n=None, event_type=None)
List events in this session.
Provide either
offsetorlast_n, but not both.Added in version v3.15.
- Parameters:
offset (
intorNone) – Optional . The number of events to skip from the beginning.limit (
intorNone) – Optional. The maximum number of events to return.last_n (
intorNone) – Optional. The number of most recent events to return. This value is mutually exclusive withoffset.event_type (
strorNone) – Optional. An event-type label.
- Returns:
The matching events.
- Return type:
- update_event(sequence_id, body=<object object>, event_type=<object object>, emitter=<object object>, created_at=None)
Update an event by its sequence ID.
When
created_atis provided, the server uses it for optimistic concurrency control. Specifically, if the event has been modified since that timestamp, the server rejects the update. The caller must handle this error and reload the event before retrying.Added in version v3.15.
- Parameters:
sequence_id (
int) – The ordinal position of the event to update.body (
dictorNone) – The new event payload.event_type (
strorNone) – The new event-type label.emitter (
dictorNone) – The new emitter information; the type of entity that emitted the event (e.g."agent"or"user").created_at (
datetime.datetimeorNone) – Optional timestamp for optimistic concurrency control.
- Returns:
The updated event, or
Noneif called with no changes.- Return type:
EventorNone
- post_events(events)
Append a batch of events to this session atomically.
The entire batch is appended in a single transaction; if any item fails validation, no events are created. Server-side limit is 200 events per request.
Added in version v3.17.
- update_events(events)
Update a batch of events in this session atomically.
Each item identifies the target event by
sequence_idand must set at least one ofbody,event_type,emitter. Duplicatesequence_idvalues are rejected. The whole batch is applied in a single transaction; any failure rolls back every change. Server-side limit is 200 events per request.created_atis per-item optimistic concurrency: if provided and the target event has been modified since that timestamp, the update is rejected and the batch rolls back.Added in version v3.17.
- class datarobot.models.memory.Event
A single action or chat message within a
Session.Events are always scoped to a session. Use
Session.post_event(),Session.events(), andSession.update_event()to manage them.Added in version v3.15.
- Variables:
body (
dictorNone) – The event payload.event_type (
strorNone) – An application-defined event-type label.emitter_type (
strorNone) – The type of entity that emitted the event (e.g.,"agent"or"user").emitter_id (
strorNone) – The ID of the entity that generated the event.sequence_id (
intorNone) – The ordinal position of the event within its session.created_at (
datetime.datetimeorNone) – The timestamp when the event was created.