File size: 1,033 Bytes
c83354b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | from dataclasses import dataclass, field
from typing import List
@dataclass
class Evidence:
claim: str
source_url: str
excerpt: str
supports_claim: bool | None = None
@dataclass
class ResearchState:
question: str
claims: List[str] = field(default_factory=list)
evidence: List[Evidence] = field(default_factory=list)
def add_claim(self, claim: str):
if claim not in self.claims:
self.claims.append(claim)
def add_evidence(
self,
claim: str,
source_url: str,
excerpt: str,
supports_claim: bool | None = None,
):
self.evidence.append(
Evidence(
claim=claim,
source_url=source_url,
excerpt=excerpt,
supports_claim=supports_claim,
)
)
def evidence_for_claim(self, claim: str) -> List[Evidence]:
return [
evidence
for evidence in self.evidence
if evidence.claim == claim
] |