Spaces:
Sleeping
Sleeping
| """ | |
| 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="์์ธ ์ ๋ณด") | |