legco_ai_assistant/backend/app/models/highlight.py

39 lines
943 B
Python

from typing import Literal
from pydantic import BaseModel, Field
class ChunkHighlightTarget(BaseModel):
document_id: str
chunk_index: int
sub_question_text: str
sub_question_index: int
class HighlightBatchRequest(BaseModel):
targets: list[ChunkHighlightTarget]
class RelevantSentence(BaseModel):
sentence_index: int = Field(description="0-based index of the relevant sentence")
reason: str = Field(
description="Brief explanation of why this sentence is relevant",
max_length=80,
)
class ChunkHighlights(BaseModel):
document_id: str
chunk_index: int
relevant_sentences: list[RelevantSentence] = Field(default_factory=list)
class HighlightBatchResult(BaseModel):
results: list[ChunkHighlights]
class HighlightBatchResponse(BaseModel):
status: Literal["completed", "partial", "failed"]
cached_count: int = 0
errors: list[str] = Field(default_factory=list)