memory_client.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import httpx
  2. from core_domain import (
  3. MemoryCreateContract,
  4. MemoryItemContract,
  5. MemorySearchRequestContract,
  6. MemorySearchResultContract,
  7. )
  8. class MemoryClientError(Exception):
  9. pass
  10. class MemoryClient:
  11. def __init__(self, *, base_url: str, timeout_seconds: float = 10.0) -> None:
  12. self.base_url = base_url.rstrip("/")
  13. self.timeout_seconds = timeout_seconds
  14. def create_memory(self, payload: MemoryCreateContract) -> MemoryItemContract:
  15. try:
  16. with httpx.Client(timeout=self.timeout_seconds) as client:
  17. response = client.post(
  18. f"{self.base_url}/memories",
  19. json=payload.model_dump(mode="json"))
  20. response.raise_for_status()
  21. return MemoryItemContract.model_validate(response.json())
  22. except httpx.HTTPError as exc:
  23. raise MemoryClientError(f"memory-service create request failed: {exc}") from exc
  24. def search_memories(
  25. self,
  26. payload: MemorySearchRequestContract) -> list[MemorySearchResultContract]:
  27. try:
  28. with httpx.Client(timeout=self.timeout_seconds) as client:
  29. response = client.post(
  30. f"{self.base_url}/memories/search",
  31. json=payload.model_dump(mode="json"))
  32. response.raise_for_status()
  33. return [
  34. MemorySearchResultContract.model_validate(item)
  35. for item in response.json()
  36. ]
  37. except httpx.HTTPError as exc:
  38. raise MemoryClientError(f"memory-service search request failed: {exc}") from exc