haiku.rag/haiku_rag_slim/haiku/rag/qa/deep/dependencies.py
2025-11-06 11:02:32 +02:00

29 lines
1,005 B
Python

from pydantic import BaseModel, Field
from rich.console import Console
from haiku.rag.client import HaikuRAG
from haiku.rag.graph_common.models import SearchAnswer
class DeepQAContext(BaseModel):
original_question: str = Field(description="The original question")
sub_questions: list[str] = Field(
default_factory=list, description="Decomposed sub-questions"
)
qa_responses: list[SearchAnswer] = Field(
default_factory=list, description="QA pairs collected during answering"
)
use_citations: bool = Field(
default=False, description="Whether to include citations in the answer"
)
def add_qa_response(self, qa: SearchAnswer) -> None:
self.qa_responses.append(qa)
class DeepQADependencies(BaseModel):
model_config = {"arbitrary_types_allowed": True}
client: HaikuRAG = Field(description="RAG client for document operations")
context: DeepQAContext = Field(description="Shared QA context")
console: Console | None = None