Module eval

Source
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/attempts
  • count: 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.