Spaces:
Running
Running
File size: 1,560 Bytes
cfc8e23 |
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 |
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
|