Saltar al contenido principal

Capítulo 3: Pipelines de Optimización de Prompts

DSPy para la Optimización de Prompts​

import dspy

# Configure language model
lm = dspy.OpenAI(model="gpt-4")
dspy.configure(lm=lm)

class QuestionAnswering(dspy.Module):
def __init__(self):
super().__init__()
self.generate_answer = dspy.ChainOfThought("context, question -> answer")

def forward(self, context: str, question: str):
return self.generate_answer(context=context, question=question)

# Optimize with examples
from dspy.teleprompt import BootstrapFewShot

optimizer = BootstrapFewShot(metric=answer_accuracy)
optimized_qa = optimizer.compile(QuestionAnswering(), trainset=train_examples)

Bucle Automatizado de Optimización​

class PromptOptimizer:
def __init__(self, base_prompt: str, evaluation_dataset: list):
self.base_prompt = base_prompt
self.evaluation_dataset = evaluation_dataset
self.history = []

def optimize(self, iterations: int = 10):
current_prompt = self.base_prompt
current_score = self.evaluate(current_prompt)

for i in range(iterations):
# Generate variations
variations = self.generate_variations(current_prompt)

# Evaluate each
for variation in variations:
score = self.evaluate(variation)

if score > current_score:
current_prompt = variation
current_score = score

self.history.append({
"iteration": i,
"prompt": current_prompt,
"score": current_score
})

return current_prompt, current_score

Siguiente: Cuestionario del Módulo 13