# Optimization Prompt Tuning

> Prompt optimization techniques for DSPy

- Skill: `j33bs/optimization-prompt-tuning` (Agent Skill)
- Install (CLI): `npx skillmds@latest add j33bs/optimization-prompt-tuning`
- Raw SKILL.md: https://api.skillmd.com/api/skills/j33bs/optimization-prompt-tuning/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: j33bs (https://skillmd.com/u/j33bs)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/j33bs/optimization-prompt-tuning

---


# Prompt Optimization

## 🎯 Trigger Conditions
Use when asked about prompt engineering, prompt optimization, or improving DSPy signature quality.

## 📚 Prerequisites
- `dspy` package installed
- Evaluation metric defined
- Prompt variants to test

## 🛠️ Prompt Optimization Techniques

### 1. Bootstrap Few-Shot
```python
from dspy import BootstrapFewShot

# Create base program
program = dspy.ChainOfThought("question -> reasoning -> answer")

# Prepare training data
train_data = [
    dspy.Example(
        question="What is X?",
        reasoning="Step 1: ...",
        answer="Y"
    ).with_inputs("question")
]

# Optimize with few-shot examples
optimizer = BootstrapFewShot(
    metric=your_metric,
    max_demos=5
)

optimized = optimizer.optimize(program, train_data)
```

### 2. Prompt Templating
```python
class OptimizedPrompt(dspy.Module):
    def __init__(self):
        self.prompt = dspy.Prompt(
            """Answer the following question with reasoning:
            
            Question: {question}
            
            Reasoning:
            {reasoning}
            
            Answer: {answer}""",
            examples=[
                {
                    "question": "Example question",
                    "reasoning": "Example reasoning",
                    "answer": "Example answer"
                }
            ]
        )
    
    def forward(self, question):
        return self.prompt(question=question)
```

### 3. Prompt Search
```python
from dspy import PromptSearch

# Create prompt variants
prompts = [
    "Simple prompt format",
    "Detailed prompt format",
    "Structured prompt format"
]

# Search for best prompt
searcher = PromptSearch(
    prompts=prompts,
    metric=your_metric,
    train_data=train_data
)

best_prompt = searcher.search()
```

### 4. Automatic Prompt Optimization
```python
from dspy import MIPRO

# Configure MIPRO optimizer
optimizer = MIPRO(
    metric=your_metric,
    num_trials=10,
    minibatch=[0.2, 0.4, 0.6],
    shard_size=1
)

# Optimize program
optimized = optimizer.optimize(
    program=base_program,
    trainset=train_data,
    valset=dev_data
)
```

## ⚠️ Pitfalls
- **Overfitting**: Optimized prompts may not generalize
- **Complexity**: Complex prompts increase latency
- **Maintainability**: Hard-to-read prompts are hard to maintain
- **Bias**: Prompts can introduce or amplify bias

## 📖 References
- [DSPy Prompt Optimization](https://dspy-docs.vercel.app/docs/deep-dive/optimization/prompt-tuning)
- [Prompt Engineering Guide](https://www.promptingguide.ai/)

