lc_evaluation/lib.rs
1#![warn(missing_docs)]
2//! Evaluation module — LLM application evaluation
3//!
4//! Provides the `Evaluator` / `PairwiseEvaluator` traits, built-in evaluators, dataset loading,
5//! and a batch runner, for quantifying the effect of prompt/model changes.
6//!
7//! Core types:
8//! - `EvalError` / `Score` / `Example` / `Dataset` / `Evaluator` / `Predictor`
9//! - `PairwiseEvaluator` (pairwise comparison, a first-class citizen alongside pointwise, P1-1)
10//! - `EvalRunner` and the `Report` (with original text + stddev + failure list)
11//! - built-in evaluators: `ExactMatch` / `StringDistance` / `EmbeddingSimilarity` / `LLMAsJudge`
12//! - other evaluators: `Bleu` / `Faithfulness` / `PairwiseJudge` / `ContainsKeyword` / `RegexMatch`
13//!
14//! # Example
15//! ```ignore
16//! use lc_evaluation::{EvalRunner, ExactMatch, StringDistance, Dataset, Example};
17//! let dataset = Dataset::new(vec![Example::new("2+2?", "4")]);
18//! let runner = EvalRunner::new(vec![Box::new(ExactMatch), Box::new(StringDistance)]);
19//! // let report = runner.run(&dataset, &predictor).await?;
20//! ```
21
22mod bleu;
23mod criteria;
24mod export;
25mod faithfulness;
26mod pairwise;
27pub mod price;
28mod ragas;
29mod results;
30mod rules;
31mod runner;
32
33pub use price::{OverallCost, Price, PriceBook, TokenUsage};
34
35#[cfg(test)]
36mod test_support;
37
38pub use bleu::Bleu;
39pub use criteria::{
40 Dataset, EvalError, Evaluator, Example, PairwiseEvaluator, Predictor, RagEvaluator, Score,
41};
42pub use faithfulness::Faithfulness;
43pub use pairwise::{PairwiseJudge, Verdict};
44pub use ragas::{AnswerRelevancy, ContextPrecision, ContextRecall};
45pub use results::{EmbeddingSimilarity, ExactMatch, LLMAsJudge, StringDistance};
46pub use rules::{ContainsKeyword, LengthCheck, RegexMatch};
47pub use runner::{EvalRunner, ExampleReport, FailureRecord, Report, ScoreSummary};
48
49#[cfg(test)]
50mod integration_tests;