MCPcopy Create free account
hub / github.com/MemTensor/MemOS / MemosApiOnlineClient

Class MemosApiOnlineClient

evaluation/scripts/utils/client.py:198–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

196
197
198class MemosApiOnlineClient:
199 def __init__(self):
200 self.memos_url = os.getenv("MEMOS_ONLINE_URL")
201 self.headers = {"Content-Type": "application/json", "Authorization": os.getenv("MEMOS_KEY")}
202
203 def add(self, messages, user_id, conv_id=None, batch_size: int = 9999):
204 url = f"{self.memos_url}/add/message"
205 for i in range(0, len(messages), batch_size):
206 batch_messages = messages[i : i + batch_size]
207 payload = json.dumps(
208 {
209 "messages": batch_messages,
210 "user_id": user_id,
211 "conversation_id": conv_id,
212 }
213 )
214
215 max_retries = 5
216 for attempt in range(max_retries):
217 try:
218 response = requests.request("POST", url, data=payload, headers=self.headers)
219 assert response.status_code == 200, response.text
220 assert json.loads(response.text)["message"] == "ok", response.text
221 break
222 except Exception as e:
223 if attempt < max_retries - 1:
224 time.sleep(2**attempt)
225 else:
226 raise e
227
228 def search(self, query, user_id, top_k):
229 """Search memories."""
230 url = f"{self.memos_url}/search/memory"
231 payload = json.dumps(
232 {
233 "query": query,
234 "user_id": user_id,
235 "memory_limit_number": top_k,
236 "mode": os.getenv("SEARCH_MODE", "fast"),
237 "include_preference": True,
238 "pref_top_k": 6,
239 }
240 )
241
242 max_retries = 5
243 for attempt in range(max_retries):
244 try:
245 response = requests.request("POST", url, data=payload, headers=self.headers)
246 assert response.status_code == 200, response.text
247 assert json.loads(response.text)["message"] == "ok", response.text
248 text_mem_res = json.loads(response.text)["data"]["memory_detail_list"]
249 pref_mem_res = json.loads(response.text)["data"]["preference_detail_list"]
250 preference_note = json.loads(response.text)["data"]["preference_note"]
251 for i in text_mem_res:
252 i.update({"memory": i.pop("memory_value")})
253 explicit_pref_string = "Explicit Preference:"
254 implicit_pref_string = "\n\nImplicit Preference:"
255 explicit_idx = 0

Callers 8

process_userFunction · 0.90
process_userFunction · 0.90
process_userFunction · 0.90
ingest_convFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
ingest_convFunction · 0.90
process_userFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected