Spaces:
Running
Running
| """ | |
| Pydantic data models for FactEval's pipeline objects. | |
| """ | |
| from pydantic import BaseModel, Field | |
| class Claim(BaseModel): | |
| """A single atomic, verifiable claim extracted from text.""" | |
| text: str = Field(..., description="The claim statement.") | |
| source_text: str = Field( | |
| default="", | |
| description="The original text this claim was extracted from.", | |
| ) | |
| def __str__(self) -> str: | |
| return self.text | |
| class Evidence(BaseModel): | |
| """A single piece of evidence retrieved for a claim.""" | |
| sentence: str = Field(..., description="The evidence sentence.") | |
| score: float = Field( | |
| ..., ge=0.0, description="Cosine similarity score (may slightly exceed 1.0 due to float precision)." | |
| ) | |
| source_context: str = Field( | |
| default="", | |
| description="The full context passage this sentence came from.", | |
| ) | |
| def __str__(self) -> str: | |
| return f"[{self.score:.3f}] {self.sentence}" | |
| class ClaimWithEvidence(BaseModel): | |
| """A claim paired with its retrieved evidence.""" | |
| claim: Claim | |
| evidence: list[Evidence] = Field(default_factory=list) | |
| def best_evidence(self) -> Evidence | None: | |
| """Return the highest-scoring evidence, or None.""" | |
| return self.evidence[0] if self.evidence else None | |