@@ -87,14 +87,14 @@ def load_eval_set(self, eval_set_file: str) -> EvalSet:
8787
8888 return load_eval_set_from_file (eval_set_file )
8989
90- def generate_eval_data (self , eval_set_file_path : str ):
91- eval_case_data_list : list [ EvalCaseData ] = []
92- eval_cases = self . load_eval_set ( eval_set_file_path ). eval_cases
93- self . generate_invocation_data ( eval_cases , eval_case_data_list )
94-
95- def load_tracing_set ( self , tracing_set_file_path : str ) -> EvalSet :
96- with open ( tracing_set_file_path , "r" ) as f :
97- tracing_data = json . load ( f )
90+ def load_eval_set_from_tracing (self , tracing_file : str ) -> EvalSet :
91+ try :
92+ with open ( tracing_file , "r" ) as f :
93+ tracing_data = json . load ( f )
94+ except json . JSONDecodeError as e :
95+ raise ValueError ( f"Invalid JSON format in file { tracing_file } : { e } " )
96+ except Exception as e :
97+ raise ValueError ( f"Error reading file { tracing_file } : { e } " )
9898
9999 # Group spans by trace_id
100100 trace_groups = {}
@@ -188,14 +188,33 @@ def load_tracing_set(self, tracing_set_file_path: str) -> EvalSet:
188188
189189 return evalset
190190
191- def generate_eval_data_from_tracing (self , tracing_set_file_path : str ):
191+ def generate_eval_data (self , file_path : str ):
192+ """Generate evaluation data from a given file and assign it to the class attribute `invocation_list`."""
192193 eval_case_data_list : list [EvalCaseData ] = []
193- eval_cases = self .load_tracing_set (tracing_set_file_path ).eval_cases
194- self .generate_invocation_data (eval_cases , eval_case_data_list )
195194
196- def generate_invocation_data (
197- self , eval_cases : list [EvalSet ], eval_case_data_list : list [EvalCaseData ]
198- ):
195+ try :
196+ with open (file_path , "r" ) as f :
197+ file_content = json .load (f )
198+ except json .JSONDecodeError as e :
199+ raise ValueError (f"Invalid JSON format in file { file_path } : { e } " )
200+ except Exception as e :
201+ raise ValueError (f"Error reading file { file_path } : { e } " )
202+
203+ if isinstance (file_content , dict ) and "eval_cases" in file_content :
204+ eval_cases = self .load_eval_set (file_path ).eval_cases
205+ elif (
206+ isinstance (file_content , list )
207+ and len (file_content ) > 0
208+ and all (
209+ isinstance (span , dict ) and "trace_id" in span for span in file_content
210+ )
211+ ):
212+ eval_cases = self .load_eval_set_from_tracing (file_path ).eval_cases
213+ else :
214+ raise ValueError (
215+ f"Unsupported file format in { file_path } . Please provide a valid file."
216+ )
217+
199218 for eval_case in eval_cases :
200219 eval_case_data = EvalCaseData (invocations = [])
201220 self .agent_information_list .append (
0 commit comments