#!/usr/bin/env python """ Run trajectory evaluation on the fraud agent. This evaluates whether the agent uses the correct tools in the right sequence. """ from strands_evals import Experiment from evals.config import trajectory_evaluator from evals.task_functions import get_fraud_explanation_with_trace from evals.dataset_loader import load_cases_from_json from evals.langfuse_reporter import LangfuseClient, LangfuseReporter from evals.utils import get_report_summary def main(): print("=== Trajectory Evaluation ===\n") # Load test cases cases = load_cases_from_json("evaluation/dataset.json") print(f"Loaded {len(cases)} test cases\n") # Create experiment experiment = Experiment( cases=cases, evaluators=[trajectory_evaluator] ) # Run evaluations print("Running evaluations...") reports = experiment.run_evaluations(get_fraud_explanation_with_trace) # Display SDK results print("\n" + "="*60) reports[0].display() # Get summary summary = get_report_summary(reports[0]) print(f"\nšŸ“Š Summary:") print(f" Pass Rate: {summary['pass_rate']:.1%}") print(f" Average Score: {summary['average_score']:.2f}") # Log to Langfuse print("\nšŸ“¤ Logging to Langfuse...") lf_client = LangfuseClient() reporter = LangfuseReporter(lf_client) case_names = [case.name for case in cases] evaluator_names = [type(e).__name__ for e in experiment.evaluators] trace_ids = reporter.log_experiment_results(reports, case_names, evaluator_names) print(f" Logged {len(trace_ids)} traces to Langfuse") # Save experiment experiment.to_file("experiment_files/trajectory_eval") print("\nšŸ’¾ Experiment saved to ./experiment_files/trajectory_eval.json") if __name__ == "__main__": main()