File size: 831 Bytes
fed7eb0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from pydantic import BaseModel, Field
from typing import List, Optional, Literal

Mode = Literal["plan", "summary", "patch-diff"]

class PlanConstraints(BaseModel):
    risk: Optional[str] = "low"
    max_steps: int = Field(default=3, ge=1, le=10)

class PlanContext(BaseModel):
    app_id: str
    symptoms: List[str] = Field(default_factory=list)
    lkg: Optional[str] = None

class PlanRequest(BaseModel):
    mode: Mode = "plan"
    context: PlanContext
    constraints: PlanConstraints = Field(default_factory=PlanConstraints)

class PlanResponse(BaseModel):
    plan_id: str
    steps: List[str]
    risk: str
    explanation: str

class ChatRequest(BaseModel):
    question: str = Field(..., min_length=3, max_length=512)

class ChatResponse(BaseModel):
    answer: str
    sources: List[str] = Field(default_factory=list)