- Update MkDocs configuration with streamlined navigation and theme improvements - Revise README with comprehensive project introduction and key features - Add new documentation pages for NLP, custom prompts, and extras - Enhance index page with system architecture diagram and getting started guide - Improve overall documentation clarity and organization
263 lines
5.1 KiB
Markdown
263 lines
5.1 KiB
Markdown
# Custom Prompts Guide 🎯
|
|
|
|
## Overview
|
|
|
|
Custom prompts allow you to tailor the AI's behavior to your specific needs. I've designed this system to be flexible and powerful, enabling everything from simple commands to complex automation analysis.
|
|
|
|
## Prompt Structure 📝
|
|
|
|
Custom prompts are defined in YAML format:
|
|
|
|
```yaml
|
|
name: prompt_name
|
|
description: Brief description of what this prompt does
|
|
version: 1.0
|
|
author: your_name
|
|
tags: [automation, analysis, security]
|
|
models: [gpt-4, claude-2] # Compatible models
|
|
prompt: |
|
|
Your detailed prompt text here.
|
|
You can use {variables} for dynamic content.
|
|
|
|
Context: {context}
|
|
Data: {data}
|
|
|
|
variables:
|
|
- name: context
|
|
type: object
|
|
description: Contextual information
|
|
required: true
|
|
- name: data
|
|
type: array
|
|
description: Data to analyze
|
|
required: true
|
|
```
|
|
|
|
## Prompt Types 🎨
|
|
|
|
### 1. Analysis Prompts
|
|
```yaml
|
|
name: automation_analysis
|
|
description: Analyze Home Assistant automations
|
|
prompt: |
|
|
Analyze the following Home Assistant automation:
|
|
{automation_yaml}
|
|
|
|
Provide:
|
|
1. Security implications
|
|
2. Performance considerations
|
|
3. Potential improvements
|
|
4. Error handling suggestions
|
|
```
|
|
|
|
### 2. Command Prompts
|
|
```yaml
|
|
name: natural_command
|
|
description: Process natural language commands
|
|
prompt: |
|
|
Convert the following natural language command into Home Assistant actions:
|
|
"{command}"
|
|
|
|
Available devices: {devices}
|
|
Current state: {state}
|
|
```
|
|
|
|
### 3. Query Prompts
|
|
```yaml
|
|
name: state_query
|
|
description: Answer questions about system state
|
|
prompt: |
|
|
Answer the following question about the system state:
|
|
"{question}"
|
|
|
|
Current states:
|
|
{states}
|
|
|
|
Historical data:
|
|
{history}
|
|
```
|
|
|
|
## Variables and Context 🔄
|
|
|
|
### Built-in Variables
|
|
- `{timestamp}` - Current time
|
|
- `{user}` - Current user
|
|
- `{device_states}` - All device states
|
|
- `{last_events}` - Recent events
|
|
- `{system_info}` - System information
|
|
|
|
### Custom Variables
|
|
```yaml
|
|
variables:
|
|
- name: temperature_threshold
|
|
type: number
|
|
default: 25
|
|
description: Temperature threshold for alerts
|
|
|
|
- name: devices
|
|
type: array
|
|
required: true
|
|
description: List of relevant devices
|
|
```
|
|
|
|
## Creating Custom Prompts 🛠️
|
|
|
|
1. Create a new file in `prompts/custom/`:
|
|
```bash
|
|
bun run create-prompt my_prompt
|
|
```
|
|
|
|
2. Edit the generated template:
|
|
```yaml
|
|
name: my_custom_prompt
|
|
description: My custom prompt for specific tasks
|
|
version: 1.0
|
|
author: your_name
|
|
prompt: |
|
|
Your prompt text here
|
|
```
|
|
|
|
3. Test your prompt:
|
|
```bash
|
|
bun run test-prompt my_custom_prompt
|
|
```
|
|
|
|
## Advanced Features 🚀
|
|
|
|
### 1. Prompt Chaining
|
|
```yaml
|
|
name: complex_analysis
|
|
chain:
|
|
- automation_analysis
|
|
- security_check
|
|
- optimization_suggestions
|
|
```
|
|
|
|
### 2. Conditional Prompts
|
|
```yaml
|
|
name: adaptive_response
|
|
conditions:
|
|
- if: "temperature > 25"
|
|
use: high_temp_prompt
|
|
- if: "temperature < 10"
|
|
use: low_temp_prompt
|
|
- else: normal_temp_prompt
|
|
```
|
|
|
|
### 3. Dynamic Templates
|
|
```yaml
|
|
name: dynamic_template
|
|
template: |
|
|
{% if time.hour < 12 %}
|
|
Good morning! Here's the morning analysis:
|
|
{% else %}
|
|
Good evening! Here's the evening analysis:
|
|
{% endif %}
|
|
|
|
{analysis_content}
|
|
```
|
|
|
|
## Best Practices 🎯
|
|
|
|
1. **Prompt Design**
|
|
- Be specific and clear
|
|
- Include examples
|
|
- Use consistent formatting
|
|
- Consider edge cases
|
|
|
|
2. **Variable Usage**
|
|
- Define clear variable types
|
|
- Provide defaults when possible
|
|
- Document requirements
|
|
- Validate inputs
|
|
|
|
3. **Performance**
|
|
- Keep prompts concise
|
|
- Use appropriate models
|
|
- Cache when possible
|
|
- Consider token limits
|
|
|
|
4. **Maintenance**
|
|
- Version your prompts
|
|
- Document changes
|
|
- Test thoroughly
|
|
- Share improvements
|
|
|
|
## Examples 📚
|
|
|
|
### Home Security Analysis
|
|
```yaml
|
|
name: security_analysis
|
|
description: Analyze home security status
|
|
prompt: |
|
|
Analyze the current security status:
|
|
|
|
Doors: {door_states}
|
|
Windows: {window_states}
|
|
Cameras: {camera_states}
|
|
Motion Sensors: {motion_states}
|
|
|
|
Recent Events:
|
|
{recent_events}
|
|
|
|
Provide:
|
|
1. Current security status
|
|
2. Potential vulnerabilities
|
|
3. Recommended actions
|
|
4. Automation suggestions
|
|
```
|
|
|
|
### Energy Optimization
|
|
```yaml
|
|
name: energy_optimization
|
|
description: Analyze and optimize energy usage
|
|
prompt: |
|
|
Review energy consumption patterns:
|
|
|
|
Usage Data: {energy_data}
|
|
Device States: {device_states}
|
|
Weather: {weather_data}
|
|
|
|
Provide:
|
|
1. Usage patterns
|
|
2. Inefficiencies
|
|
3. Optimization suggestions
|
|
4. Estimated savings
|
|
```
|
|
|
|
## Troubleshooting 🔧
|
|
|
|
### Common Issues
|
|
|
|
1. **Prompt Not Working**
|
|
- Verify YAML syntax
|
|
- Check variable definitions
|
|
- Validate model compatibility
|
|
- Review token limits
|
|
|
|
2. **Poor Results**
|
|
- Improve prompt specificity
|
|
- Add more context
|
|
- Try different models
|
|
- Include examples
|
|
|
|
3. **Performance Issues**
|
|
- Optimize prompt length
|
|
- Review caching strategy
|
|
- Check rate limits
|
|
- Monitor token usage
|
|
|
|
## API Integration 🔌
|
|
|
|
```typescript
|
|
// Load a custom prompt
|
|
const prompt = await loadPrompt('my_custom_prompt');
|
|
|
|
// Execute with variables
|
|
const result = await executePrompt(prompt, {
|
|
context: currentContext,
|
|
data: analysisData
|
|
});
|
|
```
|
|
|
|
See [API Documentation](api.md) for more details. |