Experiments
Versioned agent configurations, runs, baselines, and regression detection. Workflow: Experiments guide.
uaef.experiments.models
Experiment data models for versioning and comparison.
AgentDesign
Bases: BaseModel
Agent design configuration for reproducibility.
Attributes:
| Name | Type | Description |
|---|---|---|
framework |
str
|
Agent framework (e.g., "langgraph", "bedrock", "langchain") |
model |
str
|
LLM model identifier (e.g., "us.anthropic.claude-sonnet-4-6") |
tools |
List[str]
|
List of tool names available to the agent |
system_prompt |
Optional[str]
|
System prompt used for the agent |
parameters |
Dict[str, Any]
|
Additional agent parameters (temperature, max_tokens, etc.) |
Source code in uaef/experiments/models.py
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | |
Config
Pydantic configuration.
Source code in uaef/experiments/models.py
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | |
Experiment
Bases: BaseModel
Experiment for tracking agent versions and evaluations.
Attributes:
| Name | Type | Description |
|---|---|---|
experiment_id |
UUID
|
Unique identifier for the experiment |
name |
str
|
Human-readable experiment name |
description |
Optional[str]
|
Detailed description of the experiment |
created_at |
datetime
|
When the experiment was created |
metadata |
Dict[str, Any]
|
Additional metadata (tags, owner, project, etc.) |
baseline_run_id |
Optional[UUID]
|
ID of the run designated as baseline for comparison |
Source code in uaef/experiments/models.py
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | |
Config
Pydantic configuration.
Source code in uaef/experiments/models.py
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | |
validate_experiment_id(v)
classmethod
Validate that experiment_id is not None.
Source code in uaef/experiments/models.py
92 93 94 95 96 97 98 | |
validate_name(v)
classmethod
Validate that name is not empty.
Source code in uaef/experiments/models.py
100 101 102 103 104 105 106 | |
ExperimentRun
Bases: BaseModel
A specific run within an experiment with config snapshot.
Attributes:
| Name | Type | Description |
|---|---|---|
run_id |
UUID
|
Unique identifier for this run |
experiment_id |
UUID
|
ID of the parent experiment |
run_name |
str
|
Human-readable name for this run |
agent_design |
AgentDesign
|
Complete agent design configuration |
config_snapshot |
Dict[str, Any]
|
Full configuration snapshot for reproducibility |
git_commit |
Optional[str]
|
Git commit hash for code versioning |
timestamp |
datetime
|
When the run was created |
evaluation_count |
int
|
Number of evaluations in this run |
aggregate_metrics |
Dict[str, float]
|
Aggregate metrics across all evaluations |
metadata |
Dict[str, Any]
|
Additional run metadata |
Source code in uaef/experiments/models.py
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 | |
Config
Pydantic configuration.
Source code in uaef/experiments/models.py
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 | |
validate_aggregate_metrics(v)
classmethod
Validate that all metric scores are between 0 and 1.
Source code in uaef/experiments/models.py
218 219 220 221 222 223 224 225 226 227 | |
validate_evaluation_count(v)
classmethod
Validate that evaluation_count is non-negative.
Source code in uaef/experiments/models.py
210 211 212 213 214 215 216 | |
validate_git_commit(v)
classmethod
Validate git commit hash format (40 hex characters).
Source code in uaef/experiments/models.py
198 199 200 201 202 203 204 205 206 207 208 | |
validate_run_name(v)
classmethod
Validate that run_name is not empty.
Source code in uaef/experiments/models.py
190 191 192 193 194 195 196 | |
validate_uuid(v)
classmethod
Validate that UUIDs are not None.
Source code in uaef/experiments/models.py
182 183 184 185 186 187 188 | |
uaef.experiments.manager
Experiment manager for creating and managing experiments and runs.
ExperimentManager
Manager for creating and managing experiments and runs.
Provides methods for: - Creating experiments and runs - Recording evaluation results - Setting baselines - Retrieving experiment data
Source code in uaef/experiments/manager.py
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 | |
create_experiment(name, description=None, metadata=None)
Create a new experiment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Human-readable experiment name |
required |
description
|
Optional[str]
|
Detailed description of the experiment |
None
|
metadata
|
Optional[Dict[str, Any]]
|
Additional metadata (tags, owner, project, etc.) |
None
|
Returns:
| Type | Description |
|---|---|
Experiment
|
Created Experiment instance |
Example
manager = ExperimentManager() experiment = manager.create_experiment( ... name="Customer Support Agent v2", ... description="Testing improved tool selection", ... metadata={"owner": "ml-team", "tags": ["production"]} ... )
Source code in uaef/experiments/manager.py
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |
create_run(experiment_id, run_name, agent_design, config, git_commit=None, metadata=None)
Create a new run within an experiment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
experiment_id
|
UUID
|
ID of the parent experiment |
required |
run_name
|
str
|
Human-readable name for this run |
required |
agent_design
|
AgentDesign
|
Complete agent design configuration |
required |
config
|
Dict[str, Any]
|
Full configuration snapshot for reproducibility |
required |
git_commit
|
Optional[str]
|
Git commit hash for code versioning |
None
|
metadata
|
Optional[Dict[str, Any]]
|
Additional run metadata |
None
|
Returns:
| Type | Description |
|---|---|
ExperimentRun
|
Created ExperimentRun instance |
Raises:
| Type | Description |
|---|---|
ValueError
|
If experiment_id doesn't exist |
Example
design = AgentDesign( ... framework="langgraph", ... model="us.anthropic.claude-sonnet-4-6", ... tools=["search", "calculator"] ... ) run = manager.create_run( ... experiment_id=experiment.experiment_id, ... run_name="baseline-v1", ... agent_design=design, ... config={"metric_set": ["tool_accuracy"]}, ... git_commit="a1b2c3d4..." ... )
Source code in uaef/experiments/manager.py
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | |
get_baseline_run(experiment_id)
Get the baseline run for an experiment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
experiment_id
|
UUID
|
ID of the experiment |
required |
Returns:
| Type | Description |
|---|---|
Optional[ExperimentRun]
|
Baseline ExperimentRun instance or None if no baseline set |
Raises:
| Type | Description |
|---|---|
ValueError
|
If experiment doesn't exist |
Example
baseline = manager.get_baseline_run(experiment_id)
Source code in uaef/experiments/manager.py
348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 | |
get_evaluations(run_id)
Get all evaluation results for a run.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
run_id
|
UUID
|
ID of the run |
required |
Returns:
| Type | Description |
|---|---|
List[EvaluationResult]
|
List of EvaluationResult instances for the run |
Raises:
| Type | Description |
|---|---|
ValueError
|
If run doesn't exist |
Example
evaluations = manager.get_evaluations(run_id)
Source code in uaef/experiments/manager.py
323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | |
get_experiment(experiment_id)
Get an experiment by ID.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
experiment_id
|
UUID
|
ID of the experiment |
required |
Returns:
| Type | Description |
|---|---|
Optional[Experiment]
|
Experiment instance or None if not found |
Example
experiment = manager.get_experiment(experiment_id)
Source code in uaef/experiments/manager.py
252 253 254 255 256 257 258 259 260 261 262 263 264 265 | |
get_run(run_id)
Get a run by ID.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
run_id
|
UUID
|
ID of the run |
required |
Returns:
| Type | Description |
|---|---|
Optional[ExperimentRun]
|
ExperimentRun instance or None if not found |
Example
run = manager.get_run(run_id)
Source code in uaef/experiments/manager.py
267 268 269 270 271 272 273 274 275 276 277 278 279 280 | |
list_experiments()
List all experiments.
Returns:
| Type | Description |
|---|---|
List[Experiment]
|
List of all Experiment instances |
Example
experiments = manager.list_experiments()
Source code in uaef/experiments/manager.py
282 283 284 285 286 287 288 289 290 291 292 | |
list_runs(experiment_id)
List all runs for an experiment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
experiment_id
|
UUID
|
ID of the experiment |
required |
Returns:
| Type | Description |
|---|---|
List[ExperimentRun]
|
List of ExperimentRun instances for the experiment |
Raises:
| Type | Description |
|---|---|
ValueError
|
If experiment doesn't exist |
Example
runs = manager.list_runs(experiment_id)
Source code in uaef/experiments/manager.py
294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 | |
record_evaluation(run_id, evaluation_result)
Record an evaluation result for a run.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
run_id
|
UUID
|
ID of the run |
required |
evaluation_result
|
EvaluationResult
|
Evaluation result to record |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If run_id doesn't exist |
Example
manager.record_evaluation( ... run_id=run.run_id, ... evaluation_result=evaluation_result ... )
Source code in uaef/experiments/manager.py
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | |
set_baseline(experiment_id, run_id)
Set a run as the baseline for an experiment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
experiment_id
|
UUID
|
ID of the experiment |
required |
run_id
|
UUID
|
ID of the run to set as baseline |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If experiment or run doesn't exist, or run doesn't belong to experiment |
Example
manager.set_baseline( ... experiment_id=experiment.experiment_id, ... run_id=run.run_id ... )
Source code in uaef/experiments/manager.py
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | |
uaef.experiments.comparison
Comparison engine for comparing experiment runs.
ComparisonEngine
Engine for comparing experiment runs.
Provides methods for: - Comparing two runs metric-by-metric - Identifying regressions and improvements - Generating comparison reports
Source code in uaef/experiments/comparison.py
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 | |
compare_multiple_runs(baseline_run, current_runs, regression_threshold=None, improvement_threshold=None)
Compare multiple runs against a baseline.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
baseline_run
|
ExperimentRun
|
Baseline run for comparison |
required |
current_runs
|
List[ExperimentRun]
|
List of runs to compare against baseline |
required |
regression_threshold
|
Optional[float]
|
Custom regression threshold (overrides default) |
None
|
improvement_threshold
|
Optional[float]
|
Custom improvement threshold (overrides default) |
None
|
Returns:
| Type | Description |
|---|---|
List[ComparisonReport]
|
List of ComparisonReport instances, one for each current run |
Example
engine = ComparisonEngine() reports = engine.compare_multiple_runs(baseline_run, [run1, run2, run3]) for report in reports: ... print(f"Run {report.current_run_id}: {len(report.regressions)} regressions")
Source code in uaef/experiments/comparison.py
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 | |
compare_runs(baseline_run, current_run, regression_threshold=None, improvement_threshold=None)
Compare two experiment runs metric-by-metric.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
baseline_run
|
ExperimentRun
|
Baseline run for comparison |
required |
current_run
|
ExperimentRun
|
Current run to compare against baseline |
required |
regression_threshold
|
Optional[float]
|
Custom regression threshold (overrides default) |
None
|
improvement_threshold
|
Optional[float]
|
Custom improvement threshold (overrides default) |
None
|
Returns:
| Type | Description |
|---|---|
ComparisonReport
|
ComparisonReport with detailed comparison results |
Example
engine = ComparisonEngine() report = engine.compare_runs(baseline_run, current_run) print(f"Regressions: {report.regressions}") print(f"Improvements: {report.improvements}")
Source code in uaef/experiments/comparison.py
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 | |
get_comparison_summary(report)
Generate a human-readable summary of a comparison report.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
report
|
ComparisonReport
|
ComparisonReport to summarize |
required |
Returns:
| Type | Description |
|---|---|
str
|
Human-readable summary string |
Example
summary = engine.get_comparison_summary(report) print(summary)
Source code in uaef/experiments/comparison.py
337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 | |
ComparisonReport
Bases: BaseModel
Complete comparison report between two runs.
Attributes:
| Name | Type | Description |
|---|---|---|
baseline_run_id |
UUID
|
ID of the baseline run |
current_run_id |
UUID
|
ID of the current run |
metric_comparisons |
List[MetricComparison]
|
List of metric-by-metric comparisons |
regressions |
List[str]
|
List of metrics with regressions |
improvements |
List[str]
|
List of metrics with improvements |
unchanged |
List[str]
|
List of metrics with no significant change |
summary |
Dict[str, Any]
|
Summary statistics |
Source code in uaef/experiments/comparison.py
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | |
Config
Pydantic configuration.
Source code in uaef/experiments/comparison.py
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | |
MetricComparison
Bases: BaseModel
Comparison result for a single metric.
Attributes:
| Name | Type | Description |
|---|---|---|
metric_name |
str
|
Name of the metric |
baseline_score |
float
|
Score from baseline run |
current_score |
float
|
Score from current run |
delta |
float
|
Absolute difference (current - baseline) |
percent_change |
float
|
Percentage change ((current - baseline) / baseline * 100) |
is_regression |
bool
|
Whether this is a regression (negative change > threshold) |
is_improvement |
bool
|
Whether this is an improvement (positive change > threshold) |
Source code in uaef/experiments/comparison.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | |
Config
Pydantic configuration.
Source code in uaef/experiments/comparison.py
48 49 50 51 52 53 54 55 56 57 58 59 60 | |
uaef.experiments.regression
Regression detector for identifying performance degradations.
Regression
Bases: BaseModel
A detected regression in a metric.
Attributes:
| Name | Type | Description |
|---|---|---|
metric_name |
str
|
Name of the metric with regression |
baseline_score |
float
|
Score from baseline run |
current_score |
float
|
Score from current run |
delta |
float
|
Absolute difference (current - baseline) |
percent_change |
float
|
Percentage change |
severity |
RegressionSeverity
|
Severity level of the regression |
dimension |
Optional[str]
|
Dimension the metric belongs to (if known) |
Source code in uaef/experiments/regression.py
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | |
Config
Pydantic configuration.
Source code in uaef/experiments/regression.py
51 52 53 54 55 56 57 58 59 60 61 62 63 | |
RegressionDetector
Detector for identifying performance regressions.
Provides methods for: - Detecting regressions between runs - Calculating severity based on magnitude - Generating regression reports
Source code in uaef/experiments/regression.py
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 | |
detect_regressions(baseline_run, current_run, thresholds=None)
Detect regressions between baseline and current runs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
baseline_run
|
ExperimentRun
|
Baseline run for comparison |
required |
current_run
|
ExperimentRun
|
Current run to check for regressions |
required |
thresholds
|
Optional[Dict[str, float]]
|
Custom thresholds per metric (overrides defaults) |
None
|
Returns:
| Type | Description |
|---|---|
RegressionReport
|
RegressionReport with detected regressions |
Example
detector = RegressionDetector() report = detector.detect_regressions(baseline_run, current_run) print(f"Found {len(report.regressions)} regressions") for regression in report.regressions: ... print(f" {regression.metric_name}: {regression.severity}")
Source code in uaef/experiments/regression.py
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 | |
get_regression_summary(report)
Generate a human-readable summary of a regression report.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
report
|
RegressionReport
|
RegressionReport to summarize |
required |
Returns:
| Type | Description |
|---|---|
str
|
Human-readable summary string |
Example
summary = detector.get_regression_summary(report) print(summary)
Source code in uaef/experiments/regression.py
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 | |
RegressionReport
Bases: BaseModel
Complete regression detection report.
Attributes:
| Name | Type | Description |
|---|---|---|
baseline_run_id |
UUID
|
ID of the baseline run |
current_run_id |
UUID
|
ID of the current run |
regressions |
List[Regression]
|
List of detected regressions |
regressions_by_severity |
Dict[str, List[str]]
|
Regressions grouped by severity |
regressions_by_dimension |
Dict[str, List[str]]
|
Regressions grouped by dimension |
summary |
Dict[str, Any]
|
Summary statistics |
Source code in uaef/experiments/regression.py
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | |
Config
Pydantic configuration.
Source code in uaef/experiments/regression.py
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | |
RegressionSeverity
Bases: str, Enum
Severity levels for regressions.
Source code in uaef/experiments/regression.py
18 19 20 21 22 23 | |