contracts.py 816 B

123456789101112131415161718192021222324252627282930313233
  1. from __future__ import annotations
  2. from dataclasses import dataclass, replace
  3. @dataclass(frozen=True)
  4. class KnowledgeEvidence:
  5. chunk_id: str
  6. content: str
  7. score: float
  8. retriever: str
  9. object_uid: str
  10. object_type: str
  11. object_version: int
  12. business_domain_uid: str | None
  13. point_keys: tuple[str, ...]
  14. point_revisions: tuple[int, ...]
  15. generation: int
  16. source_updated_at: str | None
  17. freshness_status: str = "fresh"
  18. section_path: str | None = None
  19. def with_score_and_retriever(
  20. self, score: float, retriever: str
  21. ) -> KnowledgeEvidence:
  22. return replace(self, score=score, retriever=retriever)
  23. @dataclass(frozen=True)
  24. class SearchResult:
  25. evidence: tuple[KnowledgeEvidence, ...]
  26. mode: str
  27. degraded_components: tuple[str, ...] = ()