Spaces:
Sleeping
Sleeping
File size: 3,278 Bytes
f6b05db | 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 80 81 82 83 84 85 86 | """
API ์์ฒญ/์๋ต ๋ชจ๋ธ ์ ์ (Pydantic)
"""
from pydantic import BaseModel, Field
from typing import List, Dict, Optional, Any
class QueryRequest(BaseModel):
"""์ง๋ฌธ ์์ฒญ ๋ชจ๋ธ"""
question: str = Field(..., description="์ฌ์ฉ์ ์ง๋ฌธ")
top_k: int = Field(default=5, ge=1, le=20, description="๊ฒ์ํ ๋ฌธ์ ๊ฐ์")
enable_metacognition: bool = Field(default=True, description="๋ฉํ์ธ์ง ๊ณผ์ ํ์ฑํ ์ฌ๋ถ")
filter_metadata: Optional[Dict[str, str]] = Field(default=None, description="๋ฉํ๋ฐ์ดํฐ ํํฐ")
class Config:
json_schema_extra = {
"example": {
"question": "๊ธ์ต์๊ธฐ์ ์ฃผ์ ์์ธ์ ๋ฌด์์ธ๊ฐ์?",
"top_k": 5,
"enable_metacognition": True
}
}
class SourceDocument(BaseModel):
"""์ถ์ฒ ๋ฌธ์ ๋ชจ๋ธ"""
text: str = Field(..., description="๋ฌธ์ ํ
์คํธ")
source_filename: str = Field(..., description="์ถ์ฒ ํ์ผ๋ช
")
similarity: float = Field(..., description="์ ์ฌ๋ ์ ์")
metadata: Dict[str, Any] = Field(default_factory=dict, description="๋ฌธ์ ๋ฉํ๋ฐ์ดํฐ")
class MetaCognitionInfo(BaseModel):
"""๋ฉํ์ธ์ง ์ ๋ณด ๋ชจ๋ธ"""
thinking_history: List[Dict[str, Any]] = Field(..., description="์ฌ๊ณ ๊ณผ์ ํ์คํ ๋ฆฌ")
iterations: int = Field(..., description="๊ฐ์ ๋ฐ๋ณต ํ์")
class SearchStats(BaseModel):
"""๊ฒ์ ํต๊ณ ๋ชจ๋ธ"""
documents_found: int = Field(..., description="๋ฐ๊ฒฌ๋ ๋ฌธ์ ์")
top_similarity: float = Field(..., description="์ต๊ณ ์ ์ฌ๋ ์ ์")
class QueryResponse(BaseModel):
"""์ง๋ฌธ ์๋ต ๋ชจ๋ธ"""
question: str = Field(..., description="์๋ณธ ์ง๋ฌธ")
answer: str = Field(..., description="์์ฑ๋ ๋ต๋ณ")
sources: List[SourceDocument] = Field(..., description="์ฐธ๊ณ ํ ์ถ์ฒ ๋ฌธ์๋ค")
metacognition: Optional[MetaCognitionInfo] = Field(default=None, description="๋ฉํ์ธ์ง ์ ๋ณด")
search_stats: SearchStats = Field(..., description="๊ฒ์ ํต๊ณ")
class Config:
json_schema_extra = {
"example": {
"question": "๊ธ์ต์๊ธฐ์ ์ฃผ์ ์์ธ์ ๋ฌด์์ธ๊ฐ์?",
"answer": "2008๋
๊ธ์ต์๊ธฐ์ ์ฃผ์ ์์ธ์...",
"sources": [
{
"text": "๋
ผ๋ฌธ ๋ด์ฉ...",
"source_filename": "financial_crisis_2008.pdf",
"similarity": 0.89,
"metadata": {"author": "John Doe"}
}
],
"search_stats": {
"documents_found": 5,
"top_similarity": 0.89
}
}
}
class HealthResponse(BaseModel):
"""ํฌ์ค ์ฒดํฌ ์๋ต"""
status: str = Field(..., description="์๋ฒ ์ํ")
vector_store: Dict[str, Any] = Field(..., description="๋ฒกํฐ ์คํ ์ด ์ ๋ณด")
embedding_model: Dict[str, Any] = Field(..., description="์๋ฒ ๋ฉ ๋ชจ๋ธ ์ ๋ณด")
class ErrorResponse(BaseModel):
"""์๋ฌ ์๋ต"""
error: str = Field(..., description="์๋ฌ ๋ฉ์์ง")
detail: Optional[str] = Field(default=None, description="์์ธ ์ ๋ณด")
|