Package com.tnsai.eval.hooks
Class EvalContext
java.lang.Object
com.tnsai.eval.hooks.EvalContext
Context for collecting and managing evaluation metrics during agent execution.
EvalContext is a thread-safe container that aggregates metrics from multiple sources (hooks, annotations, manual recording) and provides access to evaluation results.
Features
- Thread-safe metric recording
- Real-time metric streaming
- Hierarchical metric organization
- Statistical aggregation
- Export to various formats
Usage
EvalContext ctx = EvalContext.create("session-123", "research-agent");
// Record metrics
ctx.recordMetric("latency", 150);
ctx.recordMetric("accuracy", 0.95);
ctx.incrementCounter("tool_calls");
// Get statistics
MetricStats stats = ctx.getStats("latency");
System.out.println("Avg latency: " + stats.getAverage());
// Export
Map<String, Object> report = ctx.toMap();
- Author:
- TnsAI Team
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordRepresents a single metric event.static final recordStatistics for a metric. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddListener(Consumer<EvalContext.MetricEvent> listener) Adds a real-time metric listener.voidMarks the context as completed.static EvalContextCreates a new evaluation context.Gets agent ID.longgetCounter(String name) Gets counter value.Gets all counter names.longGets duration in milliseconds.Gets end time.Gets all events.Gets all metric names.getMetricValues(String name) Gets all values for a metric.Gets session ID.Gets metadata.Gets start time.Gets statistics for a metric.Gets status.voidincrementCounter(String name) Increments a counter by 1.voidincrementCounter(String name, long amount) Increments a counter by a specific amount.voidrecordMetric(String name, double value) Records a numeric metric value.voidrecordMetric(String name, double value, Map<String, String> tags) Records a metric with tags.voidremoveListener(Consumer<EvalContext.MetricEvent> listener) Removes a metric listener.voidSets metadata.toMap()Converts context to a map for serialization.
-
Method Details
-
create
Creates a new evaluation context.- Parameters:
sessionId- session identifieragentId- agent identifier- Returns:
- new context
-
recordMetric
Records a numeric metric value.- Parameters:
name- metric namevalue- metric value
-
recordMetric
Records a metric with tags.- Parameters:
name- metric namevalue- metric valuetags- metric tags
-
incrementCounter
Increments a counter by 1.- Parameters:
name- counter name
-
incrementCounter
Increments a counter by a specific amount.- Parameters:
name- counter nameamount- amount to increment
-
setSpec
Sets metadata.- Parameters:
key- metadata keyvalue- metadata value
-
getSpec
Gets metadata.- Parameters:
key- metadata key- Returns:
- metadata value or null
-
getMetricValues
Gets all values for a metric.- Parameters:
name- metric name- Returns:
- list of values
-
getCounter
Gets counter value.- Parameters:
name- counter name- Returns:
- counter value
-
getStats
Gets statistics for a metric.- Parameters:
name- metric name- Returns:
- statistics
-
getMetricNames
Gets all metric names.- Returns:
- set of metric names
-
getCounterNames
Gets all counter names.- Returns:
- set of counter names
-
addListener
Adds a real-time metric listener.- Parameters:
listener- listener to add
-
removeListener
Removes a metric listener.- Parameters:
listener- listener to remove
-
complete
Marks the context as completed.- Parameters:
status- final status
-
getSessionId
Gets session ID.- Returns:
- session ID
-
getAgentId
Gets agent ID.- Returns:
- agent ID
-
getStartTime
Gets start time.- Returns:
- start time
-
getEndTime
Gets end time.- Returns:
- end time or null if not completed
-
getDurationMs
public long getDurationMs()Gets duration in milliseconds.- Returns:
- duration or -1 if not completed
-
getStatus
Gets status.- Returns:
- status
-
getEvents
Gets all events.- Returns:
- list of events
-
toMap
Converts context to a map for serialization.- Returns:
- map representation
-