Encyclopedia / models.py
baconnier's picture
Update models.py
6822e1b verified
from typing import List, Optional
from pydantic import BaseModel, Field, conint, confloat
class PotentialValue(BaseModel):
"""A potential value within an exploration axis"""
value: str = Field(..., description="The specific value within the axis")
relevance_score: confloat(ge=0, le=100) = Field(..., description="Relevance score from 0-100")
contextual_rationale: str = Field(..., description="Explanation of the value's relevance")
class InnovativeValue(BaseModel):
"""An innovative value within an emergent axis"""
value: str = Field(..., description="The innovative value within the emergent axis")
innovation_score: confloat(ge=0, le=100) = Field(..., description="Innovation score from 0-100")
discovery_potential: str = Field(..., description="Description of potential discoveries")
class StandardAxis(BaseModel):
"""A standard exploration axis"""
name: str = Field(..., description="Name of the standard axis")
current_values: List[str] = Field(default_factory=list, description="Currently selected values")
potential_values: List[PotentialValue] = Field(..., description="Potential values for exploration")
axis_constraints: List[str] = Field(..., description="Constraints for this axis")
class EmergentAxis(BaseModel):
"""An emergent exploration axis"""
name: str = Field(..., description="Name of the emergent axis")
parent_axis: str = Field(..., description="Parent axis from which this emerged")
innovative_values: List[InnovativeValue] = Field(..., description="Innovative values for exploration")
class ZoomTrajectory(BaseModel):
"""A trajectory for zooming into specific aspects"""
target_axis: str = Field(..., description="Target axis for zooming")
zoom_value: str = Field(..., description="Specific value to zoom into")
unlocked_dimensions: List[str] = Field(..., description="New dimensions unlocked by zooming")
depth_increment: conint(ge=1, le=3) = Field(..., description="Depth increase (1-3)")
class DezoomPathway(BaseModel):
"""A pathway for zooming out to broader context"""
removal_tuple: dict = Field(..., description="Axis-value pair to remove")
contextual_expansion: str = Field(..., description="Description of broader context")
new_possibility_vectors: List[str] = Field(..., description="New possibilities unlocked")
class ExplorationSummary(BaseModel):
"""Summary of the current exploration state"""
current_context: str = Field(..., description="Current exploration context")
complexity_level: conint(ge=0, le=10) = Field(..., description="Complexity level (0-10)")
class KnowledgeAxes(BaseModel):
"""Collection of exploration axes"""
standard_axes: List[StandardAxis] = Field(..., description="Standard exploration axes")
emergent_axes: List[EmergentAxis] = Field(default_factory=list, description="Emergent exploration axes")
class NavigationStrategies(BaseModel):
"""Available navigation strategies"""
zoom_trajectories: List[ZoomTrajectory] = Field(..., description="Paths for deeper exploration")
dezoom_pathways: List[DezoomPathway] = Field(..., description="Paths for broader exploration")
class MetaInsights(BaseModel):
"""Meta-level insights about the exploration"""
exploration_efficiency: confloat(ge=0, le=100) = Field(..., description="Overall efficiency score")
knowledge_gap_indicators: List[str] = Field(..., description="Identified knowledge gaps")
recommended_next_steps: List[str] = Field(..., description="Recommended next steps")
class ExplorationResponse(BaseModel):
"""Complete exploration response structure"""
exploration_summary: ExplorationSummary = Field(..., description="Summary of exploration state")
knowledge_axes: KnowledgeAxes = Field(..., description="Exploration axes")
navigation_strategies: NavigationStrategies = Field(..., description="Navigation options")
meta_insights: MetaInsights = Field(..., description="Meta-level insights")