LLM Evaluation Frameworks 2026: Σύγκριση Promptfoo, DeepEval, Braintrust και Ragas

Αναλυτική σύγκριση των Promptfoo, DeepEval, Braintrust και Ragas για αξιολόγηση LLM το 2026, με metrics, LLM-as-a-judge, CI/CD integration και πραγματικά κόστη.

LLM Evaluation Frameworks 2026: Σύγκριση

Ενημερώθηκε: 20 Ιουλίου 2026

Το καλύτερο LLM evaluation framework για το 2026 εξαρτάται από τη ροή εργασίας σου: Promptfoo για γρήγορα regression tests μέσω YAML και CLI, DeepEval όταν θέλεις pytest-native assertions, Braintrust για ομάδες που χρειάζονται managed UI και πειραματισμούς, και Ragas όταν αξιολογείς RAG pipelines με metrics όπως faithfulness και context precision. Έχω τρέξει και τα τέσσερα σε production. Το άρθρο εξηγεί ποιο ταιριάζει σε ποια περίπτωση, με κώδικα και πραγματικά νούμερα κόστους.

  • Το Promptfoo είναι open source, τρέχει τοπικά χωρίς backend και είναι το πιο γρήγορο για prompt regression σε CI.
  • Το DeepEval ενσωματώνεται με pytest και προσφέρει 14+ έτοιμα metrics, συμπεριλαμβανομένων G-Eval και hallucination detection.
  • Το Braintrust είναι hosted πλατφόρμα με ισχυρό UI για πειράματα, αλλά έχει κόστος συνδρομής από $249/μήνα για ομάδες.
  • Το Ragas είναι εξειδικευμένο για RAG με metrics όπως faithfulness, answer relevancy και context recall (δεν αντικαθιστά τα γενικά frameworks).
  • LLM-as-a-judge προσθέτει $0.01–$0.05 ανά test case όταν χρησιμοποιείς GPT-4o ή Claude Sonnet 4.5 ως κριτή, οπότε υπολόγισε το κόστος πριν το CI.
  • Το να ξεκινήσεις με 20–50 golden test cases είναι πιο σημαντικό από την επιλογή framework.

Γιατί χρειάζεσαι evals πριν το deploy

Έχω γράψει και παλιότερα ότι μια στρώση αξιολόγησης είναι πιο σημαντική από την επιλογή μοντέλου, και το εννοώ ακόμα περισσότερο το 2026. Χωρίς ένα δομημένο eval pipeline, κάθε αλλαγή στο prompt είναι στοίχημα. Δεν ξέρεις αν η βελτίωση σε ένα edge case δεν έσπασε πέντε άλλα. Έχω δει ομάδες να ανακαλύπτουν regression δύο εβδομάδες μετά το deploy, όταν οι χρήστες άρχισαν να παραπονιούνται για hallucinations σε αιτήματα που δούλευαν πριν.

Ένα LLM evaluation framework σού δίνει τρία πράγματα: (1) ένα reproducible σύνολο test cases που τρέχει σε κάθε PR, (2) metrics που μεταφράζουν subjective quality σε αριθμούς, και (3) μια ιστορική βάση για regression testing. Αν χρησιμοποιείς ήδη LLM observability tooling για να παρακολουθείς production traces, τα evals είναι το συμπληρωματικό κομμάτι που βλέπει τι θα συμβεί πριν το merge, όχι μετά.

Η κρίσιμη διάκριση είναι απλή: observability = τι έγινε ζωντανά, evaluation = τι θα γίνει αν αλλάξω αυτό το prompt. Χρειάζεσαι και τα δύο, αλλά με διαφορετικά εργαλεία και διαφορετική νοοτροπία. Το evaluation είναι deterministic (ή τουλάχιστον στατιστικά σταθερό), τρέχει σε γνωστά inputs, και παράγει pass/fail signals που μπλοκάρουν deploys.

Πίνακας σύγκρισης frameworks

Παρακάτω η βασική σύγκριση για τις διαστάσεις που πραγματικά σε ενδιαφέρουν όταν επιλέγεις. Οι τιμές αντικατοπτρίζουν τις εκδόσεις που ήταν διαθέσιμες τον Ιούλιο 2026.

Χαρακτηριστικό Promptfoo DeepEval Braintrust Ragas
LicenseMIT (open source)Apache 2.0 (open source)Proprietary (freemium)Apache 2.0 (open source)
InterfaceCLI + YAML + web UIPython + pytestHosted UI + SDKPython API
Έτοιμα metrics25+ assertions14+ metricsCustom + built-in10 RAG-specific
LLM-as-a-judgeΝαι (llm-rubric)Ναι (G-Eval)Ναι (autoevals)Ναι (default judge)
RAG evaluationΒασικόΚαλό (contextual metrics)Καλό (custom)Εξαιρετικό (εξειδίκευση)
Local-firstΝαι (χωρίς backend)Ναι (με optional cloud)Όχι (cloud-only)Ναι
Κόστος (paid tier)ΔωρεάνConfident AI από $80/μήναΑπό $249/μήνα ομάδαΔωρεάν
Ιδανικό γιαPrompt regression σε CIPytest-based codebasesΟμάδες με UI needsRAG faithfulness

Promptfoo: το CLI-first εργαλείο για prompt regression

Το Promptfoo είναι η πρώτη μου επιλογή όταν θέλω γρήγορο prompt regression testing χωρίς να χρειαστεί να στήσω infrastructure. Είναι Node CLI, τρέχει τοπικά, και όλες οι test suites γράφονται σε YAML. Αυτό σημαίνει ότι μπορείς να τις κάνεις commit στο repo και να τις τρέξεις σε GitHub Actions χωρίς external service.

Ένα ελάχιστο promptfooconfig.yaml μοιάζει έτσι:

description: "Customer support classifier eval"

prompts:
  - "Classify this support ticket: {{ticket}}. Categories: billing, technical, feature_request."

providers:
  - openai:gpt-4o-mini
  - anthropic:claude-haiku-4-5

tests:
  - vars:
      ticket: "My card was charged twice for the same order"
    assert:
      - type: contains
        value: "billing"
      - type: llm-rubric
        value: "The response identifies this as a billing issue and does not add speculation."

  - vars:
      ticket: "The dashboard shows 500 error when I click Export"
    assert:
      - type: contains
        value: "technical"
      - type: latency
        threshold: 3000

Τρέχεις npx promptfoo eval και βλέπεις pass/fail matrix ανά prompt-provider-test συνδυασμό. Το llm-rubric είναι το built-in judge· από default χρησιμοποιεί GPT-4o αλλά μπορείς να το ρυθμίσεις να χρησιμοποιεί οποιοδήποτε μοντέλο. Το κόστος ανά rubric assertion είναι περίπου $0.01–$0.03.

Το μειονέκτημα: όταν οι test suites ξεπεράσουν τα 200 cases, το YAML γίνεται δύσκολο να διαχειριστείς. Έχω δει suites των 800+ tests όπου η ομάδα κατέληξε να γράψει Python scripts που παράγουν το YAML. Σε εκείνο το σημείο, το DeepEval ή το Braintrust είναι καλύτερη επιλογή.

DeepEval: pytest-native LLM testing

Το DeepEval έρχεται από την Confident AI και είναι σχεδιασμένο για ομάδες που ήδη γράφουν Python και pytest. Αντί για YAML, τα evals είναι απλά pytest functions με custom assertions. Αυτό σημαίνει ότι μπορείς να τρέξεις pytest test_llm.py ακριβώς όπως τρέχεις τα υπόλοιπα tests σου, και τα CI logs φαίνονται φυσιολογικά.

from deepeval import assert_test
from deepeval.metrics import GEval, HallucinationMetric, AnswerRelevancyMetric
from deepeval.test_case import LLMTestCase, LLMTestCaseParams

def test_summary_faithfulness():
    correctness = GEval(
        name="Factual Correctness",
        criteria="Determine if the summary contains only facts present in the source document.",
        evaluation_params=[LLMTestCaseParams.INPUT, LLMTestCaseParams.ACTUAL_OUTPUT],
        threshold=0.8,
        model="gpt-4o",
    )

    relevancy = AnswerRelevancyMetric(threshold=0.7)

    test_case = LLMTestCase(
        input="Summarize: 'Company X reported Q2 revenue of $1.2B, up 15% YoY.'",
        actual_output=my_llm_summarize(...),  # your app under test
    )

    assert_test(test_case, [correctness, relevancy])

Το DeepEval έχει 14+ built-in metrics: AnswerRelevancyMetric, FaithfulnessMetric, ContextualPrecisionMetric, HallucinationMetric, BiasMetric, ToxicityMetric και άλλα. Το GEval είναι ουσιαστικά ένα configurable LLM judge με chain-of-thought reasoning για πιο συνεπείς βαθμολογίες.

