dspy.Evaluate: scorul unui program pe un set de date în DSPy & Programare Algoritmică LLM

dspy.Evaluate rulează un program pe un set de exemple, în paralel, aplică metrica fiecărei predicții și întoarce scorul agregat și rezultatele pe exemplu.

Sintaxă & invocare
evaluate = dspy.Evaluate(devset=devset, metric=metrica, num_threads=8)
rezultat = evaluate(program)

dspy.Evaluate primește doar argumente cu nume: devset, metric și opțiunile de rulare. Apelul evaluate(program) rulează program(**example.inputs()) pentru fiecare exemplu, în paralel, și cheamă metrica cu exemplul și predicția. Setările din dspy.context se aplică și în firele de lucru, deci același evaluator poate compara mai multe modele.

Rezultatul este un EvaluationResult: .score este procentul de răspunsuri True (pentru metrici booleene) sau media scorurilor (pentru float și dspy.Prediction(score=...)), iar .results este lista de triplete (example, prediction, score). Argumentele vechi return_outputs și return_all_scores au fost eliminate și ridică ValueError.

Dacă metrica aruncă o excepție sau întoarce None, exemplul primește failure_score (implicit 0.0) și evaluarea continuă; max_errors oprește rularea după prea multe erori. Ghidul DSPy recomandă o evaluare de bază (baseline) înainte de orice optimizare, ca să ai un scor de comparat.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
devset Lista de dspy.Example cu intrările marcate.
metric Funcția de scor; poate fi dată și la apel.
num_threads Numărul de fire pentru rularea în paralel.
display_progress Implicit False; afișează bara de progres.
display_table False (implicit), True sau un număr de rânduri de afișat.
max_errors / provide_traceback Limita de erori tolerate și afișarea traceback-ului.
failure_score Scorul pus când metrica eșuează; implicit 0.0.
save_as_csv / save_as_json Salvează rezultatele pe exemplu într-un fișier.
EvaluationResult.score / .results Scorul agregat (procent) și tripletele (example, prediction, score).

Exemple practice și scenarii reale

Exemplul 1: Scorul de bază al unui program

import dspy
from dspy.evaluate import answer_exact_match

dspy.configure(lm=dspy.LM("openai/gpt-6-luna"))
program = dspy.ChainOfThought("question -> answer")
# val: listă de dspy.Example(question=..., answer=...).with_inputs("question")

evaluate = dspy.Evaluate(
    devset=val,
    metric=answer_exact_match,
    num_threads=8,
    display_progress=True,
    display_table=5,
)
rezultat = evaluate(program)
print(rezultat.score)

Exemplul 2: Același program pe două modele

for lm in [dspy.LM("openai/gpt-6-luna"), dspy.LM("anthropic/claude-sonnet-5-5")]:
    with dspy.context(lm=lm):
        print(lm.model, evaluate(program).score)

Exemplul 3: Exemplele ratate

for example, pred, scor in rezultat.results:
    if not scor:
        print(example.question, "->", pred.answer, "| corect:", example.answer)

Greșeli frecvente și capcane

  • Măsori scorul pe setul de antrenare al optimizatorului. Scorul real se măsoară pe un set de test separat.
  • Ignori failure_score. O metrică ce aruncă excepții la fiecare exemplu dă scorul 0 fără să oprească rularea; verifică cu provide_traceback=True sau display_table.
  • Rulezi evaluarea de două ori și te aștepți la variație. Cache-ul este activ implicit, deci apelurile identice întorc același răspuns.
  • Folosești return_outputs=True din tutoriale vechi. Citește în schimb rezultat.results.

Noțiuni și module înrudite

Învață AI • Comunitate & Q&A

Întrebări & Exemple practice: dspy.Evaluate: scorul unui program pe un set de date

Ai o întrebare despre dspy.Evaluate: scorul unui program pe un set de date 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.