Initial commit
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
---
|
||||
name: prompt-engineering-patterns
|
||||
description: Master advanced prompt engineering techniques to maximize LLM performance, reliability, and controllability in production. Use when optimizing prompts, improving LLM outputs, or designing production prompt templates.
|
||||
---
|
||||
|
||||
# Prompt Engineering Patterns
|
||||
|
||||
Master advanced prompt engineering techniques to maximize LLM performance, reliability, and controllability.
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
- Designing complex prompts for production LLM applications
|
||||
- Optimizing prompt performance and consistency
|
||||
- Implementing structured reasoning patterns (chain-of-thought, tree-of-thought)
|
||||
- Building few-shot learning systems with dynamic example selection
|
||||
- Creating reusable prompt templates with variable interpolation
|
||||
- Debugging and refining prompts that produce inconsistent outputs
|
||||
- Implementing system prompts for specialized AI assistants
|
||||
|
||||
## Core Capabilities
|
||||
|
||||
### 1. Few-Shot Learning
|
||||
- Example selection strategies (semantic similarity, diversity sampling)
|
||||
- Balancing example count with context window constraints
|
||||
- Constructing effective demonstrations with input-output pairs
|
||||
- Dynamic example retrieval from knowledge bases
|
||||
- Handling edge cases through strategic example selection
|
||||
|
||||
### 2. Chain-of-Thought Prompting
|
||||
- Step-by-step reasoning elicitation
|
||||
- Zero-shot CoT with "Let's think step by step"
|
||||
- Few-shot CoT with reasoning traces
|
||||
- Self-consistency techniques (sampling multiple reasoning paths)
|
||||
- Verification and validation steps
|
||||
|
||||
### 3. Prompt Optimization
|
||||
- Iterative refinement workflows
|
||||
- A/B testing prompt variations
|
||||
- Measuring prompt performance metrics (accuracy, consistency, latency)
|
||||
- Reducing token usage while maintaining quality
|
||||
- Handling edge cases and failure modes
|
||||
|
||||
### 4. Template Systems
|
||||
- Variable interpolation and formatting
|
||||
- Conditional prompt sections
|
||||
- Multi-turn conversation templates
|
||||
- Role-based prompt composition
|
||||
- Modular prompt components
|
||||
|
||||
### 5. System Prompt Design
|
||||
- Setting model behavior and constraints
|
||||
- Defining output formats and structure
|
||||
- Establishing role and expertise
|
||||
- Safety guidelines and content policies
|
||||
- Context setting and background information
|
||||
|
||||
## Quick Start
|
||||
|
||||
```python
|
||||
from prompt_optimizer import PromptTemplate, FewShotSelector
|
||||
|
||||
# Define a structured prompt template
|
||||
template = PromptTemplate(
|
||||
system="You are an expert SQL developer. Generate efficient, secure SQL queries.",
|
||||
instruction="Convert the following natural language query to SQL:\n{query}",
|
||||
few_shot_examples=True,
|
||||
output_format="SQL code block with explanatory comments"
|
||||
)
|
||||
|
||||
# Configure few-shot learning
|
||||
selector = FewShotSelector(
|
||||
examples_db="sql_examples.jsonl",
|
||||
selection_strategy="semantic_similarity",
|
||||
max_examples=3
|
||||
)
|
||||
|
||||
# Generate optimized prompt
|
||||
prompt = template.render(
|
||||
query="Find all users who registered in the last 30 days",
|
||||
examples=selector.select(query="user registration date filter")
|
||||
)
|
||||
```
|
||||
|
||||
## Key Patterns
|
||||
|
||||
### Progressive Disclosure
|
||||
Start with simple prompts, add complexity only when needed:
|
||||
|
||||
1. **Level 1**: Direct instruction
|
||||
- "Summarize this article"
|
||||
|
||||
2. **Level 2**: Add constraints
|
||||
- "Summarize this article in 3 bullet points, focusing on key findings"
|
||||
|
||||
3. **Level 3**: Add reasoning
|
||||
- "Read this article, identify the main findings, then summarize in 3 bullet points"
|
||||
|
||||
4. **Level 4**: Add examples
|
||||
- Include 2-3 example summaries with input-output pairs
|
||||
|
||||
### Instruction Hierarchy
|
||||
```
|
||||
[System Context] → [Task Instruction] → [Examples] → [Input Data] → [Output Format]
|
||||
```
|
||||
|
||||
### Error Recovery
|
||||
Build prompts that gracefully handle failures:
|
||||
- Include fallback instructions
|
||||
- Request confidence scores
|
||||
- Ask for alternative interpretations when uncertain
|
||||
- Specify how to indicate missing information
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Be Specific**: Vague prompts produce inconsistent results
|
||||
2. **Show, Don't Tell**: Examples are more effective than descriptions
|
||||
3. **Test Extensively**: Evaluate on diverse, representative inputs
|
||||
4. **Iterate Rapidly**: Small changes can have large impacts
|
||||
5. **Monitor Performance**: Track metrics in production
|
||||
6. **Version Control**: Treat prompts as code with proper versioning
|
||||
7. **Document Intent**: Explain why prompts are structured as they are
|
||||
|
||||
## Common Pitfalls
|
||||
|
||||
- **Over-engineering**: Starting with complex prompts before trying simple ones
|
||||
- **Example pollution**: Using examples that don't match the target task
|
||||
- **Context overflow**: Exceeding token limits with excessive examples
|
||||
- **Ambiguous instructions**: Leaving room for multiple interpretations
|
||||
- **Ignoring edge cases**: Not testing on unusual or boundary inputs
|
||||
|
||||
## Integration Patterns
|
||||
|
||||
### With RAG Systems
|
||||
```python
|
||||
# Combine retrieved context with prompt engineering
|
||||
prompt = f"""Given the following context:
|
||||
{retrieved_context}
|
||||
|
||||
{few_shot_examples}
|
||||
|
||||
Question: {user_question}
|
||||
|
||||
Provide a detailed answer based solely on the context above. If the context doesn't contain enough information, explicitly state what's missing."""
|
||||
```
|
||||
|
||||
### With Validation
|
||||
```python
|
||||
# Add self-verification step
|
||||
prompt = f"""{main_task_prompt}
|
||||
|
||||
After generating your response, verify it meets these criteria:
|
||||
1. Answers the question directly
|
||||
2. Uses only information from provided context
|
||||
3. Cites specific sources
|
||||
4. Acknowledges any uncertainty
|
||||
|
||||
If verification fails, revise your response."""
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
### Token Efficiency
|
||||
- Remove redundant words and phrases
|
||||
- Use abbreviations consistently after first definition
|
||||
- Consolidate similar instructions
|
||||
- Move stable content to system prompts
|
||||
|
||||
### Latency Reduction
|
||||
- Minimize prompt length without sacrificing quality
|
||||
- Use streaming for long-form outputs
|
||||
- Cache common prompt prefixes
|
||||
- Batch similar requests when possible
|
||||
|
||||
## Resources
|
||||
|
||||
- **references/few-shot-learning.md**: Deep dive on example selection and construction
|
||||
- **references/chain-of-thought.md**: Advanced reasoning elicitation techniques
|
||||
- **references/prompt-optimization.md**: Systematic refinement workflows
|
||||
- **references/prompt-templates.md**: Reusable template patterns
|
||||
- **references/system-prompts.md**: System-level prompt design
|
||||
- **assets/prompt-template-library.md**: Battle-tested prompt templates
|
||||
- **assets/few-shot-examples.json**: Curated example datasets
|
||||
- **scripts/optimize-prompt.py**: Automated prompt optimization tool
|
||||
|
||||
## Success Metrics
|
||||
|
||||
Track these KPIs for your prompts:
|
||||
- **Accuracy**: Correctness of outputs
|
||||
- **Consistency**: Reproducibility across similar inputs
|
||||
- **Latency**: Response time (P50, P95, P99)
|
||||
- **Token Usage**: Average tokens per request
|
||||
- **Success Rate**: Percentage of valid outputs
|
||||
- **User Satisfaction**: Ratings and feedback
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Review the prompt template library for common patterns
|
||||
2. Experiment with few-shot learning for your specific use case
|
||||
3. Implement prompt versioning and A/B testing
|
||||
4. Set up automated evaluation pipelines
|
||||
5. Document your prompt engineering decisions and learnings
|
||||
Reference in New Issue
Block a user