Το tradeoff: το DeepEval κάνει πολλά LLM calls ανά test (ένα ή περισσότερα για κάθε metric), οπότε τα κόστη ανεβαίνουν γρήγορα. Ένα test με 4 metrics και GPT-4o judge κοστίζει περίπου $0.04–$0.10. Πολλαπλασίασέ το με 200 tests και δύο runs την ημέρα και μιλάμε για $50–$200/μήνα σε judge costs μόνο. Χρησιμοποίησε Claude Haiku 4.5 ή GPT-4o mini ως judge για τα λιγότερο κρίσιμα metrics.

Braintrust: managed πλατφόρμα για ομάδες

Το Braintrust ξεχωρίζει επειδή είναι πλατφόρμα, όχι απλώς library. Παίρνεις hosted playground για prompt iteration, experiment tracking UI για να συγκρίνεις runs, και integrated data versioning για τα golden datasets. Αν η ομάδα σου έχει non-engineer product managers ή domain experts που πρέπει να ελέγξουν LLM outputs, το UI του Braintrust κάνει πολύ διαφορά.

Το SDK είναι Python (και TypeScript):

import braintrust
from autoevals import Factuality, Levenshtein

project = braintrust.init(project="support-classifier")

def classify(input):
    return my_llm_classify(input)  # your app under test

experiment = braintrust.Eval(
    "support-classifier",
    data=lambda: [
        {"input": "My card was charged twice", "expected": "billing"},
        {"input": "Dashboard shows 500 error", "expected": "technical"},
    ],
    task=classify,
    scores=[Factuality, Levenshtein],
)

Κάθε Eval run αποθηκεύεται στην πλατφόρμα και μπορείς να συγκρίνεις δύο runs side-by-side στο UI. Αυτό είναι πολύτιμο όταν αλλάζεις prompt και θέλεις να δεις ακριβώς ποια test cases βελτιώθηκαν και ποια χάλασαν.

Το κόστος είναι το μεγάλο μειονέκτημα: το free tier περιορίζεται σε ένα project και limited traces. Το team tier ξεκινά από $249/μήνα και το enterprise είναι custom. Για solo devs ή μικρές ομάδες το Promptfoo κάνει το 80% της δουλειάς δωρεάν. Για εταιρείες με 5+ ML engineers που κάνουν καθημερινή prompt iteration, το Braintrust αξίζει.

Ragas: εξειδικευμένα metrics για RAG

Το Ragas δεν είναι εναλλακτικό των παραπάνω. Είναι συμπληρωματικό, ειδικά αν χτίζεις RAG pipelines. Επικεντρώνεται σε metrics που έχουν νόημα για retrieval-augmented generation:

  • Faithfulness: Ταιριάζει η απάντηση με τα ανακτηθέντα documents; (Πιάνει hallucinations.)
  • Answer Relevancy: Απαντά στην ερώτηση του χρήστη ή αποκλίνει;
  • Context Precision: Είναι τα ανακτηθέντα chunks όντως σχετικά με το query;
  • Context Recall: Ανακτήθηκαν όλα τα σχετικά chunks που υπάρχουν στο ground truth;
  • Answer Similarity: Semantic similarity μεταξύ generated και reference answer.

Αν έχεις ήδη διαβάσει τον οδηγό μου για RAG pipelines με Python, το Ragas είναι το εργαλείο που δίνει αριθμό στο ερώτημα "βελτίωσα πραγματικά το retrieval;". Χωρίς αυτό, βασίζεσαι σε eyeballing outputs, που δεν κλιμακώνει. Έφτασα σε αυτό το σημείο στο δικό μου project μετά από περίπου την τρίτη ή τέταρτη αλλαγή chunking, όταν κατάλαβα ότι δεν είχα αντικειμενικό τρόπο να πω "καλύτερα".

from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision, context_recall
from datasets import Dataset

dataset = Dataset.from_dict({
    "question": ["What is the return policy?"],
    "answer": ["You can return items within 30 days of purchase."],
    "contexts": [["Returns are accepted within 30 days...", "Damaged items..."]],
    "ground_truth": ["30-day return window for unopened items."],
})

result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevancy, context_precision, context_recall],
)

print(result)
# {'faithfulness': 0.95, 'answer_relevancy': 0.89, 'context_precision': 0.85, 'context_recall': 0.90}

Πώς λειτουργεί το LLM-as-a-Judge

Όλα τα σοβαρά eval frameworks του 2026 στηρίζονται σε LLM-as-a-judge για κρίσεις που δεν έχουν deterministic answer. Για παράδειγμα, "είναι αυτή η απάντηση ευγενική;" ή "εξηγεί σωστά την πολιτική επιστροφών;". Ένα δεύτερο, συνήθως πιο ισχυρό μοντέλο, βαθμολογεί την έξοδο του πρώτου βάσει ενός rubric. Η ακαδημαϊκή βάση αυτής της τεχνικής περιγράφεται καλά στο "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena", το paper που ουσιαστικά την καθιέρωσε.

