DSPy: prompty ako kompilovaný kód, nie ručná literatúra

DSPy (Declarative Self-improving Python) je framework od Stanford NLP (Omar Khattab a kol.) na programovanie a optimalizovanie LLM pipeline-ov. Hlavná myšlienka je provokatívna: prestaňte ručne ladiť prompty. Namiesto toho deklaratívne popíšte, čo má model robiť (vstup → výstup) a DSPy automaticky vygeneruje a optimalizuje konkrétne prompty na základe vašich vlastných dát.

V roku 2026 sa DSPy etabloval ako de-facto štandard pre produkčné AI pipeline-y, kde manuálne ladenie promptov narazilo na strop.


1. Problém, ktorý DSPy rieši

Klasický prompt engineering vyzerá takto:

  1. Napíšeš si prompt: "Si expert na X, urob Y, vráť ako JSON…"
  2. Otestuješ na 10 príkladoch, niečo nefunguje.
  3. Pridáš inštrukciu "…a NEZABUDNI dať always include the source".
  4. Test pass.
  5. Pridáš nový use-case → predchádzajúce regresne padne.
  6. GOTO 1.

Po 6 mesiacoch máš 4-stránkový prompt, ktorý sa nikto nedotkne, lebo nikto nevie, ktorá veta čo robí. Pri zmene modelu (z GPT-5 na Claude Opus 4.7) sa kvalita prepadne, lebo prompt bol nešťastne overfitnutý na špecifické správanie OpenAI.

DSPy hovorí: toto je úloha kompilátora, nie človeka.


2. Ako DSPy funguje (3 koncepty)

  • Signature. Deklaruješ vstupy a výstupy ako Python triedu:

    class FAQAnswer(dspy.Signature):
        """Odpovedz na zákaznícku otázku na základe znalostnej bázy."""
        question = dspy.InputField()
        kb_snippet = dspy.InputField()
        answer = dspy.OutputField(desc="odpoveď v 2-3 vetách")
    

    Žiadny prompt. Iba kontrakt.

  • Module. Skladá signature-y do pipeline-u. Štandardné moduly: dspy.Predict (jeden hit modelu), dspy.ChainOfThought (s thinking), dspy.ReAct (s tool-use), dspy.MultiHop, dspy.ProgramOfThought.

    rag = dspy.ChainOfThought(FAQAnswer)
    result = rag(question="...", kb_snippet="...")
    
  • Optimizer (compiler). Najdôležitejšia časť. Vezmeš dataset s príkladmi vstup → správny výstup a DSPy:

    • vygeneruje few-shot príklady automaticky z vašich dát,
    • prepíše a doladí instrukcie v signature pomocou meta-LLM,
    • vyberie najlepšiu kombináciu podľa zadanej metriky (presnosť, F1, BLEU, custom skóre).

    Optimizery: BootstrapFewShot, MIPRO (multi-iteration prompt optimization), BetterTogether (kombinácia s fine-tuningom), COPRO.


3. Príklad: RAG pipeline za 20 riadkov

import dspy

dspy.configure(lm=dspy.LM("openai/gpt-5-turbo"))

class Answer(dspy.Signature):
    """Odpovedz na otázku používateľa pomocou poskytnutých dokumentov."""
    question = dspy.InputField()
    docs = dspy.InputField(desc="zoznam relevantných dokumentov")
    answer = dspy.OutputField()

class RAG(dspy.Module):
    def __init__(self):
        self.retrieve = dspy.Retrieve(k=5)
        self.generate = dspy.ChainOfThought(Answer)

    def forward(self, question):
        docs = self.retrieve(question).passages
        return self.generate(question=question, docs=docs)

# Kompilácia na vlastných dátach
trainset = [...]  # 50 príkladov question → expected answer
metric = lambda ex, pred: ex.answer.lower() in pred.answer.lower()
rag = dspy.MIPRO(metric=metric).compile(RAG(), trainset=trainset)

Po .compile() máš na ruke vyladenú pipeline, ktorá za teba sama vybrala few-shot príklady a doladila inštrukcie. Žiaden ručne písaný prompt.


4. Kedy DSPy stojí za zavedenie

  • Pipeline má > 1 LLM volanie. Pri jednom hite je DSPy overkill — staré prompty stačia.
  • Máš dáta na evaluáciu. Bez aspoň 30-50 labelovaných príkladov optimizer nemá z čoho učiť.
  • Plánuješ meniť modely. DSPy pipeline rekompiluješ na nový model za 5 minút (vs. týždeň ručného ladenia).
  • Tím má > 1 prompt-engineera. Verzionovaná .py súbory zvládneš v code-review; 4-stránkový prompt nie.

Naopak: pre jednoduchý chatbot s jediným systémovým promptom je DSPy zbytočná réžia.


5. Ekosystém okolo DSPy v 2026

  • MLflow integrácia — DSPy programy sa logujú a verzionujú ako MLflow modely.
  • LiteLLM backend — DSPy vie hovoriť cez akýkoľvek model (OpenAI, Anthropic, Google, lokálny Llama 4) bez zmeny kódu (viď článok LiteLLM).
  • dspy.evaluate.Evaluate — evaluation harness s parallel execution a caching.
  • Komunitné moduly — knižnice ako dspy-airline-agents, dspy-medical-qa poskytujú predpripravené pipeline-y.
  • TextGrad — komplementárny prístup, používa "gradientné" descenty cez text feedback (autori sa explicitne odkazujú na DSPy).

6. Kritika a limity

  • Krivka učenia — človeku zvyknutému na "napíš prompt a vyskúšaj" trvá týždeň, kým mu DSPy myšlienka klikne.
  • Latencia kompilácieMIPRO.compile() na 100-vzorkovom datasete s GPT-5 stojí 5-50 USD a beží 10-30 minút.
  • Optimizer dáva niekedy bizzarné few-shot examples — treba ručne skontrolovať výstup kompilácie.
  • Stabilita medzi verziami — DSPy 2.x → 3.x prinieslo breaking changes; produkčné nasadenia treba pinovať na verziu.

7. Vzťah k iným technikám

  • Prompt Engineering je vstupom (DSPy nahrádza ručné iteratívne ladenie).
  • RAG sa robí pomocou dspy.Retrieve modulu.
  • Few-Shot Prompting je čo optimizer automaticky generuje.
  • Promptfoo rieši evaluáciu a red-teaming; DSPy rieši samotné generovanie pipeline-u — sú komplementárne.
  • Fine-tuning je drahá alternatíva; DSPy BetterTogether ich vie kombinovať.

Súvisiace témy

  • Prompt Engineering Pokrocile — manuálny prístup, ktorý DSPy automatizuje.
  • Promptfoo — evaluation a red-teaming.
  • RAG — typický use-case pre DSPy.
  • LiteLLM — backend gateway pre DSPy.
  • Mixture of Experts — paralelný smer optimalizácie (architektúra modelu, nie pipeline).