ALwrity AI Blog Writer - Added Google Grounding UI Implementation

This commit is contained in:
ajaysi
2025-09-18 18:45:53 +05:30
parent 9f13daf443
commit 4d153b292d
72 changed files with 11944 additions and 1526 deletions

View File

@@ -15,6 +15,39 @@ class ResearchSource(BaseModel):
excerpt: Optional[str] = None
credibility_score: Optional[float] = None
published_at: Optional[str] = None
index: Optional[int] = None
source_type: Optional[str] = None # e.g., 'web'
class GroundingChunk(BaseModel):
title: str
url: str
confidence_score: Optional[float] = None
class GroundingSupport(BaseModel):
confidence_scores: List[float] = []
grounding_chunk_indices: List[int] = []
segment_text: str = ""
start_index: Optional[int] = None
end_index: Optional[int] = None
class Citation(BaseModel):
citation_type: str # e.g., 'inline'
start_index: int
end_index: int
text: str
source_indices: List[int] = []
reference: str # e.g., 'Source 1'
class GroundingMetadata(BaseModel):
grounding_chunks: List[GroundingChunk] = []
grounding_supports: List[GroundingSupport] = []
citations: List[Citation] = []
search_entry_point: Optional[str] = None
web_search_queries: List[str] = []
class BlogResearchRequest(BaseModel):
@@ -35,6 +68,8 @@ class BlogResearchResponse(BaseModel):
suggested_angles: List[str] = []
search_widget: Optional[str] = None # HTML content for search widget
search_queries: List[str] = [] # Search queries generated by Gemini
grounding_metadata: Optional[GroundingMetadata] = None # Google grounding metadata
original_keywords: List[str] = [] # Original user-provided keywords for caching
error_message: Optional[str] = None # Error message for graceful failures
@@ -55,10 +90,41 @@ class BlogOutlineRequest(BaseModel):
custom_instructions: Optional[str] = None
class SourceMappingStats(BaseModel):
total_sources_mapped: int = 0
coverage_percentage: float = 0.0
average_relevance_score: float = 0.0
high_confidence_mappings: int = 0
class GroundingInsights(BaseModel):
confidence_analysis: Optional[Dict[str, Any]] = None
authority_analysis: Optional[Dict[str, Any]] = None
temporal_analysis: Optional[Dict[str, Any]] = None
content_relationships: Optional[Dict[str, Any]] = None
citation_insights: Optional[Dict[str, Any]] = None
search_intent_insights: Optional[Dict[str, Any]] = None
quality_indicators: Optional[Dict[str, Any]] = None
class OptimizationResults(BaseModel):
overall_quality_score: float = 0.0
improvements_made: List[str] = []
optimization_focus: str = "general optimization"
class ResearchCoverage(BaseModel):
sources_utilized: int = 0
content_gaps_identified: int = 0
competitive_advantages: List[str] = []
class BlogOutlineResponse(BaseModel):
success: bool = True
title_options: List[str] = []
outline: List[BlogOutlineSection] = []
# Additional metadata for enhanced UI
source_mapping_stats: Optional[SourceMappingStats] = None
grounding_insights: Optional[GroundingInsights] = None
optimization_results: Optional[OptimizationResults] = None
research_coverage: Optional[ResearchCoverage] = None
class BlogOutlineRefineRequest(BaseModel):