feat(models): add SubQuestionSources model and per-sub-q history fields
Add SubQuestionSources, SubQuestionResult, GeneratingSubquestionEvent Pydantic models for the new per-sub-question response format. Add chunks_retrieved_per_subq_count and chunks_filtered_per_subq_count optional fields to QueryHistoryRecord and QueryHistoryDetail for per-sub-question chunk count tracking. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
parent
666b603639
commit
40393d81f8
|
|
@ -22,6 +22,8 @@ class QueryHistoryRecord(BaseModel):
|
||||||
final_answer: Optional[str] = None
|
final_answer: Optional[str] = None
|
||||||
sources: Optional[str] = None
|
sources: Optional[str] = None
|
||||||
profile_used: Optional[str] = None
|
profile_used: Optional[str] = None
|
||||||
|
chunks_retrieved_per_subq_count: Optional[str] = None
|
||||||
|
chunks_filtered_per_subq_count: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
class QueryHistorySummary(BaseModel):
|
class QueryHistorySummary(BaseModel):
|
||||||
|
|
@ -53,6 +55,8 @@ class QueryHistoryDetail(BaseModel):
|
||||||
final_answer: Optional[str] = None
|
final_answer: Optional[str] = None
|
||||||
sources: Optional[str] = None
|
sources: Optional[str] = None
|
||||||
profile_used: Optional[str] = None
|
profile_used: Optional[str] = None
|
||||||
|
chunks_retrieved_per_subq_count: Optional[str] = None
|
||||||
|
chunks_filtered_per_subq_count: Optional[str] = None
|
||||||
created_at: str
|
created_at: str
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,23 @@ class QueryRequest(BaseModel):
|
||||||
question: str
|
question: str
|
||||||
|
|
||||||
|
|
||||||
|
class SubQuestionSources(BaseModel):
|
||||||
|
sub_question_index: int
|
||||||
|
sub_question_text: str
|
||||||
|
sources: List[SourceMetadata]
|
||||||
|
|
||||||
|
|
||||||
|
class SubQuestionResult(BaseModel):
|
||||||
|
sub_question_index: int
|
||||||
|
sub_question_text: str
|
||||||
|
answer_section: str
|
||||||
|
|
||||||
|
|
||||||
class QueryResponse(BaseModel):
|
class QueryResponse(BaseModel):
|
||||||
extracted_questions: List[str]
|
extracted_questions: List[str]
|
||||||
answer: str
|
answer: str
|
||||||
sources: List[SourceMetadata]
|
sub_question_sources: List[SubQuestionSources] = []
|
||||||
|
sources: List[SourceMetadata] = []
|
||||||
|
|
||||||
|
|
||||||
class DecomposedEvent(BaseModel):
|
class DecomposedEvent(BaseModel):
|
||||||
|
|
@ -28,10 +41,22 @@ class FilteringEvent(BaseModel):
|
||||||
phase: Literal["filtering"]
|
phase: Literal["filtering"]
|
||||||
|
|
||||||
|
|
||||||
|
class GeneratingEvent(BaseModel):
|
||||||
|
phase: Literal["generating"]
|
||||||
|
|
||||||
|
|
||||||
|
class GeneratingSubquestionEvent(BaseModel):
|
||||||
|
phase: Literal["generating_subquestion"]
|
||||||
|
sub_question_index: int
|
||||||
|
sub_question_text: str
|
||||||
|
answer_section: str = ""
|
||||||
|
|
||||||
|
|
||||||
class CompletedEvent(BaseModel):
|
class CompletedEvent(BaseModel):
|
||||||
phase: Literal["completed"]
|
phase: Literal["completed"]
|
||||||
answer: str
|
answer: str
|
||||||
sources: List[SourceMetadata]
|
sub_question_sources: List[SubQuestionSources] = []
|
||||||
|
sources: List[SourceMetadata] = []
|
||||||
|
|
||||||
|
|
||||||
class ErrorEvent(BaseModel):
|
class ErrorEvent(BaseModel):
|
||||||
|
|
@ -41,5 +66,6 @@ class ErrorEvent(BaseModel):
|
||||||
|
|
||||||
StreamingQueryEvent = Union[
|
StreamingQueryEvent = Union[
|
||||||
DecomposedEvent, RetrievingEvent, FilteringEvent,
|
DecomposedEvent, RetrievingEvent, FilteringEvent,
|
||||||
|
GeneratingEvent, GeneratingSubquestionEvent,
|
||||||
CompletedEvent, ErrorEvent
|
CompletedEvent, ErrorEvent
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue