All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Agentic flow evaluation: New paradigm for evaluating autonomous task-executing agents
AgenticScenefor defining task-based evaluation scenariosAgenticTracefor capturing action sequences and outcomesrun_agentic()andcheck_agentic()for running and validating agentic flows- New expectation types:
required_actions,forbidden_actions,outcome
- Agentic examples:
examples/agentic/with code review, file search, and data analysis tasks - Agentic scenes:
examples/agentic_scenes/with YAML task definitions
- Renamed
example/directory toexamples/for consistency - Renamed test files to unique names (
test_adk_returns.py,test_langgraph_returns.py)
- Separate simulation and evaluation: Decouple trace generation from evaluation
understudy simulate— Generate traces without evaluationunderstudy evaluate— Evaluate existing traces against expectationsunderstudy run— Combined simulate + evaluate (existing behavior)
- Multiple simulations per scene: Run each scene multiple times with
--n-simsSuite.run(n_sims=3)for Python API--n-simsflag for CLI commands
- TraceStorage: Dedicated storage for simulation-only traces
- EvaluationStorage: Dedicated storage for evaluation results
- Python API functions:
simulate()andsimulate_batch()for simulation-only workflowsevaluate()andevaluate_batch()for trace evaluation
- LangGraph adapter: Test LangGraph agents with
LangGraphApp - HTTP simulator server: Test browser-based and UI agents via HTTP
understudy serve-apicommand for HTTP simulator endpoints
- Metrics system: Compute and track metrics on traces
efficiency,resolution_match,tool_trajectorybuilt-in metrics- Custom metrics via
MetricRegistry
- State snapshots: Capture agent state at each turn for debugging
- Comparison reports: Compare runs across different configurations using tags
compare_runs()function for programmatic comparisonunderstudy compareCLI command with--htmloption for HTML reports
- Tag-based filtering: Tag runs with metadata for grouping and comparison
Suite.run(tags={"version": "v1"})to tag all runs in a suiteRunStorage.save(tags={"model": "gpt-4o"})for individual run tagging
- LiteLLMBackend: Unified LLM backend using litellm
- Supports OpenAI, Anthropic, Google, and 100+ other providers
- Model strings:
"gpt-4o","claude-sonnet-4-20250514","gemini/gemini-1.5-flash", etc.
- HTTP adapter: Test deployed agents via HTTP endpoints
HTTPAgentAppfor connecting to REST APIs
litellmis now a core dependency (previously optional under[judges])- Removed
[judges]optional dependency group
- Initial release
- Scene-based simulation framework
- Persona presets (cooperative, adversarial, frustrated)
- Trace recording and analysis
- Expectation-based assertions
- MockToolkit for tool mocking
- Judge system with LLM-based evaluation
- Suite runner for batch execution
- RunStorage for persisting results
- HTML report generation
- CLI for report viewing and run management