Ce este DSPy (Declarative Self-improving Python)?

Framework Python de la Stanford NLP în care descrii sarcinile prin semnături și module, iar optimizatorii ajustează automat instrucțiunile și exemplele după o metrică.

Denumire completă

Framework Python: semnături (Signature), module (Predict, ChainOfThought, ReAct) și optimizatori (GEPA, MIPROv2, BootstrapFewShot)

DSPy (Declarative Self-improving Python, după README-ul proiectului) este un framework Python dezvoltat la Stanford NLP. În loc să scrii prompturi lungi de mână, descrii ce intră și ce iese dintr-un pas (o semnătură), alegi un modul care o execută și lași un optimizator să caute instrucțiunile și exemplele care maximizează o metrică.

Proiectul vine din Demonstrate-Search-Predict (Khattab et al., decembrie 2022). Lucrarea „DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines” (Khattab et al., octombrie 2023) a arătat că pipeline-uri DSPy compilate automat au depășit few-shot prompting obișnuit, în general cu peste 25% la GPT-3.5 și cu peste 65% la llama2-13b-chat, pe sarcinile din lucrare.

Versiunea curentă din documentația oficială (dspy.ai) este 3.4.1; instalarea se face cu pip install -U dspy. Pentru API-ul detaliat vezi și secțiunea DSPy.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
dspy.LM / dspy.configure dspy.LM("furnizor/model") creează clientul pentru model; dspy.configure(lm=lm) îl setează ca model implicit pentru toate modulele.
dspy.Signature Descrierea declarativă a intrărilor și ieșirilor: ca șir ("question -> answer") sau ca clasă cu câmpuri dspy.InputField și dspy.OutputField. Docstring-ul clasei devine descrierea sarcinii.
dspy.Module Strategia care execută semnătura: dspy.Predict, dspy.ChainOfThought, dspy.ReAct, dspy.ProgramOfThought, dspy.Refine, dspy.BestOfN și altele. Modulele proprii moștenesc dspy.Module și definesc forward().
Optimizatori Algoritmi care ajustează instrucțiunile și/sau exemplele (în codul vechi apar sub numele de teleprompters): GEPA, MIPROv2, BootstrapFewShot, BootstrapFewShotWithRandomSearch, COPRO, SIMBA, BootstrapFinetune și alții.
Metrică Funcție Python care primește exemplul și predicția și returnează un scor; prin convenție, între 0.0 și 1.0. Optimizatorul are nevoie de metrică și de exemple de antrenare.

Exemple practice și scenarii reale

Exemplul 1: Semnătură, modul și apel

Modelul din dspy.LM este cel din exemplul de pe dspy.ai; poți folosi orice model acceptat.

import dspy

lm = dspy.LM("openai/gpt-5.4-nano")
dspy.configure(lm=lm)

class IntrebareRaspuns(dspy.Signature):
    """Răspunde la întrebare folosind doar contextul dat."""
    context: str = dspy.InputField(desc="fragmente din documente")
    intrebare: str = dspy.InputField()
    raspuns: str = dspy.OutputField(desc="răspuns scurt, în română")

qa = dspy.ChainOfThought(IntrebareRaspuns)
rezultat = qa(context="...", intrebare="...")
print(rezultat.raspuns)

Exemplul 2: Optimizarea cu o metrică

trainset este o listă de dspy.Example(...).with_inputs("context", "intrebare"). BootstrapFewShot alege exemple demonstrative care trec metrica; GEPA și MIPROv2 rescriu și instrucțiunile.

def potrivire_exacta(example, pred, trace=None):
    return float(example.raspuns.strip().lower() == pred.raspuns.strip().lower())

optimizator = dspy.BootstrapFewShot(metric=potrivire_exacta)
qa_optimizat = optimizator.compile(qa, trainset=trainset)

Greșeli frecvente și capcane

  • Pornești optimizarea fără o metrică clară și fără un set de evaluare separat. Optimizatorul maximizează exact metrica dată; dacă ea măsoară altceva decât vrei, programul va fi optimizat pentru lucrul greșit.
  • Copiezi cod din tutoriale vechi. Numele s-au schimbat între versiuni (teleprompters au devenit optimizers), iar modelul se configurează acum cu dspy.LM și dspy.configure.
  • Consideri că optimizarea înlocuiește testarea. Programul optimizat trebuie evaluat pe date pe care optimizatorul nu le-a văzut.

Noțiuni și module înrudite

Învață AI • Comunitate & Q&A

Întrebări & Discuții: DSPy (Declarative Self-improving Python)

Ai o întrebare despre DSPy (Declarative Self-improving Python) sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!

🤖

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.

Comunitate AI Adaugă o întrebare sau distribuie un cod / prompt

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.