Doc: Update timestamp and expiration_date (#2581)
Co-authored-by: Deshraj Yadav <deshrajdry@gmail.com>
This commit is contained in:
@@ -49,6 +49,7 @@
|
|||||||
"features/advanced-retrieval",
|
"features/advanced-retrieval",
|
||||||
"features/contextual-add",
|
"features/contextual-add",
|
||||||
"features/multimodal-support",
|
"features/multimodal-support",
|
||||||
|
"features/timestamp",
|
||||||
"features/selective-memory",
|
"features/selective-memory",
|
||||||
"features/custom-categories",
|
"features/custom-categories",
|
||||||
"features/custom-instructions",
|
"features/custom-instructions",
|
||||||
@@ -57,7 +58,8 @@
|
|||||||
"features/memory-export",
|
"features/memory-export",
|
||||||
"features/webhooks",
|
"features/webhooks",
|
||||||
"features/graph-memory",
|
"features/graph-memory",
|
||||||
"features/feedback-mechanism"
|
"features/feedback-mechanism",
|
||||||
|
"features/expiration-date"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
112
docs/features/expiration-date.mdx
Normal file
112
docs/features/expiration-date.mdx
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
---
|
||||||
|
title: Expiration Date
|
||||||
|
description: 'Set time-bound memories in Mem0 with automatic expiration dates to manage temporal information effectively.'
|
||||||
|
icon: "clock"
|
||||||
|
iconType: "solid"
|
||||||
|
---
|
||||||
|
|
||||||
|
## Benefits of Memory Expiration
|
||||||
|
|
||||||
|
Setting expiration dates for memories offers several advantages:
|
||||||
|
|
||||||
|
• **Time-Sensitive Information Management**: Handle information that's only relevant for a specific time period.
|
||||||
|
|
||||||
|
• **Event-Based Memory**: Manage information related to upcoming events that becomes irrelevant after the event passes.
|
||||||
|
|
||||||
|
These benefits enable more sophisticated memory management for applications where temporal context matters.
|
||||||
|
|
||||||
|
## Setting Memory Expiration Date
|
||||||
|
|
||||||
|
You can set an expiration date for memories, after which they will no longer be retrieved in searches. This is useful for creating temporary memories or memories that are only relevant for a specific time period.
|
||||||
|
|
||||||
|
<CodeGroup>
|
||||||
|
|
||||||
|
```python Python
|
||||||
|
import datetime
|
||||||
|
from mem0 import MemoryClient
|
||||||
|
|
||||||
|
client = MemoryClient(api_key="your-api-key")
|
||||||
|
|
||||||
|
messages = [
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "I'll be in San Francisco until end of this month."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
# Set an expiration date for this memory
|
||||||
|
client.add(messages=messages, user_id="alex", expiration_date=str(datetime.datetime.now().date() + datetime.timedelta(days=30)))
|
||||||
|
|
||||||
|
# You can also use an explicit date string
|
||||||
|
client.add(messages=messages, user_id="alex", expiration_date="2023-08-31")
|
||||||
|
```
|
||||||
|
|
||||||
|
```javascript JavaScript
|
||||||
|
import MemoryClient from 'mem0ai';
|
||||||
|
const client = new MemoryClient({ apiKey: 'your-api-key' });
|
||||||
|
|
||||||
|
const messages = [
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "I'll be in San Francisco until end of this month."
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Set an expiration date 30 days from now
|
||||||
|
const expirationDate = new Date();
|
||||||
|
expirationDate.setDate(expirationDate.getDate() + 30);
|
||||||
|
client.add(messages, {
|
||||||
|
user_id: "alex",
|
||||||
|
expiration_date: expirationDate.toISOString().split('T')[0]
|
||||||
|
})
|
||||||
|
.then(response => console.log(response))
|
||||||
|
.catch(error => console.error(error));
|
||||||
|
|
||||||
|
// You can also use an explicit date string
|
||||||
|
client.add(messages, {
|
||||||
|
user_id: "alex",
|
||||||
|
expiration_date: "2023-08-31"
|
||||||
|
})
|
||||||
|
.then(response => console.log(response))
|
||||||
|
.catch(error => console.error(error));
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash cURL
|
||||||
|
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
||||||
|
-H "Authorization: Token your-api-key" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "I'll be in San Francisco until end of this month."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"user_id": "alex",
|
||||||
|
"expiration_date": "2023-08-31"
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
```json Output
|
||||||
|
{
|
||||||
|
"results": [
|
||||||
|
{
|
||||||
|
"id": "a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5",
|
||||||
|
"data": {
|
||||||
|
"memory": "In San Francisco until end of this month"
|
||||||
|
},
|
||||||
|
"event": "ADD"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</CodeGroup>
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
Once a memory reaches its expiration date, it won't be included in search or get results, though the data remains stored in the system.
|
||||||
|
</Note>
|
||||||
|
|
||||||
|
If you have any questions, please feel free to reach out to us using one of the following methods:
|
||||||
|
|
||||||
|
<Snippet file="get-help.mdx" />
|
||||||
126
docs/features/timestamp.mdx
Normal file
126
docs/features/timestamp.mdx
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
---
|
||||||
|
title: Memory Timestamps
|
||||||
|
description: 'Add timestamps to your memories to maintain chronological accuracy and historical context'
|
||||||
|
icon: "clock"
|
||||||
|
iconType: "solid"
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The Memory Timestamps feature allows you to specify when a memory was created, regardless of when it's actually added to the system. This powerful capability enables you to:
|
||||||
|
|
||||||
|
- Maintain accurate chronological ordering of memories
|
||||||
|
- Import historical data with proper timestamps
|
||||||
|
- Create memories that reflect when events actually occurred
|
||||||
|
- Build timelines with precise temporal information
|
||||||
|
|
||||||
|
By leveraging custom timestamps, you can ensure that your memory system maintains an accurate representation of when information was generated or events occurred.
|
||||||
|
|
||||||
|
## Benefits of Custom Timestamps
|
||||||
|
|
||||||
|
Custom timestamps offer several important benefits:
|
||||||
|
|
||||||
|
• **Historical Accuracy**: Preserve the exact timing of past events and information.
|
||||||
|
|
||||||
|
• **Data Migration**: Seamlessly migrate existing data while maintaining original timestamps.
|
||||||
|
|
||||||
|
• **Time-Sensitive Analysis**: Enable time-based analysis and pattern recognition across memories.
|
||||||
|
|
||||||
|
• **Consistent Chronology**: Maintain proper ordering of memories for coherent storytelling.
|
||||||
|
|
||||||
|
## Using Custom Timestamps
|
||||||
|
|
||||||
|
When adding new memories, you can specify a custom timestamp to indicate when the memory was created. This timestamp will be used instead of the current time.
|
||||||
|
|
||||||
|
### Adding Memories with Custom Timestamps
|
||||||
|
|
||||||
|
<CodeGroup>
|
||||||
|
|
||||||
|
```python Python
|
||||||
|
import time
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
# Get the current time
|
||||||
|
current_time = datetime.now()
|
||||||
|
|
||||||
|
# Calculate 5 days ago
|
||||||
|
five_days_ago = current_time - timedelta(days=5)
|
||||||
|
|
||||||
|
# Convert to Unix timestamp (seconds since epoch)
|
||||||
|
unix_timestamp = int(five_days_ago.timestamp())
|
||||||
|
|
||||||
|
# Add memory with custom timestamp
|
||||||
|
client.add("I'm travelling to SF", user_id="user1", timestamp=unix_timestamp)
|
||||||
|
```
|
||||||
|
|
||||||
|
```javascript JavaScript
|
||||||
|
// Get the current time
|
||||||
|
const currentTime = new Date();
|
||||||
|
|
||||||
|
// Calculate 5 days ago
|
||||||
|
const fiveDaysAgo = new Date();
|
||||||
|
fiveDaysAgo.setDate(currentTime.getDate() - 5);
|
||||||
|
|
||||||
|
// Convert to Unix timestamp (seconds since epoch)
|
||||||
|
const unixTimestamp = Math.floor(fiveDaysAgo.getTime() / 1000);
|
||||||
|
|
||||||
|
// Add memory with custom timestamp
|
||||||
|
client.add("I'm travelling to SF", { user_id: "user1", timestamp: unixTimestamp })
|
||||||
|
.then(response => console.log(response))
|
||||||
|
.catch(error => console.error(error));
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash cURL
|
||||||
|
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
||||||
|
-H "Authorization: Token your-api-key" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{
|
||||||
|
"messages": [{"role": "user", "content": "I'm travelling to SF"}],
|
||||||
|
"user_id": "user1",
|
||||||
|
"timestamp": 1721577600
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
```json Output
|
||||||
|
{
|
||||||
|
"results": [
|
||||||
|
{
|
||||||
|
"id": "a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5",
|
||||||
|
"data": {"memory": "Travelling to SF"},
|
||||||
|
"event": "ADD"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</CodeGroup>
|
||||||
|
|
||||||
|
### Timestamp Format
|
||||||
|
|
||||||
|
When specifying a custom timestamp, you should provide a Unix timestamp (seconds since epoch). This is an integer representing the number of seconds that have elapsed since January 1, 1970 (UTC).
|
||||||
|
|
||||||
|
For example, to create a memory with a timestamp of January 1, 2023:
|
||||||
|
|
||||||
|
<CodeGroup>
|
||||||
|
|
||||||
|
```python Python
|
||||||
|
# January 1, 2023 timestamp
|
||||||
|
january_2023_timestamp = 1672531200 # Unix timestamp for 2023-01-01 00:00:00 UTC
|
||||||
|
|
||||||
|
client.add("Important historical information", user_id="user1", timestamp=january_2023_timestamp)
|
||||||
|
```
|
||||||
|
|
||||||
|
```javascript JavaScript
|
||||||
|
// January 1, 2023 timestamp
|
||||||
|
const january2023Timestamp = 1672531200; // Unix timestamp for 2023-01-01 00:00:00 UTC
|
||||||
|
|
||||||
|
client.add("Important historical information", { user_id: "user1", timestamp: january2023Timestamp })
|
||||||
|
.then(response => console.log(response))
|
||||||
|
.catch(error => console.error(error));
|
||||||
|
```
|
||||||
|
|
||||||
|
</CodeGroup>
|
||||||
|
|
||||||
|
If you have any questions, please feel free to reach out to us using one of the following methods:
|
||||||
|
|
||||||
|
<Snippet file="get-help.mdx" />
|
||||||
@@ -327,157 +327,6 @@ curl -X POST "https://api.mem0.ai/v1/memories/" \
|
|||||||
|
|
||||||
</CodeGroup>
|
</CodeGroup>
|
||||||
|
|
||||||
#### Add custom timestamp
|
|
||||||
|
|
||||||
You can provide a custom timestamp when adding memories to specify when the memory was created. This is useful for historical data or when you want to maintain specific chronology of memories that were generated in the past.
|
|
||||||
|
|
||||||
<CodeGroup>
|
|
||||||
|
|
||||||
```python Python
|
|
||||||
import time
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
|
|
||||||
# Get the current time
|
|
||||||
current_time = datetime.now()
|
|
||||||
|
|
||||||
# Calculate 5 days ago
|
|
||||||
five_days_ago = current_time - timedelta(days=5)
|
|
||||||
|
|
||||||
# Convert to Unix timestamp (seconds since epoch)
|
|
||||||
unix_timestamp = int(five_days_ago.timestamp())
|
|
||||||
|
|
||||||
# Add memory with custom timestamp
|
|
||||||
client.add("I'm travelling to SF", user_id="user1", timestamp=unix_timestamp)
|
|
||||||
```
|
|
||||||
|
|
||||||
```javascript JavaScript
|
|
||||||
// Get the current time
|
|
||||||
const currentTime = new Date();
|
|
||||||
|
|
||||||
// Calculate 5 days ago
|
|
||||||
const fiveDaysAgo = new Date();
|
|
||||||
fiveDaysAgo.setDate(currentTime.getDate() - 5);
|
|
||||||
|
|
||||||
// Convert to Unix timestamp (seconds since epoch)
|
|
||||||
const unixTimestamp = Math.floor(fiveDaysAgo.getTime() / 1000);
|
|
||||||
|
|
||||||
// Add memory with custom timestamp
|
|
||||||
client.add("I'm travelling to SF", { user_id: "user1", timestamp: unixTimestamp })
|
|
||||||
.then(response => console.log(response))
|
|
||||||
.catch(error => console.error(error));
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash cURL
|
|
||||||
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
|
||||||
-H "Authorization: Token your-api-key" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{
|
|
||||||
"messages": [{"role": "user", "content": "I'm travelling to SF"}],
|
|
||||||
"user_id": "user1",
|
|
||||||
"timestamp": 1721577600
|
|
||||||
}'
|
|
||||||
```
|
|
||||||
|
|
||||||
```json Output
|
|
||||||
{
|
|
||||||
"results": [
|
|
||||||
{
|
|
||||||
"id": "a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5",
|
|
||||||
"data": {"memory": "Travelling to SF"},
|
|
||||||
"event": "ADD"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
</CodeGroup>
|
|
||||||
|
|
||||||
#### Setting Memory Expiration Date
|
|
||||||
|
|
||||||
You can set an expiration date for memories, after which they will no longer be retrieved in searches. This is useful for creating temporary memories or memories that are only relevant for a specific time period.
|
|
||||||
|
|
||||||
<CodeGroup>
|
|
||||||
|
|
||||||
```python Python
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
messages = [
|
|
||||||
{
|
|
||||||
"role": "user",
|
|
||||||
"content": "I'll be in San Francisco until August 31st."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
# Set an expiration date for this memory
|
|
||||||
client.add(messages=messages, user_id="alex", expiration_date=str(datetime.datetime.now().date() + datetime.timedelta(days=30)))
|
|
||||||
|
|
||||||
# You can also use an explicit date string
|
|
||||||
client.add(messages=messages, user_id="alex", expiration_date="2023-08-31")
|
|
||||||
```
|
|
||||||
|
|
||||||
```javascript JavaScript
|
|
||||||
const messages = [
|
|
||||||
{
|
|
||||||
"role": "user",
|
|
||||||
"content": "I'll be in San Francisco until August 31st."
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
// Set an expiration date 30 days from now
|
|
||||||
const expirationDate = new Date();
|
|
||||||
expirationDate.setDate(expirationDate.getDate() + 30);
|
|
||||||
client.add(messages, {
|
|
||||||
user_id: "alex",
|
|
||||||
expiration_date: expirationDate.toISOString().split('T')[0]
|
|
||||||
})
|
|
||||||
.then(response => console.log(response))
|
|
||||||
.catch(error => console.error(error));
|
|
||||||
|
|
||||||
// You can also use an explicit date string
|
|
||||||
client.add(messages, {
|
|
||||||
user_id: "alex",
|
|
||||||
expiration_date: "2023-08-31"
|
|
||||||
})
|
|
||||||
.then(response => console.log(response))
|
|
||||||
.catch(error => console.error(error));
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash cURL
|
|
||||||
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
|
||||||
-H "Authorization: Token your-api-key" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{
|
|
||||||
"messages": [
|
|
||||||
{
|
|
||||||
"role": "user",
|
|
||||||
"content": "I'll be in San Francisco until August 31st."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"user_id": "alex",
|
|
||||||
"expiration_date": "2023-08-31"
|
|
||||||
}'
|
|
||||||
```
|
|
||||||
|
|
||||||
```json Output
|
|
||||||
{
|
|
||||||
"results": [
|
|
||||||
{
|
|
||||||
"id": "a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5",
|
|
||||||
"data": {
|
|
||||||
"memory": "In San Francisco until August 31st"
|
|
||||||
},
|
|
||||||
"event": "ADD"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
</CodeGroup>
|
|
||||||
|
|
||||||
<Note>
|
|
||||||
Once a memory reaches its expiration date, it won't be included in search or get results.
|
|
||||||
</Note>
|
|
||||||
|
|
||||||
#### Monitor Memories
|
#### Monitor Memories
|
||||||
|
|
||||||
You can monitor memory operations on the platform dashboard:
|
You can monitor memory operations on the platform dashboard:
|
||||||
|
|||||||
Reference in New Issue
Block a user