from pydantic import BaseModel, computed_field class Source(BaseModel): title: str url: str summary: str | None = None abstract: str | None = None doi: str | None = None venue: str | None = None year: int | None = None citations: int | None = None influential_citations: int | None = None @computed_field @property def citation(self) -> str: return f"[{self.title}]({self.url}). *{self.venue}* {self.year}." class Statement(BaseModel): text: str sources: list[Source] | None = None class Statements(BaseModel): statements: list[Statement] thoughts: str | None = None