File size: 1,636 Bytes
01d5a5d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
DTOs for advanced chat mode
"""

from typing import Optional, List, Any

from pydantic import BaseModel, Field


class AdvancedChatRequest(BaseModel):
    """Request model for advanced chat mode"""
    requirement: str = Field(..., description="User's rough requirement")
    max_iterations: int = Field(default=3, description="Maximum number of refinement iterations")
    temperature: float = Field(default=0.7, description="Temperature for model generation")
    enable_l0_retrieval: bool = Field(default=True, description="Whether to enable L0 knowledge retrieval")
    enable_l1_retrieval: bool = Field(default=True, description="Whether to enable L1 knowledge retrieval")


class ValidationResult(BaseModel):
    """Model for solution validation result"""
    is_valid: bool = Field(..., description="Whether the solution meets requirements")
    feedback: Optional[str] = Field(None, description="Feedback for improvement if invalid")


class AdvancedChatResponse(BaseModel):
    """Response model for advanced chat mode"""
    enhanced_requirement: str = Field(..., description="Enhanced requirement with context")
    solution: str = Field(..., description="Generated solution")
    validation_history: List[ValidationResult] = Field(default=[], description="History of validation results")
    final_format: Optional[str] = Field(None, description="Final formatted solution if valid")
    final_response: Optional[Any] = Field(None, description="Final response, can be streaming or complete response")

    class Config:
        """Pydantic model configuration"""
        arbitrary_types_allowed = True  # permit any type