- Publicado el
Del prompting a la programación: Dominando los LLMs con DSPy

Cuando LangChain introdujo el concepto de encadenar llamadas a modelos de lenguaje grande (LLM), sentimos que desbloqueábamos una nueva dimensión de capacidades de IA. Pero conforme el campo evolucionó, surgió una limitación evidente: la fragilidad de los prompts creados manualmente. Entra DSPy—un marco que reinventa la programación de LLMs como un proceso sistemático y modular, similar al enfoque de PyTorch para redes neuronales.
DSPy no es solo otra herramienta para unir llamadas API. Es un lenguaje de programación completo para LLMs, combinando sintaxis declarativa con optimización automatizada. Imagina definir la lógica de tu pipeline de LLM mientras el marco maneja el trabajo tedioso de ajustar instrucciones, ejemplos few-shot e incluso el fine-tuning de modelos más pequeños. Esta es la promesa de DSPy: programar, no hacer prompting.
De las cadenas a los grafos: La evolución de la orquestación de LLMs
Los límites de la ingeniería de prompts tradicional
Las primeras aplicaciones de LLMs dependían de prompts rígidos y diseñados manualmente. Un pequeño cambio en la redacción—"reescribe este documento" versus "revisa este texto"—podía alterar drásticamente los resultados. Peor aún, estos prompts rara vez eran transferibles entre modelos; lo que funcionaba para GPT-4 podía fallar estrepitosamente con Gemini o Llama 3.
Por qué DSPy cambia las reglas
DSPy introduce tres innovaciones clave:
- Signatures: Especificaciones declarativas de comportamiento entrada/salida (ej.
contexto, pregunta -> respuesta
). - Módulos: Componentes reutilizables como
ChainOfThought
oRetrieve
que reemplazan prompts monolíticos. - Teleprompters: Motores de optimización que refinan automáticamente prompts y ejemplos few-shot.
Esta tríada transforma los programas de LLM de scripts frágiles en pipelines que se auto-mejoran.
Construyendo programas de LLM con DSPy
La sintaxis de signatures: Más limpia que docstrings
class FactoidQA(dspy.Signature):
"""Answer questions with short, factual answers."""
context = dspy.InputField(desc="May contain relevant facts")
question = dspy.InputField()
answer = dspy.OutputField(desc="Often 1-5 words")
Aquí, el docstring
se convierte en la instrucción del prompt, mientras los campos tipados imponen estructura. DSPy puede luego optimizar esta signature—reescribiendo la instrucción o añadiendo ejemplos—sin intervención manual.
Construyendo un pipeline de QA multi-hop
Considera un sistema que responde preguntas complejas dividiéndolas en subconsultas:
class MultiHopQA(dspy.Module):
def __init__(self):
self.query_gen = dspy.ChainOfThought("context, question -> query")
self.retriever = dspy.Retrieve(k=3)
self.answer_gen = dspy.ChainOfThought("context, question -> answer")
def forward(self, question):
context = []
for _ in range(2): # Máximo de hops
query = self.query_gen(context=context, question=question).query
passages = self.retriever(query)
context += passages
return self.answer_gen(context=context, question=question)
Este programa ajusta dinámicamente sus consultas basado en resultados intermedios—una tarea que requeriría hacking de prompts frágil en frameworks tradicionales.
Optimización: El ingrediente secreto
Bootstrap para aprendizaje few-shot
El teleprompter BootstrapFewShot
de DSPy selecciona y formatea automáticamente ejemplos de entrenamiento. Para un dataset de 20 ejemplos, podría descubrir que incluir estos tres maximiza la precisión:
Example 1:
Question: "Who provided the assist in the 2014 World Cup final?"
Answer: "André Schürrle"
Example 2:
Question: "What’s the capital of André Schürrle’s birth state?"
Answer: "Mainz"
El optimizador prueba permutaciones, midiendo el impacto mediante métricas como exact match o F1 score.
Fine-tuning con datos sintéticos
DSPy puede generar racionalizaciones sintéticas para prompting de cadena de pensamiento:
# Antes de optimizar
Q: "Why is the sky blue?"
A: "Rayleigh scattering."
# Después de optimizar
Q: "Why is the sky blue?"
Thought: "Light scatters more in shorter wavelengths; blue dominates."
A: "Rayleigh scattering."
Estos datos luego entrenan modelos más pequeños (ej. T5) para emular el razonamiento de GPT-4 a menor costo.
Impacto en el mundo real: Más allá de la academia
Caso de estudio: Pipeline de producción de Algorithm
Jonathan Anderson, CTO de Algorithm, comenta:
"DSPy redujo nuestra sobrecarga de ajuste de prompts en 70%. Ahora prototipamos sistemas RAG en horas, no semanas, con módulos bloqueados que aseguran consistencia entre despliegues."
Resultados de benchmarks
Tarea | Prompts manuales | DSPy-optimizado | Mejora |
---|---|---|---|
HotPotQA (EM) | 42% | 58% | +16% |
GSM8K (Precisión) | 63% | 89% | +26% |
El futuro es modular
DSPy anuncia un cambio del desarrollo de IA centrado en modelos a centrado en pipelines. Fronteras clave incluyen:
- LLMs locales: Programas DSPy con fine-tuning ejecutándose vía Ollama en hardware consumer.
- Sistemas multi-agente: Componiendo módulos en flujos de trabajo agenticos con memoria compartida.
- Pipelines auto-depuradores: Aserciones como
dspy.Suggest(len(query) < 100)
que guían la optimización.
Como dijo Andrej Karpathy: "Mi piel está más clara desde que uso DSPy." Hiperbólica o no, la elegancia del framework es innegable. No es solo una herramienta—es el fundamento de la próxima era de programación con LLMs.
Fuentes
- ¡DSPy explicado!
- Tutorial completo de DSPy
- DSPy para razonamiento (Stanford)
- Perspectiva de un CTO sobre DSPy
- Evolución de IA con DSPy
¿Disfrutaste este artículo? ¿Te resultó útil? Déjanos un comentario abajo para compartir tus opiniones o preguntas. Se requiere una cuenta de GitHub para unirse a la discusión.