# Prompt Customization Customize the prompts used by haiku.rag's AI agents to better match your domain and use case. ## Configuration ```yaml prompts: # Prepended to all agent prompts domain_preamble: | You are answering questions about our internal documentation. Technical terms like "time travel" refer to database versioning features. # Full replacement for QA agent prompt (optional) qa: null # Full replacement for research synthesis prompt (optional) synthesis: null ``` ## Domain Preamble The `domain_preamble` field is prepended to **all** agent prompts (QA, research planning, search, evaluation, and synthesis). Use this to: - Add domain context that clarifies terminology - Set the tone or personality of responses - Specify what the knowledge base contains **Example:** ```yaml prompts: domain_preamble: | You are a technical support assistant for Acme Corp products. The knowledge base contains product documentation, FAQs, and troubleshooting guides. Always be helpful and professional. ``` ## Custom QA Prompt Replace the default QA agent prompt entirely by setting `prompts.qa`. The prompt should instruct the agent how to: 1. Use the `search_documents` tool to find relevant content 2. Interpret search results with scores and metadata 3. Cite sources using chunk IDs 4. Handle insufficient information **Example:** ```yaml prompts: qa: | You are a concise technical assistant. Answer questions using only the knowledge base. Process: 1. Search for relevant documents using the search_documents tool 2. Review results and their relevance scores 3. Provide a brief, direct answer based on retrieved content Guidelines: - Use only information from search results - Include chunk IDs in cited_chunks for sources you use - If information is insufficient, say so clearly - Be concise - avoid unnecessary elaboration ``` ## Custom Synthesis Prompt Replace the research report synthesis prompt by setting `prompts.synthesis`. This controls how the multi-agent research workflow generates its final report. The prompt should produce a `ResearchReport` with: `title`, `executive_summary`, `main_findings`, `conclusions`, `recommendations`, `limitations`, and `sources_summary`. **Example:** ```yaml prompts: synthesis: | Generate a research report based on the gathered evidence. Output format: - title: 5-12 word title - executive_summary: 3-5 sentence overview - main_findings: 4-8 bullet points of key findings - conclusions: 2-4 bullet points - recommendations: 2-5 actionable recommendations - limitations: 1-3 limitations or gaps - sources_summary: Brief description of sources used Guidelines: - Base all content strictly on collected evidence - Be specific and objective - Avoid meta-commentary like "This report covers..." ``` ## Programmatic Configuration ```python from haiku.rag.config import AppConfig from haiku.rag.config.models import PromptsConfig config = AppConfig( prompts=PromptsConfig( domain_preamble="You are answering questions about our product documentation.", qa=None, # Use default QA prompt synthesis=None, # Use default synthesis prompt ) ) ```