use crate::monitor::llm::{EvalResult, LLMMetrics, LLMStats, PromptVersion, Result};
pub trait LLMEvaluator: Send + Sync {
fn evaluate_response(
&self,
prompt: &str,
response: &str,
reference: Option<&str>,
) -> Result<EvalResult>;
fn log_llm_call(&mut self, run_id: &str, metrics: LLMMetrics) -> Result<()>;
fn track_prompt(&mut self, run_id: &str, prompt: &PromptVersion) -> Result<()>;
fn get_metrics(&self, run_id: &str) -> Result<Vec<LLMMetrics>>;
fn get_prompts(&self, run_id: &str) -> Result<Vec<PromptVersion>>;
fn get_stats(&self, run_id: &str) -> Result<LLMStats>;
}