Remove support for passing string as input in the client.add() (#2749)

This commit is contained in:
Dev Khant
2025-05-22 10:16:32 +05:30
committed by GitHub
parent bad6e12972
commit 097959d5cc
3 changed files with 36 additions and 21 deletions

View File

@@ -59,7 +59,10 @@ five_days_ago = current_time - timedelta(days=5)
unix_timestamp = int(five_days_ago.timestamp()) unix_timestamp = int(five_days_ago.timestamp())
# Add memory with custom timestamp # Add memory with custom timestamp
client.add("I'm travelling to SF", user_id="user1", timestamp=unix_timestamp) messages = [
{"role": "user", "content": "I'm travelling to SF"}
]
client.add(messages, user_id="user1", timestamp=unix_timestamp)
``` ```
```javascript JavaScript ```javascript JavaScript
@@ -77,7 +80,10 @@ fiveDaysAgo.setDate(currentTime.getDate() - 5);
const unixTimestamp = Math.floor(fiveDaysAgo.getTime() / 1000); const unixTimestamp = Math.floor(fiveDaysAgo.getTime() / 1000);
// Add memory with custom timestamp // Add memory with custom timestamp
client.add("I'm travelling to SF", { user_id: "user1", timestamp: unixTimestamp }) const messages = [
{"role": "user", "content": "I'm travelling to SF"}
]
client.add(messages, { user_id: "user1", timestamp: unixTimestamp })
.then(response => console.log(response)) .then(response => console.log(response))
.catch(error => console.error(error)); .catch(error => console.error(error));
``` ```
@@ -119,14 +125,20 @@ For example, to create a memory with a timestamp of January 1, 2023:
# January 1, 2023 timestamp # January 1, 2023 timestamp
january_2023_timestamp = 1672531200 # Unix timestamp for 2023-01-01 00:00:00 UTC 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) messages = [
{"role": "user", "content": "I'm travelling to SF"}
]
client.add(messages, user_id="user1", timestamp=january_2023_timestamp)
``` ```
```javascript JavaScript ```javascript JavaScript
// January 1, 2023 timestamp // January 1, 2023 timestamp
const january2023Timestamp = 1672531200; // Unix timestamp for 2023-01-01 00:00:00 UTC const january2023Timestamp = 1672531200; // Unix timestamp for 2023-01-01 00:00:00 UTC
client.add("Important historical information", { user_id: "user1", timestamp: january2023Timestamp }) const messages = [
{"role": "user", "content": "I'm travelling to SF"}
]
client.add(messages, { user_id: "user1", timestamp: january2023Timestamp })
.then(response => console.log(response)) .then(response => console.log(response))
.catch(error => console.error(error)); .catch(error => console.error(error));
``` ```

View File

@@ -64,7 +64,10 @@ client = AsyncMemoryClient()
async def main(): async def main():
response = await client.add("I'm travelling to SF", user_id="john") messages = [
{"role": "user", "content": "I'm travelling to SF"}
]
response = await client.add(messages, user_id="john")
print(response) print(response)
await main() await main()
@@ -1547,11 +1550,17 @@ Fun fact: You can also delete the memory using the `add()` method by passing a n
<CodeGroup> <CodeGroup>
```python Python ```python Python
client.add("Delete all of my food preferences", user_id="alex") messages = [
{"role": "user", "content": "Delete all of my food preferences"}
]
client.add(messages, user_id="alex")
``` ```
```javascript JavaScript ```javascript JavaScript
client.add("Delete all of my food preferences", { user_id: "alex" }) const messages = [
{"role": "user", "content": "Delete all of my food preferences"}
]
client.add(messages, { user_id: "alex" })
.then(result => console.log(result)) .then(result => console.log(result))
.catch(error => console.error(error)); .catch(error => console.error(error));
``` ```

View File

@@ -3,7 +3,7 @@ import logging
import os import os
import warnings import warnings
from functools import wraps from functools import wraps
from typing import Any, Dict, List, Optional, Union from typing import Any, Dict, List, Optional
import httpx import httpx
import requests import requests
@@ -129,11 +129,11 @@ class MemoryClient:
raise ValueError(f"Error: {error_message}") raise ValueError(f"Error: {error_message}")
@api_error_handler @api_error_handler
def add(self, messages: Union[str, List[Dict[str, str]]], **kwargs) -> Dict[str, Any]: def add(self, messages: List[Dict[str, str]], **kwargs) -> Dict[str, Any]:
"""Add a new memory. """Add a new memory.
Args: Args:
messages: Either a string message or a list of message dictionaries. messages: A list of message dictionaries.
**kwargs: Additional parameters such as user_id, agent_id, app_id, metadata, filters. **kwargs: Additional parameters such as user_id, agent_id, app_id, metadata, filters.
Returns: Returns:
@@ -667,7 +667,7 @@ class MemoryClient:
return response.json() return response.json()
def _prepare_payload( def _prepare_payload(
self, messages: Union[str, List[Dict[str, str]], None], kwargs: Dict[str, Any] self, messages: List[Dict[str, str]], kwargs: Dict[str, Any]
) -> Dict[str, Any]: ) -> Dict[str, Any]:
"""Prepare the payload for API requests. """Prepare the payload for API requests.
@@ -679,10 +679,7 @@ class MemoryClient:
A dictionary containing the prepared payload. A dictionary containing the prepared payload.
""" """
payload = {} payload = {}
if isinstance(messages, str): payload["messages"] = messages
payload["messages"] = [{"role": "user", "content": messages}]
elif isinstance(messages, list):
payload["messages"] = messages
payload.update({k: v for k, v in kwargs.items() if v is not None}) payload.update({k: v for k, v in kwargs.items() if v is not None})
return payload return payload
@@ -798,7 +795,7 @@ class AsyncMemoryClient:
raise ValueError(f"Error: {error_message}") raise ValueError(f"Error: {error_message}")
def _prepare_payload( def _prepare_payload(
self, messages: Union[str, List[Dict[str, str]], None], kwargs: Dict[str, Any] self, messages: List[Dict[str, str]], kwargs: Dict[str, Any]
) -> Dict[str, Any]: ) -> Dict[str, Any]:
"""Prepare the payload for API requests. """Prepare the payload for API requests.
@@ -810,10 +807,7 @@ class AsyncMemoryClient:
A dictionary containing the prepared payload. A dictionary containing the prepared payload.
""" """
payload = {} payload = {}
if isinstance(messages, str): payload["messages"] = messages
payload["messages"] = [{"role": "user", "content": messages}]
elif isinstance(messages, list):
payload["messages"] = messages
payload.update({k: v for k, v in kwargs.items() if v is not None}) payload.update({k: v for k, v in kwargs.items() if v is not None})
return payload return payload
@@ -850,7 +844,7 @@ class AsyncMemoryClient:
await self.async_client.aclose() await self.async_client.aclose()
@api_error_handler @api_error_handler
async def add(self, messages: Union[str, List[Dict[str, str]]], **kwargs) -> Dict[str, Any]: async def add(self, messages: List[Dict[str, str]], **kwargs) -> Dict[str, Any]:
kwargs = self._prepare_params(kwargs) kwargs = self._prepare_params(kwargs)
if kwargs.get("output_format") != "v1.1": if kwargs.get("output_format") != "v1.1":
kwargs["output_format"] = "v1.1" kwargs["output_format"] = "v1.1"