Spaces:
Running
Running
| from typing import Any | |
| from pydantic import BaseModel, Field | |
| class DocumentSearchRequest(BaseModel): | |
| query: str = Field(..., description="Search query") | |
| top_k: int = Field( | |
| default=10, ge=1, le=50, description="Number of documents to retrieve" | |
| ) | |
| class RetrievedDocument(BaseModel): | |
| content: str = Field(..., description="Document content") | |
| metadata: dict[str, Any] = Field( | |
| default_factory=dict, description="Document metadata" | |
| ) | |
| score: float | None = Field(None, description="Relevance score") | |
| chunk_id: int | None = Field(None, description="Chunk identifier") | |
| source_file: str | None = Field(None, description="Source filename") | |
| class DocumentSearchResponse(BaseModel): | |
| query: str | |
| documents: list[RetrievedDocument] | |
| total_results: int | |
| retrieval_method: str = "hybrid" | |
| class AnswerGenerationRequest(BaseModel): | |
| query: str = Field(..., description="Question to answer") | |
| top_k: int = Field( | |
| default=10, ge=1, le=50, description="Number of documents to use for context" | |
| ) | |
| include_sources: bool = Field( | |
| default=True, description="Include source documents in response" | |
| ) | |
| temperature: float = Field(default=0.1, ge=0, le=1, description="LLM temperature") | |
| max_tokens: int = Field( | |
| default=1000, ge=100, le=4000, description="Maximum tokens in response" | |
| ) | |
| class AnswerGenerationResponse(BaseModel): | |
| query: str | |
| answer: str | |
| sources: list[RetrievedDocument] | None = None | |
| retrieval_method: str | |
| documents_used: int | |