Spaces:
Runtime error
Runtime error
File size: 3,876 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
from typing import List, Optional, Dict, Any
from pydantic import BaseModel, Field, ConfigDict
class DirectiveImpactAssessment(BaseModel):
feasibility: str = Field(default="Not assessed")
integration_approach: str = Field(default="Not determined")
potential_conflicts: List[str] = Field(default_factory=lambda: ["None identified"])
resolution_strategy: str = Field(default="Not required")
class AnalysisScore(BaseModel):
score: int = Field(default=0, ge=0, le=100)
strengths: List[str] = Field(default_factory=lambda: ["Not analyzed"])
weaknesses: List[str] = Field(default_factory=lambda: ["Not analyzed"])
class ImprovementAxis(BaseModel):
axis_name: str = Field(default="Default")
focus_area: str = Field(default="Not specified")
version: int = Field(default=1)
score: int = Field(default=0, ge=0, le=100)
current_state: str = Field(default="Not evaluated")
directive_alignment: str = Field(default="Not aligned")
recommended_additions: List[str] = Field(default_factory=lambda: ["No recommendations"])
expected_impact: str = Field(default="Not determined")
technical_considerations: List[str] = Field(default_factory=lambda: ["None specified"])
enhanced_prompt: str = Field(default="")
expected_improvements: List[str] = Field(default_factory=lambda: ["None specified"])
class TechnicalRecommendations(BaseModel):
style_keywords: List[str] = Field(default_factory=lambda: ["None"])
composition_tips: List[str] = Field(default_factory=lambda: ["None"])
negative_prompt_suggestions: List[str] = Field(default_factory=lambda: ["None"])
directive_specific_adjustments: List[str] = Field(default_factory=lambda: ["None"])
class InitialAnalysis(BaseModel):
initial_prompt: str
user_directive: str = Field(default="")
directive_impact_assessment: DirectiveImpactAssessment = Field(default_factory=DirectiveImpactAssessment)
subject_analysis: AnalysisScore = Field(default_factory=AnalysisScore)
style_evaluation: AnalysisScore = Field(default_factory=AnalysisScore)
technical_assessment: AnalysisScore = Field(default_factory=AnalysisScore)
composition_review: AnalysisScore = Field(default_factory=AnalysisScore)
context_evaluation: AnalysisScore = Field(default_factory=AnalysisScore)
mood_assessment: AnalysisScore = Field(default_factory=AnalysisScore)
class APIResponse(BaseModel):
model_config = ConfigDict(populate_by_name=True)
initial_analysis: InitialAnalysis
improvement_axes: List[ImprovementAxis] = Field(default_factory=list)
technical_recommendations: TechnicalRecommendations = Field(default_factory=TechnicalRecommendations)
def create_error_response(user_prompt: str, user_directive: str = "") -> Dict[str, Any]:
"""Create a standardized error response that complies with APIResponse model"""
return APIResponse(
initial_analysis=InitialAnalysis(
initial_prompt=user_prompt,
user_directive=user_directive
),
improvement_axes=[
ImprovementAxis(
axis_name="Error",
focus_area="Error occurred",
version=1,
score=0,
current_state="Failed",
directive_alignment="Failed to assess",
recommended_additions=["Error processing prompt"],
expected_impact="None",
technical_considerations=["Error occurred"],
enhanced_prompt=user_prompt,
expected_improvements=["Error processing prompt"]
)
],
technical_recommendations=TechnicalRecommendations(
style_keywords=["Error"],
composition_tips=["Error"],
negative_prompt_suggestions=["Error"],
directive_specific_adjustments=["Error"]
)
).model_dump() |