haiku.rag/haiku_rag_slim/haiku/rag/qa/__init__.py
2025-12-26 13:34:51 +02:00

35 lines
1.1 KiB
Python

from haiku.rag.client import HaikuRAG
from haiku.rag.config import AppConfig, Config
from haiku.rag.qa.agent import QuestionAnswerAgent
from haiku.rag.qa.prompts import QA_SYSTEM_PROMPT
from haiku.rag.utils import build_prompt
def get_qa_agent(
client: HaikuRAG,
config: AppConfig = Config,
system_prompt: str | None = None,
) -> QuestionAnswerAgent:
"""Factory function to get a QA agent based on the configuration.
Args:
client: HaikuRAG client instance.
config: Configuration to use. Defaults to global Config.
system_prompt: Optional custom system prompt (overrides config).
Returns:
A configured QuestionAnswerAgent instance.
"""
# Determine the base prompt: explicit > config > default
if system_prompt is None:
system_prompt = config.prompts.qa or QA_SYSTEM_PROMPT
# Prepend system_context if configured
system_prompt = build_prompt(system_prompt, config)
return QuestionAnswerAgent(
client=client,
model_config=config.qa.model,
config=config,
system_prompt=system_prompt,
)