mirror of
https://gitcode.com/JianFeeeee/TrulyMEM-TrueHumanMEM.git
synced 2026-10-15 12:15:32 +00:00
feat: add config/history management to core layer
- Add GET_CONFIG, SET_CONFIG, GET_HISTORY, SAVE_HISTORY to BackendServer - Update BackendClient with get_config, get_message_history, save_message_history - All API key and message history now stored in core layer
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
import threading
|
||||
from typing import Any, Dict
|
||||
|
||||
from .server import BackendServer
|
||||
from .server import BackendServer, MessageType
|
||||
|
||||
|
||||
class BackendClient:
|
||||
@ -20,8 +20,42 @@ class BackendClient:
|
||||
self._request_counter += 1
|
||||
return self._server.execute_tool(tool_name, arguments, timeout)
|
||||
|
||||
def update_config(self, api_key: str, base_url: str = "https://api.deepseek.com") -> None:
|
||||
self._server.update_config(api_key, base_url)
|
||||
def update_config(self, api_key: str, base_url: str = "https://api.deepseek.com") -> Dict[str, Any]:
|
||||
return self._send_request(MessageType.SET_CONFIG, {"api_key": api_key, "base_url": base_url})
|
||||
|
||||
def get_config(self) -> Dict[str, str]:
|
||||
result = self._send_request(MessageType.GET_CONFIG, {})
|
||||
return result.get("data", {"api_key": "", "base_url": "https://api.deepseek.com"})
|
||||
|
||||
def get_message_history(self) -> list:
|
||||
result = self._send_request(MessageType.GET_HISTORY, {})
|
||||
return result.get("data", {}).get("history", [])
|
||||
|
||||
def save_message_history(self, messages: list) -> None:
|
||||
self._send_request(MessageType.SAVE_HISTORY, {"messages": messages})
|
||||
|
||||
def _send_request(self, message_type: MessageType, payload: Dict[str, Any]) -> Dict[str, Any]:
|
||||
import queue
|
||||
request_id = f"{id(self)}"
|
||||
response_queue = queue.Queue()
|
||||
|
||||
from .server import BackendRequest
|
||||
request = BackendRequest(
|
||||
request_id=request_id,
|
||||
message_type=message_type,
|
||||
payload=payload,
|
||||
response_queue=response_queue
|
||||
)
|
||||
|
||||
self._server._request_queue.put(request)
|
||||
|
||||
try:
|
||||
response = response_queue.get(timeout=5.0)
|
||||
if not response.success:
|
||||
raise Exception(response.error)
|
||||
return {"success": True, "data": response.data}
|
||||
except queue.Empty:
|
||||
return {"success": False, "error": "timeout"}
|
||||
|
||||
def shutdown(self) -> None:
|
||||
self._server.shutdown()
|
||||
@ -16,6 +16,10 @@ class MessageType(Enum):
|
||||
PROCESS_MESSAGE = "process_message"
|
||||
EXECUTE_TOOL = "execute_tool"
|
||||
GET_STATUS = "get_status"
|
||||
GET_CONFIG = "get_config"
|
||||
SET_CONFIG = "set_config"
|
||||
GET_HISTORY = "get_history"
|
||||
SAVE_HISTORY = "save_history"
|
||||
SHUTDOWN = "shutdown"
|
||||
|
||||
|
||||
@ -91,6 +95,14 @@ class BackendServer:
|
||||
self._handle_execute_tool(request)
|
||||
elif request.message_type == MessageType.GET_STATUS:
|
||||
self._handle_get_status(request)
|
||||
elif request.message_type == MessageType.GET_CONFIG:
|
||||
self._handle_get_config(request)
|
||||
elif request.message_type == MessageType.SET_CONFIG:
|
||||
self._handle_set_config(request)
|
||||
elif request.message_type == MessageType.GET_HISTORY:
|
||||
self._handle_get_history(request)
|
||||
elif request.message_type == MessageType.SAVE_HISTORY:
|
||||
self._handle_save_history(request)
|
||||
elif request.message_type == MessageType.SHUTDOWN:
|
||||
self._running = False
|
||||
self._send_response(request, BackendResponse(
|
||||
@ -262,6 +274,69 @@ class BackendServer:
|
||||
error=str(e)
|
||||
))
|
||||
|
||||
def _handle_get_config(self, request: BackendRequest) -> None:
|
||||
try:
|
||||
config = self.get_config()
|
||||
self._send_response(request, BackendResponse(
|
||||
request_id=request.request_id,
|
||||
success=True,
|
||||
data=config
|
||||
))
|
||||
except Exception as e:
|
||||
self._send_response(request, BackendResponse(
|
||||
request_id=request.request_id,
|
||||
success=False,
|
||||
error=str(e)
|
||||
))
|
||||
|
||||
def _handle_set_config(self, request: BackendRequest) -> None:
|
||||
try:
|
||||
api_key = request.payload.get("api_key", "")
|
||||
base_url = request.payload.get("base_url", "https://api.deepseek.com")
|
||||
self.update_config(api_key, base_url)
|
||||
self._send_response(request, BackendResponse(
|
||||
request_id=request.request_id,
|
||||
success=True,
|
||||
data={"status": "config_updated"}
|
||||
))
|
||||
except Exception as e:
|
||||
self._send_response(request, BackendResponse(
|
||||
request_id=request.request_id,
|
||||
success=False,
|
||||
error=str(e)
|
||||
))
|
||||
|
||||
def _handle_get_history(self, request: BackendRequest) -> None:
|
||||
try:
|
||||
history = self.get_message_history()
|
||||
self._send_response(request, BackendResponse(
|
||||
request_id=request.request_id,
|
||||
success=True,
|
||||
data={"history": history}
|
||||
))
|
||||
except Exception as e:
|
||||
self._send_response(request, BackendResponse(
|
||||
request_id=request.request_id,
|
||||
success=False,
|
||||
error=str(e)
|
||||
))
|
||||
|
||||
def _handle_save_history(self, request: BackendRequest) -> None:
|
||||
try:
|
||||
messages = request.payload.get("messages", [])
|
||||
self.save_message_history(messages)
|
||||
self._send_response(request, BackendResponse(
|
||||
request_id=request.request_id,
|
||||
success=True,
|
||||
data={"status": "history_saved"}
|
||||
))
|
||||
except Exception as e:
|
||||
self._send_response(request, BackendResponse(
|
||||
request_id=request.request_id,
|
||||
success=False,
|
||||
error=str(e)
|
||||
))
|
||||
|
||||
def _send_response(self, request: BackendRequest, response: BackendResponse) -> None:
|
||||
if request.response_queue:
|
||||
request.response_queue.put(response)
|
||||
@ -333,9 +408,19 @@ class BackendServer:
|
||||
|
||||
def update_config(self, api_key: str, base_url: str = "https://api.deepseek.com") -> None:
|
||||
with self._lock:
|
||||
self._config = {"api_key": api_key, "base_url": base_url}
|
||||
if api_key and self._graph:
|
||||
self._client = GraphMemoryClient(
|
||||
api_key=api_key,
|
||||
base_url=base_url,
|
||||
graph=self._graph
|
||||
)
|
||||
)
|
||||
|
||||
def get_config(self) -> Dict[str, str]:
|
||||
return getattr(self, "_config", {"api_key": "", "base_url": "https://api.deepseek.com"})
|
||||
|
||||
def save_message_history(self, messages: list) -> None:
|
||||
self._message_history = messages
|
||||
|
||||
def get_message_history(self) -> list:
|
||||
return getattr(self, "_message_history", [])
|
||||
Reference in New Issue
Block a user