newslens / src /api /models.py
Jitender20's picture
Add NewsLens Streamlit app
208266a
from pydantic import BaseModel, Field
from typing import Optional
class AnalyzeRequest(BaseModel):
topic: str = Field(..., min_length=1, max_length=200)
top_k: int = Field(default=10, ge=1, le=20)
class ArticleResult(BaseModel):
source: str
source_bias: str
source_bias_provenance: Optional[str] = None
url: str
title: Optional[str] = None
description: Optional[str] = None
publishedAt: Optional[str] = None
text: str
text_label: str
confidence: float
similarity_score: float
probabilities: dict
class SourceSummary(BaseModel):
source_bias: str
Biased: int
Not_Biased: int = Field(alias="Not Biased")
total: int
class Config:
populate_by_name = True
class AnalyzeResponse(BaseModel):
topic: str
total_articles: int
results: list[ArticleResult]
summary: dict[str, SourceSummary]
class IngestRequest(BaseModel):
topic: str = Field(..., min_length=1, max_length=200)
page_size: int = Field(default=10, ge=1, le=50)
class IngestResponse(BaseModel):
topic: str
articles_fetched: int
articles_stored: int
status: str