entrenar/monitor/llm/mod.rs
1//! LLM Evaluation Metrics Module (#71)
2//!
3//! Direct observation of LLM behavior through comprehensive metrics tracking.
4//!
5//! # Toyota Way: 現地現物 (Genchi Genbutsu)
6//!
7//! "Go and see" - Direct observation of LLM behavior through metrics enables
8//! data-driven decisions about prompt engineering and model selection.
9//!
10//! # Example
11//!
12//! ```ignore
13//! use entrenar::monitor::llm::{LLMMetrics, PromptVersion, EvalResult, InMemoryLLMEvaluator};
14//!
15//! let mut evaluator = InMemoryLLMEvaluator::new();
16//!
17//! // Track prompt version
18//! let prompt = PromptVersion::new("Summarize: {text}", vec!["text".to_string()]);
19//! evaluator.track_prompt("run-1", &prompt)?;
20//!
21//! // Log LLM call metrics
22//! let metrics = LLMMetrics::new("gpt-4")
23//! .with_tokens(100, 50)
24//! .with_latency(1500.0);
25//! evaluator.log_llm_call("run-1", metrics)?;
26//!
27//! // Evaluate response quality
28//! let result = evaluator.evaluate_response("What is 2+2?", "4", Some("4"))?;
29//! ```
30
31mod error;
32mod eval_result;
33pub mod heuristics;
34mod memory_evaluator;
35mod metrics;
36mod prompt;
37pub mod stats;
38mod traits;
39
40#[cfg(test)]
41mod tests;
42
43// Re-export all public types for API compatibility
44pub use error::{LLMError, Result};
45pub use eval_result::EvalResult;
46pub use memory_evaluator::InMemoryLLMEvaluator;
47pub use metrics::LLMMetrics;
48pub use prompt::{PromptId, PromptVersion};
49pub use stats::LLMStats;
50pub use traits::LLMEvaluator;