## Agents Two agentic flows are provided by haiku.rag: - Simple QA Agent — a focused question answering agent - Research Multi‑Agent — a multi‑step, analyzable research workflow ### Simple QA Agent The simple QA agent answers a single question using the knowledge base. It retrieves relevant chunks, optionally expands context around them, and asks the model to answer strictly based on that context. Key points: - Uses a single `search_documents` tool to fetch relevant chunks - Can be run with or without inline citations in the prompt - Returns a plain string answer Python usage: ```python from haiku.rag.client import HaikuRAG from haiku.rag.qa.agent import QuestionAnswerAgent client = HaikuRAG(path_to_db) # Choose a provider and model (see Configuration for env defaults) agent = QuestionAnswerAgent( client=client, provider="openai", # or "ollama", "vllm", etc. model="gpt-4o-mini", use_citations=False, # set True to bias prompt towards citing sources ) answer = await agent.answer("What is climate change?") print(answer) ``` ### Research Multi‑Agent The research workflow coordinates specialized agents to plan, search, analyze, and synthesize a comprehensive answer. It is designed for deeper questions that benefit from iterative investigation and structured reporting. Components: - Orchestrator: Plans, coordinates, and loops until confidence is sufficient - Presearch Survey: Runs a quick KB scan and summarizes relevant chunk text to ground the initial plan (plain-text summary; no URIs or scores) - Search Specialist: Performs targeted RAG searches and answers sub‑questions - Analysis & Evaluation: Extracts insights, identifies gaps, proposes new questions - Synthesis: Produces a final structured research report Primary models: - `ResearchPlan` — produced by the orchestrator when planning - `main_question: str` - `sub_questions: list[str]` (standalone, self‑contained queries) - `SearchAnswer` — produced by the search specialist for each sub‑question - `query: str` — the executed sub‑question - `answer: str` — the agent’s answer grounded in retrieved context - `context: list[str]` — minimal verbatim snippets used for the answer - `sources: list[str]` — document URIs aligned with `context` - `EvaluationResult` — insights, new standalone questions, sufficiency & confidence - `ResearchReport` — the final synthesized report Python usage: ```python from haiku.rag.client import HaikuRAG from haiku.rag.research import ResearchOrchestrator client = HaikuRAG(path_to_db) orchestrator = ResearchOrchestrator(provider="openai", model="gpt-4o-mini") report = await orchestrator.conduct_research( question="What are the main drivers and recent trends of global temperature anomalies since 1990?", client=client, max_iterations=2, confidence_threshold=0.8, verbose=False, ) print(report.title) print(report.executive_summary) ```