user story
This commit is contained in:
474
docs/design/ai-prompt-engineering.md
Normal file
474
docs/design/ai-prompt-engineering.md
Normal file
@@ -0,0 +1,474 @@
|
||||
# AI Prompt Engineering for Rule Generation
|
||||
|
||||
## Overview
|
||||
|
||||
This document outlines the prompt engineering strategy for generating high-quality email organization rules using AI. The focus is on creating effective prompts that consistently produce relevant, specific, and actionable rules for the Email Organizer application.
|
||||
|
||||
## Prompt Design Principles
|
||||
|
||||
### Core Principles
|
||||
|
||||
#### 1. Clarity and Specificity
|
||||
- **Clear Instructions**: Use unambiguous language and specific requirements
|
||||
- **Context Awareness**: Provide relevant context about the folder and its purpose
|
||||
- **Action-Oriented**: Focus on actions that can be taken with email rules
|
||||
- **Concise**: Keep prompts focused and to the point
|
||||
|
||||
#### 2. Consistency
|
||||
- **Standard Format**: Use consistent prompt structure across all requests
|
||||
- **Expected Output**: Clearly define the expected output format
|
||||
- **Quality Standards**: Establish consistent quality expectations
|
||||
- **Response Style**: Maintain consistent response style and tone
|
||||
|
||||
#### 3. Effectiveness
|
||||
- **Relevance**: Ensure generated rules are relevant to the folder purpose
|
||||
- **Specificity**: Generate rules with specific criteria rather than general ones
|
||||
- **Actionability**: Create rules that can be directly applied to email processing
|
||||
- **Quality**: Produce rules that meet the application's quality standards
|
||||
|
||||
## Prompt Structure
|
||||
|
||||
### Basic Prompt Template
|
||||
|
||||
```
|
||||
You are an expert email organizer assistant with extensive experience in email management and automation. Your task is to generate a clear, concise, and effective natural language rule for organizing emails into a specific folder.
|
||||
|
||||
**Folder Context:**
|
||||
- Folder Name: "{folder_name}"
|
||||
- Folder Type: {folder_type}
|
||||
- Purpose: {folder_purpose}
|
||||
|
||||
**User Context:**
|
||||
{user_context}
|
||||
|
||||
**Requirements for the Rule:**
|
||||
1. **Length**: The rule must be between 10-200 characters (including spaces)
|
||||
2. **Language**: Use natural, conversational English that's easy to understand
|
||||
3. **Specificity**: Be specific about what emails should go in this folder
|
||||
4. **Action**: Use action-oriented language (move, put, organize, file, sort)
|
||||
5. **Relevance**: Focus on email-specific criteria (sender, subject, content, attachments)
|
||||
6. **Clarity**: Ensure the rule is unambiguous and directly actionable
|
||||
|
||||
**Generated Rule:**
|
||||
```
|
||||
|
||||
### Prompt Components
|
||||
|
||||
#### 1. System Role Definition
|
||||
```
|
||||
You are an expert email organizer assistant with extensive experience in email management and automation.
|
||||
```
|
||||
- **Purpose**: Establishes the AI's role and expertise level
|
||||
- **Benefits**: Sets appropriate expectations and response style
|
||||
- **Variations**: Can be adjusted based on specific needs
|
||||
|
||||
#### 2. Task Description
|
||||
```
|
||||
Your task is to generate a clear, concise, and effective natural language rule for organizing emails into a specific folder.
|
||||
```
|
||||
- **Purpose**: Clearly defines what the AI should do
|
||||
- **Benefits**: Ensures the AI understands the specific task
|
||||
- **Key Elements**: Clear, concise, effective, natural language, organizing emails
|
||||
|
||||
#### 3. Context Information
|
||||
```
|
||||
**Folder Context:**
|
||||
- Folder Name: "{folder_name}"
|
||||
- Folder Type: {folder_type}
|
||||
- Purpose: {folder_purpose}
|
||||
|
||||
**User Context:**
|
||||
{user_context}
|
||||
```
|
||||
- **Purpose**: Provides relevant context for rule generation
|
||||
- **Benefits**: Helps AI generate more relevant and specific rules
|
||||
- **Key Elements**: Folder name, type, purpose, and user context
|
||||
|
||||
#### 4. Requirements and Constraints
|
||||
```
|
||||
**Requirements for the Rule:**
|
||||
1. **Length**: The rule must be between 10-200 characters (including spaces)
|
||||
2. **Language**: Use natural, conversational English that's easy to understand
|
||||
3. **Specificity**: Be specific about what emails should go in this folder
|
||||
4. **Action**: Use action-oriented language (move, put, organize, file, sort)
|
||||
5. **Relevance**: Focus on email-specific criteria (sender, subject, content, attachments)
|
||||
6. **Clarity**: Ensure the rule is unambiguous and directly actionable
|
||||
```
|
||||
- **Purpose**: Sets clear expectations and constraints
|
||||
- **Benefits**: Ensures generated rules meet application requirements
|
||||
- **Key Elements**: Length, language, specificity, action, relevance, clarity
|
||||
|
||||
#### 5. Output Format
|
||||
```
|
||||
**Generated Rule:**
|
||||
```
|
||||
- **Purpose**: Indicates where the generated rule should be placed
|
||||
- **Benefits**: Provides clear structure for the AI's response
|
||||
- **Format**: Simple and direct, allowing the AI to focus on content
|
||||
|
||||
## Prompt Variations
|
||||
|
||||
### Single Rule Generation Prompt
|
||||
|
||||
```
|
||||
You are an expert email organizer assistant with extensive experience in email management and automation. Your task is to generate a clear, concise, and effective natural language rule for organizing emails into a specific folder.
|
||||
|
||||
**Folder Context:**
|
||||
- Folder Name: "{folder_name}"
|
||||
- Folder Type: {folder_type}
|
||||
- Purpose: {folder_purpose}
|
||||
|
||||
**User Context:**
|
||||
{user_context}
|
||||
|
||||
**Requirements for the Rule:**
|
||||
1. **Length**: The rule must be between 10-200 characters (including spaces)
|
||||
2. **Language**: Use natural, conversational English that's easy to understand
|
||||
3. **Specificity**: Be specific about what emails should go in this folder
|
||||
4. **Action**: Use action-oriented language (move, put, organize, file, sort)
|
||||
5. **Relevance**: Focus on email-specific criteria (sender, subject, content, attachments)
|
||||
6. **Clarity**: Ensure the rule is unambiguous and directly actionable
|
||||
|
||||
**Generated Rule:**
|
||||
```
|
||||
|
||||
### Multiple Rules Generation Prompt
|
||||
|
||||
```
|
||||
You are an expert email organizer assistant tasked with generating multiple, diverse rule options for organizing emails into a specific folder. Each rule should offer a different approach and perspective.
|
||||
|
||||
**Folder Context:**
|
||||
- **Folder Name**: "{folder_name}"
|
||||
- **Folder Type**: {folder_type}
|
||||
- **Purpose**: {folder_purpose}
|
||||
- **User Context**: {user_context}
|
||||
|
||||
**Task Requirements:**
|
||||
Generate 5 distinctly different rule options that cover various approaches to email organization for this folder.
|
||||
|
||||
**Response Format:**
|
||||
Provide exactly 5 rules numbered 1-5, each on a new line:
|
||||
|
||||
1. [First rule option]
|
||||
2. [Second rule option]
|
||||
3. [Third rule option]
|
||||
4. [Fourth rule option]
|
||||
5. [Fifth rule option]
|
||||
|
||||
**Generated Rules:**
|
||||
```
|
||||
|
||||
### Context-Specific Prompts
|
||||
|
||||
#### For Tidy Folders
|
||||
```
|
||||
You are an expert email organizer assistant with extensive experience in email management and automation. Your task is to generate a clear, concise, and effective natural language rule for identifying emails that need to be processed and organized.
|
||||
|
||||
**Folder Context:**
|
||||
- Folder Name: "{folder_name}"
|
||||
- Folder Type: tidy
|
||||
- Purpose: This folder contains emails that need to be processed and organized
|
||||
|
||||
**User Context:**
|
||||
{user_context}
|
||||
|
||||
**Requirements for the Rule:**
|
||||
1. **Length**: The rule must be between 10-200 characters (including spaces)
|
||||
2. **Language**: Use natural, conversational English that's easy to understand
|
||||
3. **Specificity**: Be specific about what emails should be processed from this folder
|
||||
4. **Action**: Use action-oriented language (identify, select, process, organize)
|
||||
5. **Relevance**: Focus on email-specific criteria (sender, subject, content, attachments)
|
||||
6. **Clarity**: Ensure the rule is unambiguous and directly actionable
|
||||
|
||||
**Generated Rule:**
|
||||
```
|
||||
|
||||
#### For Destination Folders
|
||||
```
|
||||
You are an expert email organizer assistant with extensive experience in email management and automation. Your task is to generate a clear, concise, and effective natural language rule for organizing emails into this destination folder.
|
||||
|
||||
**Folder Context:**
|
||||
- Folder Name: "{folder_name}"
|
||||
- Folder Type: destination
|
||||
- Purpose: This folder is a target for organized emails based on specific criteria
|
||||
|
||||
**User Context:**
|
||||
{user_context}
|
||||
|
||||
**Requirements for the Rule:**
|
||||
1. **Length**: The rule must be between 10-200 characters (including spaces)
|
||||
2. **Language**: Use natural, conversational English that's easy to understand
|
||||
3. **Specificity**: Be specific about what emails should be moved to this folder
|
||||
4. **Action**: Use action-oriented language (move, put, organize, file, sort)
|
||||
5. **Relevance**: Focus on email-specific criteria (sender, subject, content, attachments)
|
||||
6. **Clarity**: Ensure the rule is unambiguous and directly actionable
|
||||
|
||||
**Generated Rule:**
|
||||
```
|
||||
|
||||
## Prompt Optimization Strategies
|
||||
|
||||
### 1. Context Enhancement
|
||||
|
||||
#### Keyword Extraction
|
||||
- **Purpose**: Identify relevant keywords from folder names
|
||||
- **Implementation**: Analyze folder names for email-related terms
|
||||
- **Benefits**: Helps AI understand the folder's purpose better
|
||||
|
||||
#### Folder Type Awareness
|
||||
- **Purpose**: Tailor prompts based on folder type
|
||||
- **Implementation**: Use different prompts for tidy, destination, and ignore folders
|
||||
- **Benefits**: Generates more relevant rules for each folder type
|
||||
|
||||
#### User Pattern Learning
|
||||
- **Purpose**: Incorporate user's historical preferences
|
||||
- **Implementation**: Track user's accepted rule patterns
|
||||
- **Benefits**: Generates rules that match user's style and preferences
|
||||
|
||||
### 2. Response Quality Enhancement
|
||||
|
||||
#### Quality Guidelines
|
||||
- **Purpose**: Improve rule quality through specific guidelines
|
||||
- **Implementation**: Include quality criteria in prompts
|
||||
- **Benefits**: Generates higher-quality, more useful rules
|
||||
|
||||
#### Examples and Patterns
|
||||
- **Purpose**: Provide reference points for AI
|
||||
- **Implementation**: Include examples of good rules
|
||||
- **Benefits**: Helps AI understand expected response patterns
|
||||
|
||||
#### Constraint Optimization
|
||||
- **Purpose**: Balance constraints with flexibility
|
||||
- **Implementation**: Adjust constraints based on folder type
|
||||
- **Benefits**: Generates rules that are both specific and flexible
|
||||
|
||||
### 3. Performance Optimization
|
||||
|
||||
#### Prompt Length Management
|
||||
- **Purpose**: Optimize prompt length for efficiency
|
||||
- **Implementation**: Balance completeness with conciseness
|
||||
- **Benefits**: Faster response times without sacrificing quality
|
||||
|
||||
#### Caching Strategy
|
||||
- **Purpose**: Leverage successful prompt patterns
|
||||
- **Implementation**: Cache successful prompt configurations
|
||||
- **Benefits**: Consistent quality and faster generation
|
||||
|
||||
#### Model Selection
|
||||
- **Purpose**: Use appropriate models for different tasks
|
||||
- **Implementation**: Match model capabilities to prompt complexity
|
||||
- **Benefits**: Optimal performance and cost efficiency
|
||||
|
||||
## Prompt Testing and Validation
|
||||
|
||||
### Testing Strategy
|
||||
|
||||
#### A/B Testing
|
||||
- **Purpose**: Compare different prompt variations
|
||||
- **Implementation**: Test different prompt versions with users
|
||||
- **Metrics**: Rule quality, user satisfaction, adoption rate
|
||||
|
||||
#### Quality Assessment
|
||||
- **Purpose**: Evaluate rule quality systematically
|
||||
- **Implementation**: Define quality metrics and scoring
|
||||
- **Metrics**: Specificity, clarity, actionability, relevance
|
||||
|
||||
#### User Feedback
|
||||
- **Purpose**: Gather real-world user feedback
|
||||
- **Implementation**: Collect feedback on generated rules
|
||||
- **Metrics**: User satisfaction, rule effectiveness, ease of use
|
||||
|
||||
### Validation Process
|
||||
|
||||
#### Rule Validation
|
||||
- **Purpose**: Ensure generated rules meet requirements
|
||||
- **Implementation**: Automated validation of rule properties
|
||||
- **Checks**: Length, format, language, specificity
|
||||
|
||||
#### Context Validation
|
||||
- **Purpose**: Ensure rules match folder context
|
||||
- **Implementation**: Context-aware rule validation
|
||||
- **Checks**: Relevance to folder type and purpose
|
||||
|
||||
#### Performance Validation
|
||||
- **Purpose**: Ensure prompt performance meets expectations
|
||||
- **Implementation**: Performance testing and monitoring
|
||||
- **Metrics**: Response time, success rate, resource usage
|
||||
|
||||
## Prompt Maintenance
|
||||
|
||||
### Continuous Improvement
|
||||
|
||||
#### Performance Monitoring
|
||||
- **Purpose**: Track prompt performance over time
|
||||
- **Implementation**: Monitor key metrics and trends
|
||||
- **Metrics**: Quality scores, response times, user satisfaction
|
||||
|
||||
#### User Feedback Analysis
|
||||
- **Purpose**: Learn from user interactions
|
||||
- **Implementation**: Analyze user feedback patterns
|
||||
- **Insights**: Common issues, improvement opportunities
|
||||
|
||||
#### Model Updates
|
||||
- **Purpose**: Adapt to model changes and improvements
|
||||
- **Implementation**: Regular prompt review and updates
|
||||
- **Benefits**: Maintain performance as models evolve
|
||||
|
||||
### Version Control
|
||||
|
||||
#### Prompt Versioning
|
||||
- **Purpose**: Track prompt changes and their effects
|
||||
- **Implementation**: Version control for prompt templates
|
||||
- **Benefits**: Enable rollback and comparison
|
||||
|
||||
#### Change Management
|
||||
- **Purpose**: Manage prompt changes systematically
|
||||
- **Implementation**: Structured change process
|
||||
- **Benefits**: Minimize disruption and ensure quality
|
||||
|
||||
## Advanced Prompt Techniques
|
||||
|
||||
### 1. Few-Shot Learning
|
||||
|
||||
#### Example-Based Prompts
|
||||
```
|
||||
You are an expert email organizer assistant. Here are examples of good email organization rules:
|
||||
|
||||
Example 1:
|
||||
Folder: "Finance"
|
||||
Rule: "Move emails with 'invoice', 'receipt', or 'payment' in the subject here"
|
||||
|
||||
Example 2:
|
||||
Folder: "Projects"
|
||||
Rule: "Put emails from 'project@company.com' or with 'project update' in the subject here"
|
||||
|
||||
Now generate a rule for the following folder:
|
||||
|
||||
**Folder Context:**
|
||||
- Folder Name: "{folder_name}"
|
||||
- Folder Type: {folder_type}
|
||||
- Purpose: {folder_purpose}
|
||||
|
||||
**Generated Rule:**
|
||||
```
|
||||
|
||||
#### Benefits
|
||||
- **Consistency**: Helps maintain consistent rule quality
|
||||
- **Learning**: Provides reference points for the AI
|
||||
- **Quality**: Improves rule quality through examples
|
||||
|
||||
### 2. Chain-of-Thought Prompting
|
||||
|
||||
#### Reasoning Prompts
|
||||
```
|
||||
You are an expert email organizer assistant. Think step by step about how to create an effective email organization rule.
|
||||
|
||||
**Folder Context:**
|
||||
- Folder Name: "{folder_name}"
|
||||
- Folder Type: {folder_type}
|
||||
- Purpose: {folder_purpose}
|
||||
|
||||
**Step 1: Analyze the folder name and purpose**
|
||||
- What keywords are relevant to this folder?
|
||||
- What type of emails should this folder contain?
|
||||
|
||||
**Step 2: Identify specific criteria**
|
||||
- What email characteristics should be used?
|
||||
- Should focus on sender, subject, content, or attachments?
|
||||
|
||||
**Step 3: Formulate the rule**
|
||||
- Use action-oriented language
|
||||
- Keep it specific and clear
|
||||
- Ensure it's 10-200 characters
|
||||
|
||||
**Generated Rule:**
|
||||
```
|
||||
|
||||
#### Benefits
|
||||
- **Quality**: Improves rule quality through structured thinking
|
||||
- **Transparency**: Makes the reasoning process more transparent
|
||||
- **Consistency**: Helps maintain consistent approach
|
||||
|
||||
### 3. Personalization
|
||||
|
||||
#### User-Specific Prompts
|
||||
```
|
||||
You are an expert email organizer assistant who understands {user_name}'s email organization preferences.
|
||||
|
||||
**User Context:**
|
||||
- User prefers rules based on: {user_preferences}
|
||||
- User's common rule patterns: {user_patterns}
|
||||
- User's feedback history: {user_feedback}
|
||||
|
||||
**Folder Context:**
|
||||
- Folder Name: "{folder_name}"
|
||||
- Folder Type: {folder_type}
|
||||
- Purpose: {folder_purpose}
|
||||
|
||||
**Generated Rule:**
|
||||
```
|
||||
|
||||
#### Benefits
|
||||
- **Relevance**: Generates more relevant rules based on user preferences
|
||||
- **Consistency**: Matches user's existing rule patterns
|
||||
- **Satisfaction**: Improves user satisfaction with personalized rules
|
||||
|
||||
## Implementation Guidelines
|
||||
|
||||
### Prompt Construction
|
||||
|
||||
#### Step 1: Define Requirements
|
||||
- Identify the specific requirements for rule generation
|
||||
- Define quality standards and constraints
|
||||
- Determine the expected output format
|
||||
|
||||
#### Step 2: Design Prompt Structure
|
||||
- Choose the appropriate prompt template
|
||||
- Define the context and requirements sections
|
||||
- Set the output format and expectations
|
||||
|
||||
#### Step 3: Optimize for Performance
|
||||
- Balance completeness with conciseness
|
||||
- Optimize for the target AI model
|
||||
- Consider caching and performance implications
|
||||
|
||||
#### Step 4: Test and Validate
|
||||
- Test with various folder types and names
|
||||
- Validate rule quality and relevance
|
||||
- Gather user feedback and iterate
|
||||
|
||||
### Best Practices
|
||||
|
||||
#### Do's
|
||||
- **Be specific**: Use clear, specific language
|
||||
- **Provide context**: Include relevant folder and user context
|
||||
- **Set constraints**: Define clear requirements and limitations
|
||||
- **Test thoroughly**: Validate prompts with real examples
|
||||
- **Iterate continuously**: Improve based on feedback and results
|
||||
|
||||
#### Don'ts
|
||||
- **Be too vague**: Avoid ambiguous or general instructions
|
||||
- **Over-constrain**: Don't make prompts too restrictive
|
||||
- **Ignore context**: Always include relevant context information
|
||||
- **Skip testing**: Always test prompts before deployment
|
||||
- **Set and forget**: Continuously monitor and improve prompts
|
||||
|
||||
## Conclusion
|
||||
|
||||
Effective prompt engineering is crucial for generating high-quality email organization rules. By following the principles, templates, and strategies outlined in this document, the development team can create prompts that consistently produce relevant, specific, and actionable rules.
|
||||
|
||||
### Key Success Factors
|
||||
- **Clear Requirements**: Define specific requirements and constraints
|
||||
- **Context Awareness**: Provide relevant context for each rule generation
|
||||
- **Quality Focus**: Prioritize rule quality and relevance
|
||||
- **Continuous Improvement**: Regularly test and refine prompts
|
||||
- **User-Centric Design**: Focus on generating rules that meet user needs
|
||||
|
||||
### Implementation Priority
|
||||
1. **Basic Prompt Templates**: Start with core prompt templates
|
||||
2. **Context Enhancement**: Add context-aware features
|
||||
3. **Quality Optimization**: Implement quality enhancement strategies
|
||||
4. **Advanced Techniques**: Add few-shot learning and personalization
|
||||
5. **Continuous Improvement**: Establish testing and maintenance processes
|
||||
|
||||
By implementing this prompt engineering strategy, the Email Organizer application can leverage AI to generate intelligent, effective email organization rules that significantly enhance the user experience.
|
||||
Reference in New Issue
Block a user