Reader Agent¶
reader ¶
Reader agent for post quality evaluation via pairwise comparisons.
The reader agent evaluates blog posts by comparing them pairwise and providing structured feedback. It operates on Documents delivered by output adapters.
Public API
- compare_posts: Main evaluation function
- EvaluationRequest: Request model with two Documents
- PostComparison: Result model with winner and feedback
- ReaderFeedback: Per-post feedback model
- RankingResult: Final ranking result model
Example
from egregora.agents.reader import compare_posts, EvaluationRequest from egregora.data_primitives import Document, DocumentType
post_a = Document(content="...", type=DocumentType.POST, metadata={"slug": "post-a"}) post_b = Document(content="...", type=DocumentType.POST, metadata={"slug": "post-b"}) request = EvaluationRequest(post_a=post_a, post_b=post_b)
comparison = await compare_posts(request) print(comparison.winner) # 'a', 'b', or 'tie'
EvaluationRequest dataclass ¶
Request to evaluate posts.
The reader agent operates on Documents produced by the pipeline. Output adapters deliver Documents to the reader for evaluation.
PostComparison dataclass ¶
PostComparison(
post_a: Document,
post_b: Document,
winner: Literal["a", "b", "tie"],
reasoning: str,
feedback_a: ReaderFeedback,
feedback_b: ReaderFeedback,
)
Result of comparing two posts.
The reader agent evaluates Documents delivered by output adapters. Each comparison references the evaluated Documents directly.
RankingResult dataclass ¶
Post quality ranking result.
ReaderFeedback ¶
Bases: BaseModel
Structured feedback from a simulated reader.
compare_posts ¶
compare_posts(
request: EvaluationRequest,
model: str | None = None,
api_key: str | None = None,
) -> PostComparison
Compare two posts and return structured comparison result.
The reader agent evaluates Documents delivered by output adapters. Each EvaluationRequest contains two Document instances with full content and metadata.
Uses pydantic-ai for structured output generation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request | EvaluationRequest | Evaluation request with two Document instances | required |
model | str | None | Optional model override (defaults to configured reader model) | None |
api_key | str | None | Optional API key (defaults to GOOGLE_API_KEY env var) | None |
Returns:
| Type | Description |
|---|---|
PostComparison | PostComparison with winner, reasoning, feedback, and Document references |