ALwrity AI Blog Writer - Added Google Grounding UI Implementation
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user