Expand description
Evaluation scoring and statistics for AIMX expressions.
This module provides the Eval type, which represents evaluation scoring
statistics used in agentic workflow applications. An Eval value tracks
success counts and total attempts, enabling statistical analysis of workflow
performance, inference accuracy, and task completion rates.
§Overview
The Eval struct maintains two counters:
score: Number of successful evaluations/attemptscount: Total number of evaluations/attempts
This enables calculation of success rates and statistical metrics for workflow performance monitoring and optimization.
§Usage
use aimx::values::Eval;
use aimx::Value;
// Create an evaluation with 3 successes out of 5 attempts
let eval_value = Eval::new(3, 5);
assert!(eval_value.is_eval());
// To access the inner Eval struct, match on the Value::Eval variant
if let Value::Eval(eval) = &eval_value {
// Record additional results
let passed = eval.set_pass(); // Increments both score and count
let failed = eval.set_fail(); // Increments count only
// Calculate success rate
let success_rate = eval.score(); // Returns Value::Literal(Literal::Number(0.6))
}§Integration
Eval values are integrated into the AIMX expression system as crate::value::Value::Eval
variants. They can be parsed from strings, evaluated in contexts, and formatted
for display like any other AIMX value.
§Examples
§Parsing Evaluation Values
use aimx::values::parse_eval;
let input = "7, 10";
let (remaining, eval_value) = parse_eval(input).unwrap();
assert!(remaining.is_empty());
assert!(eval_value.is_eval());§Using in Expressions
use aimx::{values::Eval, evaluate::ExpressionLike, context::Context};
let eval = Eval::new(8, 10);
let mut context = Context::new();
let result = eval.evaluate(&mut context).unwrap();
assert!(result.is_eval());§Statistical Analysis
use aimx::values::Eval;
use aimx::Value;
// Track performance over multiple iterations
let eval_value = Eval::new(0, 0);
// Simulate some results (this is just an example)
// We need to extract the Eval struct to call its methods
let eval_value = if let Value::Eval(eval) = &eval_value {
eval.set_pass() // 1/1
} else {
panic!("Expected Eval value");
};
let eval_value = if let Value::Eval(eval) = &eval_value {
eval.set_pass() // 2/2
} else {
panic!("Expected Eval value");
};
let eval_value = if let Value::Eval(eval) = &eval_value {
eval.set_fail() // 2/3
} else {
panic!("Expected Eval value");
};
// Get success rate (2/3 = 0.666...)
let success_rate = if let Value::Eval(eval) = &eval_value {
eval.score()
} else {
panic!("Expected Eval value");
};
assert!(success_rate.is_number());Structs§
- Eval
- Evaluation scoring statistics for workflow performance tracking.
Functions§
- parse_
eval - Parse an evaluation value from string input.