agenticmem 0.1.0__tar.gz → 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of agenticmem might be problematic. Click here for more details.
- agenticmem-0.1.1/PKG-INFO +142 -0
- agenticmem-0.1.1/README.md +122 -0
- agenticmem-0.1.1/agenticmem/__init__.py +47 -0
- agenticmem-0.1.1/agenticmem/client.py +259 -0
- agenticmem-0.1.1/agenticmem/client_utils.py +12 -0
- agenticmem-0.1.1/pyproject.toml +29 -0
- agenticmem-0.1.0/PKG-INFO +0 -102
- agenticmem-0.1.0/README.md +0 -83
- agenticmem-0.1.0/agenticmem/__init__.py +0 -29
- agenticmem-0.1.0/agenticmem/client.py +0 -203
- agenticmem-0.1.0/pyproject.toml +0 -18
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: agenticmem
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: A Python client for the AgenticMem API
|
|
5
|
+
License: MIT
|
|
6
|
+
Author: AgenticMem Team
|
|
7
|
+
Requires-Python: >=3.10,<4.0
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Requires-Dist: agenticmem-commons (==0.1.1)
|
|
13
|
+
Requires-Dist: griffe (==0.48.0)
|
|
14
|
+
Requires-Dist: mkdocstrings[python] (>=0.18.0)
|
|
15
|
+
Requires-Dist: pydantic (>=2.0.0,<3.0.0)
|
|
16
|
+
Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)
|
|
17
|
+
Requires-Dist: requests (>=2.25.0,<3.0.0)
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# AgenticMem Python Client
|
|
21
|
+
|
|
22
|
+
A Python client library for interacting with the AgenticMem API. This client provides easy-to-use interfaces for managing user interactions and profiles.
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install agenticmem
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
from agenticmem import AgenticMemClient
|
|
34
|
+
from agenticmem_commons.api_schema.service_schemas import InteractionRequest
|
|
35
|
+
from agenticmem_commons.api_schema.retriever_schema import (
|
|
36
|
+
SearchInteractionRequest,
|
|
37
|
+
SearchUserProfileRequest,
|
|
38
|
+
GetInteractionsRequest,
|
|
39
|
+
GetUserProfilesRequest
|
|
40
|
+
)
|
|
41
|
+
from datetime import datetime
|
|
42
|
+
|
|
43
|
+
# Initialize the client
|
|
44
|
+
client = AgenticMemClient(api_key="your_api_key")
|
|
45
|
+
|
|
46
|
+
# Optional: Login with email/password
|
|
47
|
+
token = client.login(email="user@example.com", password="password123")
|
|
48
|
+
|
|
49
|
+
# Publish a user interaction
|
|
50
|
+
interaction = InteractionRequest(
|
|
51
|
+
timestamp=int(datetime.utcnow().timestamp()),
|
|
52
|
+
text_interaction="User clicked on product X",
|
|
53
|
+
user_action="click",
|
|
54
|
+
user_action_description="Clicked on product details button"
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
response = client.publish_interaction(
|
|
58
|
+
user_id="user123",
|
|
59
|
+
request_id="req456",
|
|
60
|
+
interaction_requests=[interaction]
|
|
61
|
+
)
|
|
62
|
+
print(f"Published interaction: {response.success} - {response.message}")
|
|
63
|
+
|
|
64
|
+
# Search user profiles
|
|
65
|
+
profiles_request = SearchUserProfileRequest(
|
|
66
|
+
user_id="user123",
|
|
67
|
+
search_query="recent interactions",
|
|
68
|
+
top_k=5
|
|
69
|
+
)
|
|
70
|
+
profiles = client.search_profiles(profiles_request)
|
|
71
|
+
for profile in profiles.profiles:
|
|
72
|
+
print(f"Profile {profile.profile_id}: {profile.profile_content}")
|
|
73
|
+
|
|
74
|
+
# Get user profiles directly
|
|
75
|
+
profiles_request = GetUserProfilesRequest(
|
|
76
|
+
user_id="user123"
|
|
77
|
+
)
|
|
78
|
+
profiles = client.get_profiles(profiles_request)
|
|
79
|
+
for profile in profiles.profiles:
|
|
80
|
+
print(f"Profile: {profile}")
|
|
81
|
+
|
|
82
|
+
# Search interactions
|
|
83
|
+
interactions_request = SearchInteractionRequest(
|
|
84
|
+
user_id="user123",
|
|
85
|
+
start_time=int(datetime(2024, 1, 1).timestamp()),
|
|
86
|
+
end_time=int(datetime.utcnow().timestamp())
|
|
87
|
+
)
|
|
88
|
+
interactions = client.search_interactions(interactions_request)
|
|
89
|
+
for interaction in interactions.interactions:
|
|
90
|
+
print(f"Interaction {interaction.interaction_id}: {interaction.text_interaction}")
|
|
91
|
+
|
|
92
|
+
# Get interactions directly
|
|
93
|
+
interactions_request = GetInteractionsRequest(
|
|
94
|
+
user_id="user123"
|
|
95
|
+
)
|
|
96
|
+
interactions = client.get_interactions(interactions_request)
|
|
97
|
+
for interaction in interactions.interactions:
|
|
98
|
+
print(f"Interaction: {interaction}")
|
|
99
|
+
|
|
100
|
+
# Get profile change log
|
|
101
|
+
change_log = client.get_profile_change_log()
|
|
102
|
+
print(f"Profile changes: {change_log}")
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Features
|
|
106
|
+
|
|
107
|
+
- Authentication
|
|
108
|
+
- API key authentication
|
|
109
|
+
- Email/password login
|
|
110
|
+
- User interaction management
|
|
111
|
+
- Publish user interactions
|
|
112
|
+
- Delete specific interactions
|
|
113
|
+
- Search interactions with time range and filters
|
|
114
|
+
- Get direct list of interactions
|
|
115
|
+
- User profile management
|
|
116
|
+
- Search user profiles with customizable queries
|
|
117
|
+
- Get direct list of user profiles
|
|
118
|
+
- Delete specific profiles or profiles matching a search query
|
|
119
|
+
- View profile change log history
|
|
120
|
+
|
|
121
|
+
## API Response Types
|
|
122
|
+
|
|
123
|
+
All API methods return strongly-typed responses:
|
|
124
|
+
|
|
125
|
+
- `login()` returns `Token`
|
|
126
|
+
- `publish_interaction()` returns `PublishUserInteractionResponse`
|
|
127
|
+
- `search_interactions()` returns `SearchInteractionResponse`
|
|
128
|
+
- `get_interactions()` returns `GetInteractionsResponse`
|
|
129
|
+
- `search_profiles()` returns `SearchUserProfileResponse`
|
|
130
|
+
- `get_profiles()` returns `GetUserProfilesResponse`
|
|
131
|
+
- `delete_profile()` returns `DeleteUserProfileResponse`
|
|
132
|
+
- `delete_interaction()` returns `DeleteUserInteractionResponse`
|
|
133
|
+
- `get_profile_change_log()` returns `ProfileChangeLogResponse`
|
|
134
|
+
|
|
135
|
+
## Documentation
|
|
136
|
+
|
|
137
|
+
For detailed documentation, please visit [docs link].
|
|
138
|
+
|
|
139
|
+
## License
|
|
140
|
+
|
|
141
|
+
MIT License
|
|
142
|
+
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# AgenticMem Python Client
|
|
2
|
+
|
|
3
|
+
A Python client library for interacting with the AgenticMem API. This client provides easy-to-use interfaces for managing user interactions and profiles.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install agenticmem
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
from agenticmem import AgenticMemClient
|
|
15
|
+
from agenticmem_commons.api_schema.service_schemas import InteractionRequest
|
|
16
|
+
from agenticmem_commons.api_schema.retriever_schema import (
|
|
17
|
+
SearchInteractionRequest,
|
|
18
|
+
SearchUserProfileRequest,
|
|
19
|
+
GetInteractionsRequest,
|
|
20
|
+
GetUserProfilesRequest
|
|
21
|
+
)
|
|
22
|
+
from datetime import datetime
|
|
23
|
+
|
|
24
|
+
# Initialize the client
|
|
25
|
+
client = AgenticMemClient(api_key="your_api_key")
|
|
26
|
+
|
|
27
|
+
# Optional: Login with email/password
|
|
28
|
+
token = client.login(email="user@example.com", password="password123")
|
|
29
|
+
|
|
30
|
+
# Publish a user interaction
|
|
31
|
+
interaction = InteractionRequest(
|
|
32
|
+
timestamp=int(datetime.utcnow().timestamp()),
|
|
33
|
+
text_interaction="User clicked on product X",
|
|
34
|
+
user_action="click",
|
|
35
|
+
user_action_description="Clicked on product details button"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
response = client.publish_interaction(
|
|
39
|
+
user_id="user123",
|
|
40
|
+
request_id="req456",
|
|
41
|
+
interaction_requests=[interaction]
|
|
42
|
+
)
|
|
43
|
+
print(f"Published interaction: {response.success} - {response.message}")
|
|
44
|
+
|
|
45
|
+
# Search user profiles
|
|
46
|
+
profiles_request = SearchUserProfileRequest(
|
|
47
|
+
user_id="user123",
|
|
48
|
+
search_query="recent interactions",
|
|
49
|
+
top_k=5
|
|
50
|
+
)
|
|
51
|
+
profiles = client.search_profiles(profiles_request)
|
|
52
|
+
for profile in profiles.profiles:
|
|
53
|
+
print(f"Profile {profile.profile_id}: {profile.profile_content}")
|
|
54
|
+
|
|
55
|
+
# Get user profiles directly
|
|
56
|
+
profiles_request = GetUserProfilesRequest(
|
|
57
|
+
user_id="user123"
|
|
58
|
+
)
|
|
59
|
+
profiles = client.get_profiles(profiles_request)
|
|
60
|
+
for profile in profiles.profiles:
|
|
61
|
+
print(f"Profile: {profile}")
|
|
62
|
+
|
|
63
|
+
# Search interactions
|
|
64
|
+
interactions_request = SearchInteractionRequest(
|
|
65
|
+
user_id="user123",
|
|
66
|
+
start_time=int(datetime(2024, 1, 1).timestamp()),
|
|
67
|
+
end_time=int(datetime.utcnow().timestamp())
|
|
68
|
+
)
|
|
69
|
+
interactions = client.search_interactions(interactions_request)
|
|
70
|
+
for interaction in interactions.interactions:
|
|
71
|
+
print(f"Interaction {interaction.interaction_id}: {interaction.text_interaction}")
|
|
72
|
+
|
|
73
|
+
# Get interactions directly
|
|
74
|
+
interactions_request = GetInteractionsRequest(
|
|
75
|
+
user_id="user123"
|
|
76
|
+
)
|
|
77
|
+
interactions = client.get_interactions(interactions_request)
|
|
78
|
+
for interaction in interactions.interactions:
|
|
79
|
+
print(f"Interaction: {interaction}")
|
|
80
|
+
|
|
81
|
+
# Get profile change log
|
|
82
|
+
change_log = client.get_profile_change_log()
|
|
83
|
+
print(f"Profile changes: {change_log}")
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Features
|
|
87
|
+
|
|
88
|
+
- Authentication
|
|
89
|
+
- API key authentication
|
|
90
|
+
- Email/password login
|
|
91
|
+
- User interaction management
|
|
92
|
+
- Publish user interactions
|
|
93
|
+
- Delete specific interactions
|
|
94
|
+
- Search interactions with time range and filters
|
|
95
|
+
- Get direct list of interactions
|
|
96
|
+
- User profile management
|
|
97
|
+
- Search user profiles with customizable queries
|
|
98
|
+
- Get direct list of user profiles
|
|
99
|
+
- Delete specific profiles or profiles matching a search query
|
|
100
|
+
- View profile change log history
|
|
101
|
+
|
|
102
|
+
## API Response Types
|
|
103
|
+
|
|
104
|
+
All API methods return strongly-typed responses:
|
|
105
|
+
|
|
106
|
+
- `login()` returns `Token`
|
|
107
|
+
- `publish_interaction()` returns `PublishUserInteractionResponse`
|
|
108
|
+
- `search_interactions()` returns `SearchInteractionResponse`
|
|
109
|
+
- `get_interactions()` returns `GetInteractionsResponse`
|
|
110
|
+
- `search_profiles()` returns `SearchUserProfileResponse`
|
|
111
|
+
- `get_profiles()` returns `GetUserProfilesResponse`
|
|
112
|
+
- `delete_profile()` returns `DeleteUserProfileResponse`
|
|
113
|
+
- `delete_interaction()` returns `DeleteUserInteractionResponse`
|
|
114
|
+
- `get_profile_change_log()` returns `ProfileChangeLogResponse`
|
|
115
|
+
|
|
116
|
+
## Documentation
|
|
117
|
+
|
|
118
|
+
For detailed documentation, please visit [docs link].
|
|
119
|
+
|
|
120
|
+
## License
|
|
121
|
+
|
|
122
|
+
MIT License
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
__app_name__ = "agenticmem"
|
|
2
|
+
__version__ = "0.1.1"
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
from agenticmem.client import AgenticMemClient
|
|
6
|
+
from agenticmem_commons.api_schema.service_schemas import (
|
|
7
|
+
UserActionType,
|
|
8
|
+
ProfileTimeToLive,
|
|
9
|
+
InteractionRequest,
|
|
10
|
+
Interaction,
|
|
11
|
+
UserProfile,
|
|
12
|
+
PublishUserInteractionRequest,
|
|
13
|
+
PublishUserInteractionResponse,
|
|
14
|
+
DeleteUserProfileRequest,
|
|
15
|
+
DeleteUserProfileResponse,
|
|
16
|
+
DeleteUserInteractionRequest,
|
|
17
|
+
DeleteUserInteractionResponse,
|
|
18
|
+
)
|
|
19
|
+
from agenticmem_commons.api_schema.retriever_schema import (
|
|
20
|
+
SearchInteractionRequest,
|
|
21
|
+
SearchUserProfileRequest,
|
|
22
|
+
SearchInteractionResponse,
|
|
23
|
+
SearchUserProfileResponse,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
debug = False
|
|
27
|
+
log = None # Set to either 'debug' or 'info', controls console logging
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
__all__ = [
|
|
31
|
+
"AgenticMemClient",
|
|
32
|
+
"UserActionType",
|
|
33
|
+
"ProfileTimeToLive",
|
|
34
|
+
"InteractionRequest",
|
|
35
|
+
"Interaction",
|
|
36
|
+
"UserProfile",
|
|
37
|
+
"PublishUserInteractionRequest",
|
|
38
|
+
"PublishUserInteractionResponse",
|
|
39
|
+
"DeleteUserProfileRequest",
|
|
40
|
+
"DeleteUserProfileResponse",
|
|
41
|
+
"DeleteUserInteractionRequest",
|
|
42
|
+
"DeleteUserInteractionResponse",
|
|
43
|
+
"SearchInteractionRequest",
|
|
44
|
+
"SearchUserProfileRequest",
|
|
45
|
+
"SearchInteractionResponse",
|
|
46
|
+
"SearchUserProfileResponse",
|
|
47
|
+
]
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import requests
|
|
2
|
+
from urllib.parse import urljoin
|
|
3
|
+
import os
|
|
4
|
+
from typing import Optional, Union
|
|
5
|
+
from agenticmem_commons.api_schema.retriever_schema import (
|
|
6
|
+
SearchInteractionRequest,
|
|
7
|
+
SearchInteractionResponse,
|
|
8
|
+
SearchUserProfileRequest,
|
|
9
|
+
SearchUserProfileResponse,
|
|
10
|
+
GetInteractionsRequest,
|
|
11
|
+
GetInteractionsResponse,
|
|
12
|
+
GetUserProfilesRequest,
|
|
13
|
+
GetUserProfilesResponse,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
if os.environ.get("TEST_ENV", "False") == "True":
|
|
17
|
+
BACKEND_URL = "http://127.0.0.1:8000" # Local server for testing
|
|
18
|
+
else:
|
|
19
|
+
BACKEND_URL = "http://agenticmem-test.us-west-2.elasticbeanstalk.com:8081" # Elastic Beanstalk server url
|
|
20
|
+
|
|
21
|
+
from agenticmem_commons.api_schema.service_schemas import (
|
|
22
|
+
InteractionRequest,
|
|
23
|
+
ProfileChangeLogResponse,
|
|
24
|
+
PublishUserInteractionRequest,
|
|
25
|
+
PublishUserInteractionResponse,
|
|
26
|
+
DeleteUserProfileRequest,
|
|
27
|
+
DeleteUserProfileResponse,
|
|
28
|
+
DeleteUserInteractionRequest,
|
|
29
|
+
DeleteUserInteractionResponse,
|
|
30
|
+
)
|
|
31
|
+
from agenticmem_commons.api_schema.login_schema import Token
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class AgenticMemClient:
|
|
35
|
+
"""Client for interacting with the AgenticMem API."""
|
|
36
|
+
|
|
37
|
+
def __init__(self, api_key: str = ""):
|
|
38
|
+
"""Initialize the AgenticMem client.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
api_key (str): Your API key for authentication
|
|
42
|
+
"""
|
|
43
|
+
self.api_key = api_key
|
|
44
|
+
self.base_url = BACKEND_URL
|
|
45
|
+
self.session = requests.Session()
|
|
46
|
+
|
|
47
|
+
def _make_request(
|
|
48
|
+
self, method: str, endpoint: str, headers: Optional[dict] = None, **kwargs
|
|
49
|
+
):
|
|
50
|
+
"""Make an HTTP request to the API.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
method (str): HTTP method (GET, POST, DELETE)
|
|
54
|
+
endpoint (str): API endpoint
|
|
55
|
+
headers (dict, optional): Additional headers to include in the request
|
|
56
|
+
**kwargs: Additional arguments to pass to requests
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
dict: API response
|
|
60
|
+
"""
|
|
61
|
+
url = urljoin(self.base_url, endpoint)
|
|
62
|
+
if self.api_key:
|
|
63
|
+
self.session.headers.update(
|
|
64
|
+
{
|
|
65
|
+
"Authorization": f"Bearer {self.api_key}",
|
|
66
|
+
"Content-Type": "application/json",
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
if headers:
|
|
70
|
+
self.session.headers.update(headers)
|
|
71
|
+
response = self.session.request(method, url, **kwargs)
|
|
72
|
+
response.raise_for_status()
|
|
73
|
+
return response.json()
|
|
74
|
+
|
|
75
|
+
def login(self, email: str, password: str) -> Token:
|
|
76
|
+
"""Login to the AgenticMem API.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
email (str): The user's email
|
|
80
|
+
password (str): The user's password
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
Token: Response containing success status and message
|
|
84
|
+
"""
|
|
85
|
+
response = self._make_request(
|
|
86
|
+
"POST",
|
|
87
|
+
"/token",
|
|
88
|
+
data={"username": email, "password": password},
|
|
89
|
+
headers={
|
|
90
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
91
|
+
"accept": "application/json",
|
|
92
|
+
},
|
|
93
|
+
)
|
|
94
|
+
return Token(**response)
|
|
95
|
+
|
|
96
|
+
def publish_interaction(
|
|
97
|
+
self,
|
|
98
|
+
request_id: str,
|
|
99
|
+
user_id: str,
|
|
100
|
+
interaction_requests: list[Union[InteractionRequest, dict]],
|
|
101
|
+
) -> PublishUserInteractionResponse:
|
|
102
|
+
"""Publish user interactions.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
request_id (str): The request ID
|
|
106
|
+
user_id (str): The user ID
|
|
107
|
+
interaction_requests (List[InteractionRequest]): List of interaction requests
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
PublishUserInteractionResponse: Response containing success status and message
|
|
111
|
+
"""
|
|
112
|
+
interaction_requests = [
|
|
113
|
+
(
|
|
114
|
+
InteractionRequest(**interaction_request)
|
|
115
|
+
if isinstance(interaction_request, dict)
|
|
116
|
+
else interaction_request
|
|
117
|
+
)
|
|
118
|
+
for interaction_request in interaction_requests
|
|
119
|
+
]
|
|
120
|
+
request = PublishUserInteractionRequest(
|
|
121
|
+
request_id=request_id,
|
|
122
|
+
user_id=user_id,
|
|
123
|
+
interaction_requests=interaction_requests,
|
|
124
|
+
)
|
|
125
|
+
response = self._make_request(
|
|
126
|
+
"POST",
|
|
127
|
+
"/api/publish_interaction",
|
|
128
|
+
data=request.model_dump_json(),
|
|
129
|
+
)
|
|
130
|
+
return PublishUserInteractionResponse(**response)
|
|
131
|
+
|
|
132
|
+
def search_interactions(
|
|
133
|
+
self,
|
|
134
|
+
request: Union[SearchInteractionRequest, dict],
|
|
135
|
+
) -> SearchInteractionResponse:
|
|
136
|
+
"""Search for user interactions.
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
request (SearchInteractionRequest): The search request
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
SearchInteractionResponse: Response containing matching interactions
|
|
143
|
+
"""
|
|
144
|
+
if isinstance(request, dict):
|
|
145
|
+
request = SearchInteractionRequest(**request)
|
|
146
|
+
response = self._make_request(
|
|
147
|
+
"POST",
|
|
148
|
+
"/api/search_interactions",
|
|
149
|
+
data=request.model_dump_json(),
|
|
150
|
+
)
|
|
151
|
+
return SearchInteractionResponse(**response)
|
|
152
|
+
|
|
153
|
+
def search_profiles(
|
|
154
|
+
self,
|
|
155
|
+
request: Union[SearchUserProfileRequest, dict],
|
|
156
|
+
) -> SearchUserProfileResponse:
|
|
157
|
+
"""Search for user profiles.
|
|
158
|
+
|
|
159
|
+
Args:
|
|
160
|
+
request (SearchUserProfileRequest): The search request
|
|
161
|
+
|
|
162
|
+
Returns:
|
|
163
|
+
SearchUserProfileResponse: Response containing matching profiles
|
|
164
|
+
"""
|
|
165
|
+
if isinstance(request, dict):
|
|
166
|
+
request = SearchUserProfileRequest(**request)
|
|
167
|
+
response = self._make_request(
|
|
168
|
+
"POST", "/api/search_profiles", data=request.model_dump_json()
|
|
169
|
+
)
|
|
170
|
+
return SearchUserProfileResponse(**response)
|
|
171
|
+
|
|
172
|
+
def delete_profile(
|
|
173
|
+
self, user_id: str, profile_id: str = "", search_query: str = ""
|
|
174
|
+
) -> DeleteUserProfileResponse:
|
|
175
|
+
"""Delete user profiles.
|
|
176
|
+
|
|
177
|
+
Args:
|
|
178
|
+
user_id (str): The user ID
|
|
179
|
+
profile_id (str, optional): Specific profile ID to delete
|
|
180
|
+
search_query (str, optional): Query to match profiles for deletion
|
|
181
|
+
|
|
182
|
+
Returns:
|
|
183
|
+
DeleteUserProfileResponse: Response containing success status and message
|
|
184
|
+
"""
|
|
185
|
+
request = DeleteUserProfileRequest(
|
|
186
|
+
user_id=user_id,
|
|
187
|
+
profile_id=profile_id,
|
|
188
|
+
search_query=search_query,
|
|
189
|
+
)
|
|
190
|
+
response = self._make_request(
|
|
191
|
+
"DELETE", "/api/delete_profile", data=request.model_dump_json()
|
|
192
|
+
)
|
|
193
|
+
return DeleteUserProfileResponse(**response)
|
|
194
|
+
|
|
195
|
+
def delete_interaction(
|
|
196
|
+
self, user_id: str, interaction_id: str
|
|
197
|
+
) -> DeleteUserInteractionResponse:
|
|
198
|
+
"""Delete a user interaction.
|
|
199
|
+
|
|
200
|
+
Args:
|
|
201
|
+
user_id (str): The user ID
|
|
202
|
+
interaction_id (str): The interaction ID to delete
|
|
203
|
+
|
|
204
|
+
Returns:
|
|
205
|
+
DeleteUserInteractionResponse: Response containing success status and message
|
|
206
|
+
"""
|
|
207
|
+
request = DeleteUserInteractionRequest(
|
|
208
|
+
user_id=user_id, interaction_id=interaction_id
|
|
209
|
+
)
|
|
210
|
+
response = self._make_request(
|
|
211
|
+
"DELETE", "/api/delete_interaction", data=request.model_dump_json()
|
|
212
|
+
)
|
|
213
|
+
return DeleteUserInteractionResponse(**response)
|
|
214
|
+
|
|
215
|
+
def get_profile_change_log(self) -> ProfileChangeLogResponse:
|
|
216
|
+
response = self._make_request("GET", "/api/profile_change_log")
|
|
217
|
+
return ProfileChangeLogResponse(**response)
|
|
218
|
+
|
|
219
|
+
def get_interactions(
|
|
220
|
+
self,
|
|
221
|
+
request: Union[GetInteractionsRequest, dict],
|
|
222
|
+
) -> GetInteractionsResponse:
|
|
223
|
+
"""Get user interactions.
|
|
224
|
+
|
|
225
|
+
Args:
|
|
226
|
+
request (GetInteractionsRequest): The list request
|
|
227
|
+
|
|
228
|
+
Returns:
|
|
229
|
+
GetInteractionsResponse: Response containing list of interactions
|
|
230
|
+
"""
|
|
231
|
+
if isinstance(request, dict):
|
|
232
|
+
request = GetInteractionsRequest(**request)
|
|
233
|
+
response = self._make_request(
|
|
234
|
+
"POST",
|
|
235
|
+
"/api/get_interactions",
|
|
236
|
+
data=request.model_dump_json(),
|
|
237
|
+
)
|
|
238
|
+
return GetInteractionsResponse(**response)
|
|
239
|
+
|
|
240
|
+
def get_profiles(
|
|
241
|
+
self,
|
|
242
|
+
request: Union[GetUserProfilesRequest, dict],
|
|
243
|
+
) -> GetUserProfilesResponse:
|
|
244
|
+
"""Get user profiles.
|
|
245
|
+
|
|
246
|
+
Args:
|
|
247
|
+
request (GetUserProfilesRequest): The list request
|
|
248
|
+
|
|
249
|
+
Returns:
|
|
250
|
+
GetUserProfilesResponse: Response containing list of profiles
|
|
251
|
+
"""
|
|
252
|
+
if isinstance(request, dict):
|
|
253
|
+
request = GetUserProfilesRequest(**request)
|
|
254
|
+
response = self._make_request(
|
|
255
|
+
"POST",
|
|
256
|
+
"/api/get_profiles",
|
|
257
|
+
data=request.model_dump_json(),
|
|
258
|
+
)
|
|
259
|
+
return GetUserProfilesResponse(**response)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
from enum import Enum
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class CustomJSONEncoder(json.JSONEncoder):
|
|
7
|
+
def default(self, o):
|
|
8
|
+
if isinstance(o, datetime):
|
|
9
|
+
return o.isoformat()
|
|
10
|
+
if isinstance(o, Enum):
|
|
11
|
+
return o.value
|
|
12
|
+
return super().default(o)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[tool.poetry]
|
|
2
|
+
name = "agenticmem"
|
|
3
|
+
version = "0.1.1"
|
|
4
|
+
description = "A Python client for the AgenticMem API"
|
|
5
|
+
authors = ["AgenticMem Team"]
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
packages = [{include = "agenticmem"}]
|
|
8
|
+
license = "MIT"
|
|
9
|
+
|
|
10
|
+
[tool.poetry.dependencies]
|
|
11
|
+
python = "^3.10"
|
|
12
|
+
requests = "^2.25.0"
|
|
13
|
+
pydantic = "^2.0.0"
|
|
14
|
+
python-dateutil = "^2.8.0"
|
|
15
|
+
agenticmem-commons = "0.1.1"
|
|
16
|
+
mkdocstrings = {version = ">=0.18.0", extras = ["python"]}
|
|
17
|
+
griffe = "0.48.0"
|
|
18
|
+
|
|
19
|
+
[build-system]
|
|
20
|
+
requires = ["poetry-core>=1.0.0"]
|
|
21
|
+
build-backend = "poetry.core.masonry.api"
|
|
22
|
+
|
|
23
|
+
[tool.poetry.group.dev.dependencies]
|
|
24
|
+
mkdocs = "^1.6.1"
|
|
25
|
+
mkdocs-material = "^9.5.50"
|
|
26
|
+
mkdocstrings = {extras = ["python"], version = "^0.27.0"}
|
|
27
|
+
|
|
28
|
+
[tool.poetry.group.local.dependencies]
|
|
29
|
+
agenticmem-commons = {path = "../agenticmem_commons", develop = true}
|
agenticmem-0.1.0/PKG-INFO
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: agenticmem
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: A Python client for the AgenticMem API
|
|
5
|
-
License: MIT
|
|
6
|
-
Author: AgenticMem Team
|
|
7
|
-
Requires-Python: >=3.7,<4.0
|
|
8
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Requires-Dist: pydantic (>=2.0.0,<3.0.0)
|
|
16
|
-
Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)
|
|
17
|
-
Requires-Dist: requests (>=2.25.0,<3.0.0)
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
|
|
20
|
-
# AgenticMem Python Client
|
|
21
|
-
|
|
22
|
-
A Python client library for interacting with the AgenticMem API. This client provides easy-to-use interfaces for managing user interactions and profiles.
|
|
23
|
-
|
|
24
|
-
## Installation
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
pip install agenticmem
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## Quick Start
|
|
31
|
-
|
|
32
|
-
```python
|
|
33
|
-
from agenticmem import AgenticMemClient
|
|
34
|
-
from agenticmem import UserActionType, InteractionRequest
|
|
35
|
-
from datetime import datetime
|
|
36
|
-
|
|
37
|
-
# Initialize the client
|
|
38
|
-
client = AgenticMemClient(
|
|
39
|
-
api_key="your_api_key",
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
# Publish a user interaction
|
|
43
|
-
interaction = InteractionRequest(
|
|
44
|
-
timestamp=datetime.now(),
|
|
45
|
-
text_interaction="User clicked on product X",
|
|
46
|
-
user_action=UserActionType.CLICK,
|
|
47
|
-
user_action_description="Clicked on product details button"
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
response = client.publish_interaction(
|
|
51
|
-
user_id="user123",
|
|
52
|
-
request_id="req456",
|
|
53
|
-
interaction_requests=[interaction]
|
|
54
|
-
)
|
|
55
|
-
print(f"Published interaction: {response.success} - {response.message}")
|
|
56
|
-
|
|
57
|
-
# Search user profiles
|
|
58
|
-
profiles = client.search_profiles(
|
|
59
|
-
user_id="user123",
|
|
60
|
-
query="recent interactions",
|
|
61
|
-
top_k=5
|
|
62
|
-
)
|
|
63
|
-
for profile in profiles:
|
|
64
|
-
print(f"Profile {profile.profile_id}: {profile.profile_content}")
|
|
65
|
-
|
|
66
|
-
# Search interactions
|
|
67
|
-
interactions = client.search_interactions(
|
|
68
|
-
user_id="user123",
|
|
69
|
-
start_time=datetime(2024, 1, 1),
|
|
70
|
-
end_time=datetime.now()
|
|
71
|
-
)
|
|
72
|
-
for interaction in interactions:
|
|
73
|
-
print(f"Interaction {interaction.interaction_id}: {interaction.text_interaction}")
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Features
|
|
77
|
-
|
|
78
|
-
- User interaction management
|
|
79
|
-
- Publish user interactions
|
|
80
|
-
- Delete user interactions
|
|
81
|
-
- Search interactions
|
|
82
|
-
- User profile management
|
|
83
|
-
- Search user profiles
|
|
84
|
-
- Delete user profiles
|
|
85
|
-
|
|
86
|
-
## API Response Types
|
|
87
|
-
|
|
88
|
-
All API methods return strongly-typed responses:
|
|
89
|
-
|
|
90
|
-
- `publish_interaction()` returns `PublishUserInteractionResponse`
|
|
91
|
-
- `search_interactions()` returns `List[Interaction]`
|
|
92
|
-
- `search_profiles()` returns `List[UserProfile]`
|
|
93
|
-
- `delete_profile()` returns `DeleteUserProfileResponse`
|
|
94
|
-
- `delete_interaction()` returns `DeleteUserInteractionResponse`
|
|
95
|
-
|
|
96
|
-
## Documentation
|
|
97
|
-
|
|
98
|
-
For detailed documentation, please visit [docs link].
|
|
99
|
-
|
|
100
|
-
## License
|
|
101
|
-
|
|
102
|
-
MIT License
|
agenticmem-0.1.0/README.md
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# AgenticMem Python Client
|
|
2
|
-
|
|
3
|
-
A Python client library for interacting with the AgenticMem API. This client provides easy-to-use interfaces for managing user interactions and profiles.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
pip install agenticmem
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Quick Start
|
|
12
|
-
|
|
13
|
-
```python
|
|
14
|
-
from agenticmem import AgenticMemClient
|
|
15
|
-
from agenticmem import UserActionType, InteractionRequest
|
|
16
|
-
from datetime import datetime
|
|
17
|
-
|
|
18
|
-
# Initialize the client
|
|
19
|
-
client = AgenticMemClient(
|
|
20
|
-
api_key="your_api_key",
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
# Publish a user interaction
|
|
24
|
-
interaction = InteractionRequest(
|
|
25
|
-
timestamp=datetime.now(),
|
|
26
|
-
text_interaction="User clicked on product X",
|
|
27
|
-
user_action=UserActionType.CLICK,
|
|
28
|
-
user_action_description="Clicked on product details button"
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
response = client.publish_interaction(
|
|
32
|
-
user_id="user123",
|
|
33
|
-
request_id="req456",
|
|
34
|
-
interaction_requests=[interaction]
|
|
35
|
-
)
|
|
36
|
-
print(f"Published interaction: {response.success} - {response.message}")
|
|
37
|
-
|
|
38
|
-
# Search user profiles
|
|
39
|
-
profiles = client.search_profiles(
|
|
40
|
-
user_id="user123",
|
|
41
|
-
query="recent interactions",
|
|
42
|
-
top_k=5
|
|
43
|
-
)
|
|
44
|
-
for profile in profiles:
|
|
45
|
-
print(f"Profile {profile.profile_id}: {profile.profile_content}")
|
|
46
|
-
|
|
47
|
-
# Search interactions
|
|
48
|
-
interactions = client.search_interactions(
|
|
49
|
-
user_id="user123",
|
|
50
|
-
start_time=datetime(2024, 1, 1),
|
|
51
|
-
end_time=datetime.now()
|
|
52
|
-
)
|
|
53
|
-
for interaction in interactions:
|
|
54
|
-
print(f"Interaction {interaction.interaction_id}: {interaction.text_interaction}")
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Features
|
|
58
|
-
|
|
59
|
-
- User interaction management
|
|
60
|
-
- Publish user interactions
|
|
61
|
-
- Delete user interactions
|
|
62
|
-
- Search interactions
|
|
63
|
-
- User profile management
|
|
64
|
-
- Search user profiles
|
|
65
|
-
- Delete user profiles
|
|
66
|
-
|
|
67
|
-
## API Response Types
|
|
68
|
-
|
|
69
|
-
All API methods return strongly-typed responses:
|
|
70
|
-
|
|
71
|
-
- `publish_interaction()` returns `PublishUserInteractionResponse`
|
|
72
|
-
- `search_interactions()` returns `List[Interaction]`
|
|
73
|
-
- `search_profiles()` returns `List[UserProfile]`
|
|
74
|
-
- `delete_profile()` returns `DeleteUserProfileResponse`
|
|
75
|
-
- `delete_interaction()` returns `DeleteUserInteractionResponse`
|
|
76
|
-
|
|
77
|
-
## Documentation
|
|
78
|
-
|
|
79
|
-
For detailed documentation, please visit [docs link].
|
|
80
|
-
|
|
81
|
-
## License
|
|
82
|
-
|
|
83
|
-
MIT License
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
from agenticmem.client import AgenticMemClient
|
|
2
|
-
from server.api_schema.service_schemas import (
|
|
3
|
-
UserActionType,
|
|
4
|
-
ProfileTimeToLive,
|
|
5
|
-
InteractionRequest,
|
|
6
|
-
Interaction,
|
|
7
|
-
UserProfile,
|
|
8
|
-
PublishUserInteractionRequest,
|
|
9
|
-
PublishUserInteractionResponse,
|
|
10
|
-
DeleteUserProfileRequest,
|
|
11
|
-
DeleteUserProfileResponse,
|
|
12
|
-
DeleteUserInteractionRequest,
|
|
13
|
-
DeleteUserInteractionResponse,
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
__all__ = [
|
|
17
|
-
'AgenticMemClient',
|
|
18
|
-
'UserActionType',
|
|
19
|
-
'ProfileTimeToLive',
|
|
20
|
-
'InteractionRequest',
|
|
21
|
-
'Interaction',
|
|
22
|
-
'UserProfile',
|
|
23
|
-
'PublishUserInteractionRequest',
|
|
24
|
-
'PublishUserInteractionResponse',
|
|
25
|
-
'DeleteUserProfileRequest',
|
|
26
|
-
'DeleteUserProfileResponse',
|
|
27
|
-
'DeleteUserInteractionRequest',
|
|
28
|
-
'DeleteUserInteractionResponse',
|
|
29
|
-
]
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
from typing import List, Optional
|
|
2
|
-
from datetime import datetime
|
|
3
|
-
import requests
|
|
4
|
-
from urllib.parse import urljoin
|
|
5
|
-
|
|
6
|
-
from server.api_schema.service_schemas import (
|
|
7
|
-
Interaction,
|
|
8
|
-
InteractionRequest,
|
|
9
|
-
UserProfile,
|
|
10
|
-
PublishUserInteractionRequest,
|
|
11
|
-
PublishUserInteractionResponse,
|
|
12
|
-
DeleteUserProfileRequest,
|
|
13
|
-
DeleteUserProfileResponse,
|
|
14
|
-
DeleteUserInteractionRequest,
|
|
15
|
-
DeleteUserInteractionResponse,
|
|
16
|
-
)
|
|
17
|
-
from server.api_schema.login_schema import Token
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class AgenticMemClient:
|
|
21
|
-
"""Client for interacting with the AgenticMem API."""
|
|
22
|
-
|
|
23
|
-
def __init__(self, api_key: str):
|
|
24
|
-
"""Initialize the AgenticMem client.
|
|
25
|
-
|
|
26
|
-
Args:
|
|
27
|
-
api_key (str): Your API key for authentication
|
|
28
|
-
"""
|
|
29
|
-
self.api_key = api_key
|
|
30
|
-
self.base_url = "https://api.agenticmem.com"
|
|
31
|
-
self.session = requests.Session()
|
|
32
|
-
self.session.headers.update({
|
|
33
|
-
"Authorization": f"Bearer {api_key}",
|
|
34
|
-
"Content-Type": "application/json"
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
def _make_request(self, method: str, endpoint: str, **kwargs):
|
|
38
|
-
"""Make an HTTP request to the API.
|
|
39
|
-
|
|
40
|
-
Args:
|
|
41
|
-
method (str): HTTP method (GET, POST, DELETE)
|
|
42
|
-
endpoint (str): API endpoint
|
|
43
|
-
**kwargs: Additional arguments to pass to requests
|
|
44
|
-
|
|
45
|
-
Returns:
|
|
46
|
-
dict: API response
|
|
47
|
-
"""
|
|
48
|
-
url = urljoin(self.base_url, endpoint)
|
|
49
|
-
response = self.session.request(method, url, **kwargs)
|
|
50
|
-
response.raise_for_status()
|
|
51
|
-
return response.json()
|
|
52
|
-
|
|
53
|
-
def login(self, email: str, password: str) -> Token:
|
|
54
|
-
"""Login to the AgenticMem API.
|
|
55
|
-
|
|
56
|
-
Args:
|
|
57
|
-
email (str): The user's email
|
|
58
|
-
password (str): The user's password
|
|
59
|
-
|
|
60
|
-
Returns:
|
|
61
|
-
Token: Response containing success status and message
|
|
62
|
-
"""
|
|
63
|
-
response = self._make_request("POST", "/api/login", json={"email": email, "password": password})
|
|
64
|
-
return Token(**response)
|
|
65
|
-
|
|
66
|
-
def publish_interaction(
|
|
67
|
-
self,
|
|
68
|
-
user_id: str,
|
|
69
|
-
request_id: str,
|
|
70
|
-
interaction_requests: List[InteractionRequest]
|
|
71
|
-
) -> PublishUserInteractionResponse:
|
|
72
|
-
"""Publish user interactions.
|
|
73
|
-
|
|
74
|
-
Args:
|
|
75
|
-
user_id (str): The user ID
|
|
76
|
-
request_id (str): The request ID
|
|
77
|
-
interaction_requests (List[InteractionRequest]): List of interaction requests
|
|
78
|
-
|
|
79
|
-
Returns:
|
|
80
|
-
PublishUserInteractionResponse: Response containing success status and message
|
|
81
|
-
"""
|
|
82
|
-
request = PublishUserInteractionRequest(
|
|
83
|
-
user_id=user_id,
|
|
84
|
-
request_id=request_id,
|
|
85
|
-
interaction_requests=interaction_requests
|
|
86
|
-
)
|
|
87
|
-
response = self._make_request("POST", "/api/interactions", json=request.model_dump())
|
|
88
|
-
return PublishUserInteractionResponse(**response)
|
|
89
|
-
|
|
90
|
-
def search_interactions(
|
|
91
|
-
self,
|
|
92
|
-
user_id: str,
|
|
93
|
-
request_id: Optional[str] = None,
|
|
94
|
-
query: Optional[str] = None,
|
|
95
|
-
start_time: Optional[datetime] = None,
|
|
96
|
-
end_time: Optional[datetime] = None,
|
|
97
|
-
most_recent_k: Optional[int] = None
|
|
98
|
-
) -> List[Interaction]:
|
|
99
|
-
"""Search for user interactions.
|
|
100
|
-
|
|
101
|
-
Args:
|
|
102
|
-
user_id (str): The user ID
|
|
103
|
-
request_id (Optional[str], optional): Filter by request ID
|
|
104
|
-
query (Optional[str], optional): Search query
|
|
105
|
-
start_time (Optional[datetime], optional): Start time filter
|
|
106
|
-
end_time (Optional[datetime], optional): End time filter
|
|
107
|
-
most_recent_k (Optional[int], optional): Limit to most recent K results
|
|
108
|
-
|
|
109
|
-
Returns:
|
|
110
|
-
List[Interaction]: List of matching interactions
|
|
111
|
-
"""
|
|
112
|
-
params = {
|
|
113
|
-
"user_id": user_id,
|
|
114
|
-
"request_id": request_id,
|
|
115
|
-
"query": query,
|
|
116
|
-
"start_time": start_time,
|
|
117
|
-
"end_time": end_time,
|
|
118
|
-
"most_recent_k": most_recent_k
|
|
119
|
-
}
|
|
120
|
-
# Remove None values
|
|
121
|
-
params = {k: v for k, v in params.items() if v is not None}
|
|
122
|
-
response = self._make_request("GET", "/api/interactions/search", params=params)
|
|
123
|
-
return [Interaction(**interaction) for interaction in response.get("interactions", [])]
|
|
124
|
-
|
|
125
|
-
def search_profiles(
|
|
126
|
-
self,
|
|
127
|
-
user_id: str,
|
|
128
|
-
genered_from_request_id: Optional[str] = None,
|
|
129
|
-
query: Optional[str] = None,
|
|
130
|
-
start_time: Optional[datetime] = None,
|
|
131
|
-
end_time: Optional[datetime] = None,
|
|
132
|
-
top_k: Optional[int] = None
|
|
133
|
-
) -> List[UserProfile]:
|
|
134
|
-
"""Search for user profiles.
|
|
135
|
-
|
|
136
|
-
Args:
|
|
137
|
-
user_id (str): The user ID
|
|
138
|
-
genered_from_request_id (Optional[str], optional): Filter by request ID that generated the profile
|
|
139
|
-
query (Optional[str], optional): Search query
|
|
140
|
-
start_time (Optional[datetime], optional): Start time filter
|
|
141
|
-
end_time (Optional[datetime], optional): End time filter
|
|
142
|
-
top_k (Optional[int], optional): Limit to top K results
|
|
143
|
-
|
|
144
|
-
Returns:
|
|
145
|
-
List[UserProfile]: List of matching profiles
|
|
146
|
-
"""
|
|
147
|
-
params = {
|
|
148
|
-
"user_id": user_id,
|
|
149
|
-
"genered_from_request_id": genered_from_request_id,
|
|
150
|
-
"query": query,
|
|
151
|
-
"start_time": start_time,
|
|
152
|
-
"end_time": end_time,
|
|
153
|
-
"top_k": top_k
|
|
154
|
-
}
|
|
155
|
-
# Remove None values
|
|
156
|
-
params = {k: v for k, v in params.items() if v is not None}
|
|
157
|
-
response = self._make_request("GET", "/api/profiles/search", params=params)
|
|
158
|
-
return [UserProfile(**profile) for profile in response.get("user_profiles", [])]
|
|
159
|
-
|
|
160
|
-
def delete_profile(
|
|
161
|
-
self,
|
|
162
|
-
user_id: str,
|
|
163
|
-
profile_id: str = "",
|
|
164
|
-
profile_search_query: str = ""
|
|
165
|
-
) -> DeleteUserProfileResponse:
|
|
166
|
-
"""Delete user profiles.
|
|
167
|
-
|
|
168
|
-
Args:
|
|
169
|
-
user_id (str): The user ID
|
|
170
|
-
profile_id (str, optional): Specific profile ID to delete
|
|
171
|
-
profile_search_query (str, optional): Query to match profiles for deletion
|
|
172
|
-
|
|
173
|
-
Returns:
|
|
174
|
-
DeleteUserProfileResponse: Response containing success status and message
|
|
175
|
-
"""
|
|
176
|
-
request = DeleteUserProfileRequest(
|
|
177
|
-
user_id=user_id,
|
|
178
|
-
profile_id=profile_id,
|
|
179
|
-
profile_search_query=profile_search_query
|
|
180
|
-
)
|
|
181
|
-
response = self._make_request("DELETE", "/api/profiles", json=request.model_dump())
|
|
182
|
-
return DeleteUserProfileResponse(**response)
|
|
183
|
-
|
|
184
|
-
def delete_interaction(
|
|
185
|
-
self,
|
|
186
|
-
user_id: str,
|
|
187
|
-
interaction_id: str
|
|
188
|
-
) -> DeleteUserInteractionResponse:
|
|
189
|
-
"""Delete a user interaction.
|
|
190
|
-
|
|
191
|
-
Args:
|
|
192
|
-
user_id (str): The user ID
|
|
193
|
-
interaction_id (str): The interaction ID to delete
|
|
194
|
-
|
|
195
|
-
Returns:
|
|
196
|
-
DeleteUserInteractionResponse: Response containing success status and message
|
|
197
|
-
"""
|
|
198
|
-
request = DeleteUserInteractionRequest(
|
|
199
|
-
user_id=user_id,
|
|
200
|
-
interaction_id=interaction_id
|
|
201
|
-
)
|
|
202
|
-
response = self._make_request("DELETE", "/api/interactions", json=request.model_dump())
|
|
203
|
-
return DeleteUserInteractionResponse(**response)
|
agenticmem-0.1.0/pyproject.toml
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
[tool.poetry]
|
|
2
|
-
name = "agenticmem"
|
|
3
|
-
version = "0.1.0"
|
|
4
|
-
description = "A Python client for the AgenticMem API"
|
|
5
|
-
authors = ["AgenticMem Team"]
|
|
6
|
-
readme = "README.md"
|
|
7
|
-
packages = [{include = "agenticmem"}]
|
|
8
|
-
license = "MIT"
|
|
9
|
-
|
|
10
|
-
[tool.poetry.dependencies]
|
|
11
|
-
python = "^3.7"
|
|
12
|
-
requests = "^2.25.0"
|
|
13
|
-
pydantic = "^2.0.0"
|
|
14
|
-
python-dateutil = "^2.8.0"
|
|
15
|
-
|
|
16
|
-
[build-system]
|
|
17
|
-
requires = ["poetry-core"]
|
|
18
|
-
build-backend = "poetry.core.masonry.api"
|