| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import httpx
- from core_domain import (
- MemoryCreateContract,
- MemoryItemContract,
- MemorySearchRequestContract,
- MemorySearchResultContract,
- )
- class MemoryClientError(Exception):
- pass
- class MemoryClient:
- def __init__(self, *, base_url: str, timeout_seconds: float = 10.0) -> None:
- self.base_url = base_url.rstrip("/")
- self.timeout_seconds = timeout_seconds
- def create_memory(self, payload: MemoryCreateContract) -> MemoryItemContract:
- try:
- with httpx.Client(timeout=self.timeout_seconds) as client:
- response = client.post(
- f"{self.base_url}/memories",
- json=payload.model_dump(mode="json"),
- )
- response.raise_for_status()
- return MemoryItemContract.model_validate(response.json())
- except httpx.HTTPError as exc:
- raise MemoryClientError(f"memory-service create request failed: {exc}") from exc
- def search_memories(
- self,
- payload: MemorySearchRequestContract,
- ) -> list[MemorySearchResultContract]:
- try:
- with httpx.Client(timeout=self.timeout_seconds) as client:
- response = client.post(
- f"{self.base_url}/memories/search",
- json=payload.model_dump(mode="json"),
- )
- response.raise_for_status()
- return [
- MemorySearchResultContract.model_validate(item)
- for item in response.json()
- ]
- except httpx.HTTPError as exc:
- raise MemoryClientError(f"memory-service search request failed: {exc}") from exc
|