138 lines
4.7 KiB
Markdown
138 lines
4.7 KiB
Markdown
# Prompt Customization
|
|
|
|
Customize the prompts used by haiku.rag's AI agents to better match your domain and use case.
|
|
|
|
## Configuration
|
|
|
|
```yaml
|
|
prompts:
|
|
# Domain context prepended to all agent prompts
|
|
domain_preamble: |
|
|
This knowledge base contains technical documentation for the Helios solar panel
|
|
system, including installation manuals, maintenance procedures, and safety guidelines.
|
|
Questions about "the system" or unqualified specs refer to the Helios panel.
|
|
|
|
# Full replacement for QA agent prompt (optional)
|
|
qa: null
|
|
|
|
# Full replacement for research synthesis prompt (optional)
|
|
synthesis: null
|
|
|
|
# VLM prompt for image description during conversion (optional)
|
|
picture_description: null # Uses default prompt
|
|
```
|
|
|
|
## Domain Preamble
|
|
|
|
The `domain_preamble` field provides **domain context** that is prepended to all agent prompts — the main agent, skill subagents, and internal agents (QA, research planning, search, evaluation, and synthesis). Use this to:
|
|
|
|
- Describe what the knowledge base contains
|
|
- Clarify domain-specific terminology
|
|
- Provide context that helps agents interpret ambiguous queries
|
|
|
|
**Important:** `domain_preamble` is for domain context, not behavioral instructions. Descriptions of subject matter, terminology, and content scope belong here. Behavioral guidance (tone, response style, formatting rules) belongs in the agent's system prompt or custom `prompts.qa`.
|
|
|
|
**Example:**
|
|
|
|
```yaml
|
|
prompts:
|
|
domain_preamble: |
|
|
This knowledge base contains product documentation, API references,
|
|
and troubleshooting guides for Acme Corp's cloud platform.
|
|
"Deployment" refers to Acme's managed deployment service, not general CI/CD.
|
|
```
|
|
|
|
## 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 ordered by relevance (rank 1 = most relevant)
|
|
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..."
|
|
```
|
|
|
|
## Picture Description Prompt
|
|
|
|
Customize the prompt used when generating VLM descriptions for embedded images during document conversion. This prompt is sent to the configured Vision Language Model for each image.
|
|
|
|
**Default prompt:**
|
|
|
|
```
|
|
Describe this image for a blind user. State the image type (screenshot, chart, photo, etc.),
|
|
what it depicts, any visible text, and key visual details. Be concise and accurate.
|
|
```
|
|
|
|
**Custom example:**
|
|
|
|
```yaml
|
|
prompts:
|
|
picture_description: |
|
|
Describe this image for a document search system.
|
|
Focus on: image type, main content, any text, key visual elements.
|
|
Be concise and factual.
|
|
```
|
|
|
|
The prompt is used when `processing.pictures` is `"description"`. See [Picture Handling](processing.md#picture-handling) for full configuration.
|
|
|
|
## Programmatic Configuration
|
|
|
|
```python
|
|
from haiku.rag.config import AppConfig
|
|
from haiku.rag.config.models import PromptsConfig
|
|
|
|
config = AppConfig(
|
|
prompts=PromptsConfig(
|
|
domain_preamble="This knowledge base contains Acme Corp product documentation and API references.",
|
|
qa=None, # Use default QA prompt
|
|
synthesis=None, # Use default synthesis prompt
|
|
picture_description="Describe this image for search indexing.",
|
|
)
|
|
)
|
|
```
|