File size: 1,787 Bytes
05f2374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from pydantic import BaseModel, Field, field_validator
from typing import List, Dict, Any

class ProgressMeters(BaseModel):
    technical_detail: int = Field(default=0, ge=0, le=100)
    artistic_style: int = Field(default=0, ge=0, le=100)
    composition: int = Field(default=0, ge=0, le=100)
    context: int = Field(default=0, ge=0, le=100)

class SubjectAnalysis(BaseModel):
    clarity: int = Field(default=0, ge=0, le=100)
    details_present: List[str] = []
    details_missing: List[str] = []

class StyleEvaluation(BaseModel):
    defined_elements: List[str] = []
    missing_elements: List[str] = []
    style_score: int = Field(default=0, ge=0, le=100)

class TechnicalAssessment(BaseModel):
    specified_elements: List[str] = []
    missing_elements: List[str] = []
    technical_score: int = Field(default=0, ge=0, le=100)

class CompositionReview(BaseModel):
    strengths: List[str] = []
    weaknesses: List[str] = []
    composition_score: int = Field(default=0, ge=0, le=100)

class InitialAnalysis(BaseModel):
    subject_analysis: SubjectAnalysis = SubjectAnalysis()
    style_evaluation: StyleEvaluation = StyleEvaluation()
    technical_assessment: TechnicalAssessment = TechnicalAssessment()
    composition_review: CompositionReview = CompositionReview()

class EnhancedVersion(BaseModel):
    focus_area: str = ""
    enhanced_prompt: str = ""
    improvement_score: int = Field(default=0, ge=0, le=100)

class PromptAnalysis(BaseModel):
    initial_analysis: InitialAnalysis = InitialAnalysis()
    enhanced_versions: List[EnhancedVersion] = []
    session_state: Dict[str, Any] = {}

    @field_validator('enhanced_versions', mode='before')
    def validate_enhanced_versions(cls, v):
        if not isinstance(v, list):
            return []
        return v