DSPy + Ertas
Construye pipelines LLM optimizables con DSPy — el framework declarativo de Stanford que programa modelos de lenguaje como un compilador programa hardware, funcionando perfectamente con modelos locales entrenados con Ertas.
Overview
DSPy es el framework de programación declarativa de LLM de Stanford NLP, diseñado en torno a una filosofía fundamentalmente diferente de la mayoría de los frameworks de agentes: en lugar de escribir prompts y cadenas a mano, describes la *firma* de cada paso (tipos de entrada, tipos de salida, descripción de la tarea), y el optimizador de DSPy descubre los prompts, demostraciones y ejemplos few-shot que hacen que el sistema funcione bien. La metáfora que el proyecto utiliza es que DSPy es a los modelos de lenguaje lo que un compilador es al hardware — programa el modelo para satisfacer una especificación declarada en lugar de pedir al desarrollador que ajuste a mano cada prompt.
La implicación práctica es que los sistemas DSPy son tanto más mantenibles como más performantes que las cadenas de prompts equivalentes escritas a mano. Cuando un modelo cambia (tamaño diferente, proveedor diferente, fine-tune diferente), el optimizador de DSPy recompila los prompts para el nuevo modelo en lugar de requerir que el desarrollador ajuste cada uno a mano. Cuando la especificación de la tarea cambia, la misma recompilación produce un sistema nuevo sin la rotación de ingeniería de prompts que define la mayor parte del trabajo de mantenimiento de aplicaciones LLM.
DSPy es completamente agnóstico al modelo. El framework admite cualquier endpoint estilo chat-completion a través de su abstracción LM, incluyendo OpenAI, Anthropic, Together, servidores locales (Ollama, vLLM, llama.cpp) y cualquier backend personalizado que implemente la interfaz LM simple. Para equipos que ejecutan modelos ajustados sobre Ertas, la capa de optimización de DSPy se convierte en un complemento poderoso: el modelo ajustado maneja la competencia específica del dominio, DSPy maneja la optimización de prompts encima.
How Ertas Integrates
Los modelos entrenados con Ertas funcionan con DSPy a través de su abstracción `LM`. Después de ajustar en Studio y exportar a GGUF, sirves el modelo a través de Ollama, vLLM o Ertas Cloud, luego configuras `dspy.LM` (o el proveedor OpenAI) para apuntar a tu endpoint. Los optimizadores de DSPy — BootstrapFewShot, MIPROv2, BootstrapFewShotWithRandomSearch — luego compilan prompts que sacan el máximo provecho de tu modelo ajustado.
La combinación de fine-tuning y optimización DSPy es inusualmente potente. El fine-tuning enseña al modelo el vocabulario del dominio, los formatos de salida y los patrones. La optimización DSPy luego encuentra la estructura del prompt y el conjunto de demostraciones que provocan el mejor rendimiento del modelo en la tarea específica. Empíricamente, los dos mejoran dimensiones diferentes y se acumulan: un modelo ajustado con prompts compilados por DSPy a menudo supera a cualquiera de los enfoques por separado, a veces por márgenes significativos en tareas de benchmark.
Para equipos que iteran sobre sistemas de agentes, el modelo declarativo de DSPy tiene una propiedad particularmente agradable: cuando recopilas nuevos datos de entrenamiento y ajustas un nuevo modelo en Studio, puedes recompilar tu programa DSPy contra el nuevo modelo en un solo paso. El sistema adapta automáticamente sus prompts y demostraciones al comportamiento del nuevo modelo, en lugar de requerir un re-ajuste manual de cada prompt en el pipeline.
Getting Started
- 1
Ajusta tu modelo de dominio en Ertas Studio
Entrena con datos que capturen la terminología, los patrones de salida y el estilo de razonamiento de tu dominio. DSPy optimizará los prompts para provocar el mejor comportamiento de esta base ajustada.
- 2
Despliega en un endpoint compatible con OpenAI
Exporta a GGUF y sirve vía Ollama, vLLM o Ertas Cloud. DSPy llama a cualquier endpoint compatible a través de su abstracción LM.
- 3
Instala DSPy y configura el LM
Instala dspy. Configura `dspy.LM(model='openai/ertas-...', api_base='http://localhost:11434/v1')` y configúralo como el LM por defecto con `dspy.configure(lm=...)`.
- 4
Define firmas y módulos declarativamente
Describe cada paso como una firma DSPy: campos de entrada, campos de salida, descripción de la tarea. Compón en módulos (Predict, ChainOfThought, ProgramOfThought, ReAct). El framework maneja la construcción del prompt.
- 5
Compila con un optimizador y evalúa
Usa `BootstrapFewShot`, `MIPROv2` u otro optimizador DSPy con un pequeño conjunto de entrenamiento y métrica de evaluación. El optimizador compila prompts que maximizan tu métrica en el modelo ajustado.
import dspy
# Apunta DSPy a tu modelo entrenado con Ertas servido vía Ollama
lm = dspy.LM(
"openai/ertas-financial-analyst-7b",
api_base="http://localhost:11434/v1",
api_key="not-needed",
)
dspy.configure(lm=lm)
# Firma declarativa: describe la tarea, no el prompt
class FinancialQuestion(dspy.Signature):
"""Answer questions about a company's financial filings with citations."""
filing: str = dspy.InputField(desc="Excerpt from the company's 10-K filing")
question: str = dspy.InputField()
answer: str = dspy.OutputField(desc="A precise answer with section citations")
# Módulo: razonamiento de cadena de pensamiento sobre la firma
analyst = dspy.ChainOfThought(FinancialQuestion)
# Compila con un optimizador usando un pequeño conjunto de entrenamiento etiquetado
optimizer = dspy.BootstrapFewShot(metric=citation_quality_metric)
compiled_analyst = optimizer.compile(analyst, trainset=labeled_train)
# Ejecuta el programa compilado — DSPy maneja toda la construcción del prompt
result = compiled_analyst(
filing="In Q4 we recognized $42M in deferred revenue...",
question="What was the change in deferred revenue and why?"
)
print(result.answer)Benefits
- Declarativo — describe firmas, no prompts
- Optimización automática de prompts — enfoque estilo compilador a la ingeniería LLM
- Recompila cuando los modelos cambian en lugar de ajustar prompts a mano
- Se acumula con el fine-tuning — diferentes dimensiones de optimización, ganancias aditivas
- Completamente agnóstico al modelo — funciona con cualquier endpoint LM incluyendo modelos locales entrenados con Ertas
- Fuerte linaje de investigación de Stanford NLP con desarrollo comunitario activo
Related Resources
Fine-Tuning
Prompt Engineering
Structured Output
Fine-Tuning for Structured Output: Beyond JSON Mode to Guaranteed Schemas
Building Reliable AI Agents with Fine-Tuned Local Models: Complete Guide
LangGraph
Ollama
OpenAI Agents SDK
Pydantic AI
vLLM
Ertas for SaaS Product Teams
Ertas for Data Extraction
Ertas for Compliance Report Generation
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.