Chapter 5

CustomMIPROv2

Enhanced multi-stage prompt optimization for production workloads.

Key Enhancements

  • Two-Stage Optimization: Separates constraint extraction from instruction generation
  • Explicit Constraints: Users can provide domain-specific rules
  • Mini-Batch Evaluation: Efficient evaluation using representative subsets
  • Context-Aware: Better handling of long conversations

Two-Stage Process

class CustomMIPROv2:
    def __init__(self, teacher_model="gpt-4", student_model="gpt-4o-mini"):
        # Stage 1: Extract constraints from demonstrations
        self.constraint_extractor = dspy.Predict(
            "Analyze task demonstrations and extract key constraints."
        )
        
        # Stage 2: Generate instructions based on constraints
        self.instruction_generator = dspy.ChainOfThought(
            "Generate optimized instruction based on constraints and examples."
        )

    def compile(self, program, trainset, valset, metric, tips=None):
        # Extract constraints from training data
        constraints = self._extract_constraints(trainset)
        
        # Generate optimized instructions
        return self._generate_optimized_program(program, constraints, tips)