diff --git a/src/memos/api/client.py b/src/memos/api/client.py index 2cb8faab..d45276f2 100644 --- a/src/memos/api/client.py +++ b/src/memos/api/client.py @@ -19,7 +19,7 @@ class MemOSClient: def __init__(self, api_key: str | None = None, base_url: str | None = None): self.base_url = ( - base_url or os.getenv("MEMOS_BASE_URL") or "https://memos.memtensor.cn/api/openmem" + base_url or os.getenv("MEMOS_BASE_URL") or "https://memos.memtensor.cn/api/openmem/v1" ) api_key = api_key or os.getenv("MEMOS_API_KEY") @@ -34,7 +34,7 @@ def _validate_required_params(self, **params): if not param_value: raise ValueError(f"{param_name} is required") - def get_messages( + def get_message( self, user_id: str, conversation_id: str | None = None ) -> MemOSGetMessagesResponse: """Get messages""" @@ -42,7 +42,7 @@ def get_messages( self._validate_required_params(user_id=user_id) url = f"{self.base_url}/get/message" - payload = {"userId": user_id, "conversationId": conversation_id} + payload = {"user_id": user_id, "conversation_id": conversation_id} for retry in range(MAX_RETRY_COUNT): try: response = requests.post( @@ -56,7 +56,7 @@ def get_messages( if retry == MAX_RETRY_COUNT - 1: raise - def add( + def add_message( self, messages: list[dict[str, Any]], user_id: str, conversation_id: str ) -> MemOSAddResponse: """Add memories""" @@ -66,7 +66,7 @@ def add( ) url = f"{self.base_url}/add/message" - payload = {"messages": messages, "userId": user_id, "conversationId": conversation_id} + payload = {"messages": messages, "user_id": user_id, "conversation_id": conversation_id} for retry in range(MAX_RETRY_COUNT): try: response = requests.post( @@ -80,7 +80,7 @@ def add( if retry == MAX_RETRY_COUNT - 1: raise - def search( + def search_memory( self, query: str, user_id: str, conversation_id: str, memory_limit_number: int = 6 ) -> MemOSSearchResponse: """Search memories""" @@ -90,9 +90,9 @@ def search( url = f"{self.base_url}/search/memory" payload = { "query": query, - "userId": user_id, - "conversationId": conversation_id, - "memoryLimitNumber": memory_limit_number, + "user_id": user_id, + "conversation_id": conversation_id, + "memory_limit_number": memory_limit_number, } for retry in range(MAX_RETRY_COUNT): diff --git a/src/memos/api/product_models.py b/src/memos/api/product_models.py index 7371c05b..9c3af42f 100644 --- a/src/memos/api/product_models.py +++ b/src/memos/api/product_models.py @@ -186,39 +186,20 @@ class SuggestionRequest(BaseRequest): class MessageDetail(BaseModel): """Individual message detail model based on actual API response.""" - role: str = Field(..., description="Message role (user/assistant)") - content: str = Field(..., description="Message content") - create_time: int | None = Field( - None, alias="createTime", description="Message creation timestamp" - ) - update_time: int | None = Field( - None, alias="updateTime", description="Message update timestamp" - ) + model_config = {"extra": "allow"} class MemoryDetail(BaseModel): """Individual memory detail model based on actual API response.""" - id: str = Field(..., description="Memory ID") - memory_key: str = Field(..., alias="memoryKey", description="Memory key/title") - memory_value: str = Field(..., alias="memoryValue", description="Memory content") - memory_type: str = Field( - ..., alias="memoryType", description="Memory type (e.g., WorkingMemory)" - ) - memory_time: int | None = Field(None, alias="memoryTime", description="Memory timestamp") - conversation_id: str = Field(..., alias="conversationId", description="Conversation ID") - status: str = Field(..., description="Memory status (e.g., activated)") - confidence: float = Field(..., description="Memory confidence score") - tags: list[str] = Field(default_factory=list, description="Memory tags") - update_time: int = Field(..., alias="updateTime", description="Last update timestamp") - relativity: float = Field(..., description="Memory relativity/similarity score") + model_config = {"extra": "allow"} class GetMessagesData(BaseModel): """Data model for get messages response based on actual API.""" message_detail_list: list[MessageDetail] = Field( - default_factory=list, alias="messageDetailList", description="List of message details" + default_factory=list, alias="memory_detail_list", description="List of message details" ) @@ -226,10 +207,10 @@ class SearchMemoryData(BaseModel): """Data model for search memory response based on actual API.""" memory_detail_list: list[MemoryDetail] = Field( - default_factory=list, alias="memoryDetailList", description="List of memory details" + default_factory=list, alias="memory_detail_list", description="List of memory details" ) message_detail_list: list[MessageDetail] | None = Field( - None, alias="messageDetailList", description="List of message details (usually None)" + None, alias="message_detail_list", description="List of message details (usually None)" )