aivre / app /api /schemas.py
Vedang Barhate
chore: copied from assist repo
cfc8e23
raw
history blame
1.56 kB
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