Vytvořeno: 15.7.2026 | Aktualizováno: 15.07.2026 23:08
DSPy je open-source Python framework pro návrh, evaluaci a optimalizaci LLM aplikací. Místo ruční údržby dlouhých promptů se úloha popíše jako strukturovaný program; DSPy pak může podle dat a metriky optimalizovat instrukce a few-shot ukázky pro použitý model.
Prompt pro LLM bývá součástí aplikační logiky, ale jako obyčejný text se špatně testuje a udržuje. Při změně modelu, přidání nového typu vstupů nebo nalezení chybného edge case je nutné prompt ručně přepsat a znovu ověřit.
DSPy odděluje tři věci:
Neznamená to, že prompty zmizí. DSPy z definice úlohy sestaví prompt pro LLM a při optimalizaci hledá jeho účinnější variantu. Hlavní změna je, že prompt už není jediným ručně spravovaným zdrojovým kódem aplikace.
Signature deklaruje úlohu přes typované vstupy a výstupy. Například klasifikátor support ticketů může mít tento tvar:
import dspy from typing import Literal class ClassifyTicket(dspy.Signature): """Zařaď IT support ticket.""" ticket: str = dspy.InputField() team: Literal["network", "identity", "endpoint", "application"] = dspy.OutputField() priority: Literal["low", "medium", "high"] = dspy.OutputField() escalation_needed: bool = dspy.OutputField()
Signature neobsahuje ručně sestavený prompt. Říká pouze, jaký problém se má vyřešit a jak má vypadat odpověď.
Module určuje způsob, jakým se signatura vykoná. Pro stejnou úlohu lze použít například přímou predikci, reasoning nebo agentní smyčku s nástroji:
classifier = dspy.Predict(ClassifyTicket) classifier_with_reasoning = dspy.ChainOfThought(ClassifyTicket) # agent = dspy.ReAct("question -> answer", tools=[search])
Díky tomu je možné změnit strategii bez změny vstupního a výstupního rozhraní zbytku aplikace.
DSPy přistupuje k modelu přes dspy.LM. Konkrétní model a poskytovatel se nastaví odděleně od programu:
lm = dspy.LM("openai/gpt-5.4-nano") dspy.configure(lm=lm)
Název modelu je příklad z oficiální dokumentace. Produkční konfigurace musí obsahovat odpovídající přístupové údaje a zvolený podporovaný provider.
Základní optimalizace DSPy neprovádí fine-tuning vah vzdáleného LLM a nerozpadá prompt na jednotlivá slova. Zachovává použitý model a porovnává varianty programových artefaktů, zejména:
Optimizer dostane trénovací příklady a metriku. Vytvoří kandidátní varianty instrukcí nebo ukázek, zavolá nad nimi model a vyhodnotí je. Lepší kandidáti se uchovají jako zkompilovaný program.
Například GEPA lze použít takto:
optimizer = dspy.GEPA(metric=semantic_f1, auto="medium") optimized_rag = optimizer.compile(rag, trainset) optimized_rag.save("rag-v2.json")
V tomto příkladu je semantic_f1 metrika kvality a trainset sada příkladů. Uložený soubor reprezentuje optimalizovanou podobu programu, ne nové váhy modelu.
DSPy podporuje také přístupy jako BootstrapFewShot a MIPROv2 pro práci s demonstracemi a instrukcemi. Fine-tuning lze do širšího workflow zapojit, ale není nutným ani výchozím mechanismem DSPy.
Pro klasifikátor ticketů je potřeba nejprve připravit historické příklady se správným týmem, prioritou a rozhodnutím o eskalaci. Příklady se rozdělí alespoň na trénovací a nezávislou validační sadu.
Metrika může vyžadovat shodu všech výstupů:
def ticket_metric(example, prediction, trace=None): return ( example.team == prediction.team and example.priority == prediction.priority and example.escalation_needed == prediction.escalation_needed )
Výchozí dspy.Predict se nejprve vyhodnotí na validační sadě. Potom optimizer hledá vhodnější instrukci a demonstrace. Může tak například zjistit, že zmínka o MFA má vést k týmu identity, zatímco porucha po výměně notebooku může patřit pod endpoint.
Přínos není v tom, že DSPy zaručí správné zařazení. Přínos je v opakovatelném postupu: místo ručního hádání, co přidat do promptu, se každá změna porovná vůči stejné metrice a stejným datům.
Signature a začít jednoduchým modulem, typicky dspy.Predict.DSPy se hodí pro úlohy s jasným vstupem, výstupem a ověřitelnou kvalitou: klasifikaci, extrakci strukturovaných dat, RAG odpovědi, LLM judge nebo konkrétní krok agentního workflow. Užitečný je také při migraci mezi modely, pokud je potřeba ověřit, zda levnější nebo jiný model stále dosahuje požadované kvality.
Naopak nepřináší velkou hodnotu pro jednorázový prompt nebo problém bez dat a bez metriky. V takovém případě optimizer nemá podle čeho rozlišit lepší variantu a přidává jen další abstrakci a náklady na LLM volání.
Kvalita optimalizace je přímo závislá na kvalitě metriky a reprezentativnosti dat. Špatně navržená metrika může optimalizovat nežádoucí chování nebo vést k přizpůsobení příliš úzké sadě příkladů. Hodnocení proto patří na oddělená data a musí zahrnovat i provozní požadavky, zejména cenu a latenci.
DSPy také nenahrazuje integrační a orchestration vrstvu aplikace. Pro řízení stavu, napojení systémů, UI nebo rozsáhlé agentní workflow může být jednou součástí řešení vedle běžného Pythonu či jiného orchestration frameworku.