File size: 1,575 Bytes
c895815 c61c167 c895815 c61c167 c895815 a708b2e c895815 c61c167 7f9a28e | 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 | from enum import Enum
from typing import List, Optional
from pydantic import BaseModel, Field
class CodeTaskType(str, Enum):
GENERATE = "generate"
FIX = "fix"
EXPLAIN = "explain"
REFACTOR = "refactor"
REVIEW = "review"
UNKNOWN = "unknown"
class SourceType(str, Enum):
STACKOVERFLOW = "stackoverflow"
GITHUB = "github"
MODEL = "model"
class RetrievedEvidence(BaseModel):
source_type: SourceType
title: str = Field(..., min_length=1)
snippet: str = Field(..., min_length=1)
url: Optional[str] = None
score: Optional[float] = None
class ResponseMeta(BaseModel):
used_model: str = Field(..., min_length=1)
fallback_used: bool = False
retrieval_used: bool = False
source_count: int = 0
processing_time_ms: Optional[int] = None
class CodeXRequest(BaseModel):
message: str = Field(..., min_length=1)
session_id: Optional[str] = None
mode: Optional[CodeTaskType] = None
language: Optional[str] = None
code: Optional[str] = None
error_message: Optional[str] = None
framework: Optional[str] = None
file_name: Optional[str] = None
previous_context: Optional[str] = None
use_retrieval: bool = True
class CodeXResponse(BaseModel):
answer: str = Field(..., min_length=1)
task_type: CodeTaskType
code_output: Optional[str] = None
explanation: Optional[str] = None
warnings: List[str] = Field(default_factory=list)
sources: List[RetrievedEvidence] = Field(default_factory=list)
needs_clarification: bool = False
meta: ResponseMeta |