Οι κοινές παγίδες που έχω δει:

  • Position bias: όταν συγκρίνεις δύο απαντήσεις, το LLM τείνει να προτιμά τη δεύτερη. Λύση: τρέχεις τη σύγκριση δύο φορές με ανεστραμμένη σειρά.
  • Verbosity bias: τα LLM κριτές βαθμολογούν υψηλότερα τις μακρύτερες απαντήσεις. Λύση: πρόσθεσε ρητά στο rubric να αγνοήσει το μήκος.
  • Self-preference bias: το GPT-4o προτιμά GPT outputs, το Claude προτιμά Claude outputs. Λύση: χρησιμοποίησε τρίτο μοντέλο ως judge, ή average πολλαπλών judges.

Για κρίσιμα evals, τρέξε τον judge 3 φορές και πάρε τη διάμεσο. Μειώνει το noise από stochastic outputs. Το κόστος τριπλασιάζεται, αλλά η σταθερότητα των metrics αξίζει τον κόπο.

Πώς επιλέγεις framework για την περίπτωσή σου

Ξεκίνα από το πώς δουλεύει η ομάδα σου, όχι από τα features. Έτσι το είχα κάνει και εγώ την πρώτη φορά, με τη λάθος σειρά, και κατέληξα να αλλάξω framework μέσα σε δύο μήνες. Ας σου το γλιτώσω.

Solo dev ή μικρή ομάδα (1–3 άτομα)

Χρησιμοποίησε Promptfoo. Δωρεάν, γρήγορο setup, YAML στο git repo. Πρόσθεσε Ragas αν έχεις RAG pipeline. Δεν χρειάζεσαι hosted UI· τα HTML reports του Promptfoo είναι αρκετά.

Python-heavy engineering team με CI/CD

Χρησιμοποίησε DeepEval. Ενσωματώνεται φυσικά με pytest, χρησιμοποιείς τους ίδιους runners με τα unit tests, και τα GitHub Actions logs είναι consistent. Πρόσθεσε Ragas αν κάνεις RAG.

Ομάδα με PM/domain experts στο loop

Χρησιμοποίησε Braintrust. Το UI για comparison και annotation είναι δύσκολο να αναπαραχθεί με open-source. Το κόστος δικαιολογείται όταν non-technical stakeholders συμμετέχουν στην αξιολόγηση.

Καθαρή RAG εφαρμογή

Χρησιμοποίησε Ragas ως πρωταρχικό, με Promptfoo ή DeepEval ως wrapper για CI orchestration.

Ενσωμάτωση στο CI/CD pipeline

Το eval framework είναι άχρηστο αν δεν τρέχει αυτόματα. Παρακάτω ένα GitHub Actions workflow που τρέχει Promptfoo σε κάθε PR και μπλοκάρει το merge αν η pass rate πέσει κάτω από 90%:

name: LLM Evals
on: [pull_request]

jobs:
  eval:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: "20"

      - name: Run Promptfoo eval
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          npx promptfoo@latest eval \
            --config promptfooconfig.yaml \
            --output results.json

      - name: Enforce pass threshold
        run: |
          PASS_RATE=$(jq '.results.stats.successes / (.results.stats.successes + .results.stats.failures) * 100' results.json)
          echo "Pass rate: $PASS_RATE%"
          if (( $(echo "$PASS_RATE < 90" | bc -l) )); then
            echo "Pass rate below 90% threshold, failing build"
            exit 1
          fi

      - name: Upload results
        uses: actions/upload-artifact@v4
        with:
          name: eval-results
          path: results.json

Για DeepEval, το ισοδύναμο είναι απλό pytest tests/llm/ --junit-xml=results.xml, και το CI χειρίζεται τα assertions εξαρχής. Για Braintrust, το SDK στέλνει τα results στην πλατφόρμα και μπορείς να στήσεις webhooks για alerts.

Πόσο κοστίζουν πραγματικά τα evals

Το κρυφό κόστος των evals δεν είναι το framework· είναι οι LLM judge calls. Δες ένα ρεαλιστικό breakdown για μια ομάδα που τρέχει 150 test cases, δύο runs την ημέρα, με 3 metrics ανά test:

  • 150 tests × 2 runs × 3 metrics = 900 judge calls/ημέρα
  • Μέσο input ~600 tokens, output ~150 tokens
  • GPT-4o judge: ~$0.005/call → ~$135/μήνα
  • Claude Sonnet 4.5 judge: ~$0.006/call → ~$162/μήνα
  • Claude Haiku 4.5 judge (για μη-κρίσιμα): ~$0.001/call → ~$27/μήνα

