scouter_evaluate/tasks/
traits.rs1use crate::error::EvaluationError;
2
3use scouter_types::genai::{traits::TaskRef, AssertionResult};
4use serde_json::Value;
5use std::fmt::Debug;
6
7pub trait EvaluationTask: Debug + Send + Sync {
8 fn execute(&self, context: &Value) -> Result<AssertionResult, EvaluationError>;
14}
15
16pub trait EvaluateTaskMut {
18 fn evaluate_task(&self, context: &Value) -> Result<AssertionResult, EvaluationError>;
19}
20
21impl EvaluateTaskMut for TaskRef<'_> {
22 fn evaluate_task(&self, context: &Value) -> Result<AssertionResult, EvaluationError> {
23 let result = match self {
24 TaskRef::Assertion(assertion) => assertion.execute(context)?,
25 TaskRef::LLMJudge(judge) => judge.execute(context)?,
26 };
27 Ok(result)
28 }
29}