schemas.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from __future__ import annotations
  2. from datetime import datetime
  3. from typing import Any, Literal
  4. from pydantic import BaseModel, Field
  5. SystemName = Literal["text2mem", "mem0", "letta", "reme", "memu"]
  6. class MemoryItem(BaseModel):
  7. """不同记忆系统对外展示的统一数据结构。"""
  8. id: str
  9. system: str
  10. workspace_id: str
  11. content: str
  12. memory_type: str = "semantic"
  13. scope: str = "workspace"
  14. source: str = "user_direct"
  15. confidence: float = 1.0
  16. valid_from: datetime | None = None
  17. valid_to: datetime | None = None
  18. created_at: datetime
  19. updated_at: datetime
  20. metadata: dict[str, Any] = Field(default_factory=dict)
  21. class AuditEvent(BaseModel):
  22. """记录一次记忆操作及其执行结果。"""
  23. id: str
  24. system: str
  25. workspace_id: str
  26. operation: str
  27. target: str | None = None
  28. status: str = "ok"
  29. details: dict[str, Any] = Field(default_factory=dict)
  30. created_at: datetime
  31. class SystemDescriptor(BaseModel):
  32. """描述适配器能力、依赖和当前可用状态。"""
  33. id: SystemName
  34. name: str
  35. paradigm: str
  36. description: str
  37. available: bool
  38. mode: str
  39. status: str
  40. package: str | None = None
  41. setup_hint: str | None = None
  42. class ChatRequest(BaseModel):
  43. system: SystemName
  44. message: str = Field(min_length=1, max_length=10000)
  45. class ChatResponse(BaseModel):
  46. """统一对话响应,包含回答、召回记忆和操作轨迹。"""
  47. system: SystemName
  48. answer: str
  49. mode: str
  50. memory_context: list[MemoryItem] = Field(default_factory=list)
  51. memory_events: list[dict[str, Any]] = Field(default_factory=list)
  52. audit_events: list[AuditEvent] = Field(default_factory=list)
  53. class ResetRequest(BaseModel):
  54. system: SystemName | None = None