Στρατηγική που δουλεύει: χρησιμοποίησε το φθηνό μοντέλο (Haiku 4.5, GPT-4o mini) για screening. Αν το test πέρασε, τέλος. Αν απέτυχε, escalate σε GPT-4o ή Claude Sonnet 4.5 για δεύτερο confirmation. Έτσι κόβεις το κόστος judge κατά ~70% χωρίς να χάσεις precision.

Επίσης, εξέτασε τη διαφορά ανάμεσα σε full eval suite (τρέχει nightly ή σε release branches) και smoke eval subset (τρέχει σε κάθε PR). 20–30 critical test cases σε κάθε PR είναι υπερ-αρκετό για να πιάσεις regressions. Ο πλήρης έλεγχος γίνεται σπανιότερα.

Ειδική περίπτωση: evaluation του function calling

Για apps που στηρίζονται σε function calling, τα κοινά metrics δεν φτάνουν. Χρειάζεσαι test cases που ελέγχουν:

  1. Tool selection accuracy: επέλεξε το σωστό tool από τα διαθέσιμα;
  2. Argument correctness: τα arguments που πέρασε ταιριάζουν με το schema και το user intent;
  3. No-op detection: όταν δεν χρειάζεται tool call, αποφεύγει να καλέσει άσκοπα;

Και τα τρία frameworks υποστηρίζουν custom assertions που μπορούν να ελέγξουν το tool call JSON output. Στο Promptfoo, χρησιμοποιείς type: is-json και type: javascript για custom logic. Στο DeepEval, γράφεις custom metric class. Στο Braintrust, custom scorer function. Είναι σχετικά εύκολο σε όλα, απλά χρειάζεται να το γράψεις. Δεν είναι out of the box.

Συχνές Ερωτήσεις

Ποιο είναι το καλύτερο LLM evaluation framework για το 2026;

Δεν υπάρχει καθολικό "καλύτερο". Για γρήγορο prompt regression χωρίς backend, Promptfoo. Για pytest-native codebases, DeepEval. Για ομάδες με UI needs και budget, Braintrust. Για RAG-specific evaluation, Ragas. Οι περισσότερες ώριμες ομάδες τρέχουν συνδυασμό δύο εργαλείων.

Τι είναι το LLM-as-a-judge και είναι αξιόπιστο;

LLM-as-a-judge σημαίνει να χρησιμοποιείς ένα μοντέλο (συνήθως πιο ισχυρό) για να βαθμολογήσει το output ενός άλλου μοντέλου. Είναι αξιόπιστο αν αποφύγεις position bias, verbosity bias, self-preference bias, και τρέξεις τον judge πολλαπλές φορές για κρίσιμα cases. Δεν αντικαθιστά την human evaluation, αλλά την κλιμακώνει.

Πόσα test cases χρειάζομαι για να ξεκινήσω evals;

Ξεκίνα με 20–50 κρίσιμα test cases που καλύπτουν τις κύριες use cases και τα γνωστά edge cases. Ένα μικρό αλλά επιμελημένο golden dataset είναι πιο χρήσιμο από 500 αυτόματα generated cases. Επέκτεινε όταν βρεις regressions που δεν πιάνει το τρέχον set.

Μπορώ να συνδυάσω Promptfoo και Ragas;

Ναι, και είναι συνηθισμένο pattern για RAG apps. Χρησιμοποιείς Promptfoo για prompt regression σε non-RAG parts (system prompts, formatting), και Ragas για metrics ειδικά του retrieval και generation quality του RAG pipeline. Και τα δύο τρέχουν στο ίδιο CI job.

Πόσο κοστίζουν τα LLM evals μηνιαία;

Ενδεικτικά, 150 tests × 2 runs/ημέρα × 3 metrics με GPT-4o judge κοστίζει περίπου $135/μήνα. Με Claude Haiku 4.5 ως judge πέφτει στα ~$27/μήνα. Χρησιμοποίησε φθηνό μοντέλο για screening και escalate σε πιο ισχυρό μόνο για failed tests για να μειώσεις το κόστος κατά ~70%.

Daichi Watanabe
Σχετικά με τον Συγγραφέα Daichi Watanabe

LLM integration specialist with a strong opinion about function calling and an even stronger one about evaluations.