MCPcopy Create free account
hub / github.com/codefuse-ai/codefuse-devops-eval / ToolParserEvalution

Class ToolParserEvalution

src/evals/toolparser_evalution.py:8–82  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6
7
8class ToolParserEvalution(ToolEvalution):
9 def __init__(
10 self,
11 model: ToolModel,
12 dataset: ToolParserDataset,
13 base_prompt: str = '',
14 template: str = 'default',
15 generate_configs: GenerateConfigs = None,
16 ):
17 self.model = model
18 self.dataset = dataset
19 self.base_prompt = base_prompt
20 self.template = template
21 self.generate_configs = generate_configs
22
23 if not isinstance(model, ToolModel):
24 raise BaseException(f"must be ToolModel Class! not {model}")
25
26 def calc(self):
27 '''开始计算结果'''
28 self.predicts = []
29 for idx, data in enumerate(self.dataset):
30 # if idx >= 5: break
31 prompt = self.base_prompt.format(**data)
32 response = data["response"]
33 answer = data["selected_keys"]
34 predict = self.generate(prompt, self.template, self.generate_configs)
35 self.predicts.append({"prompt": prompt, "predict": predict, "answer": answer, "response": response})
36
37 metric = self.eval_metric(self.predicts)
38 return metric
39
40 self.model = model
41 self.dataset = dataset
42 self.base_prompt = base_prompt
43 self.template = template
44 self.generate_configs = generate_configs
45
46 if not isinstance(model, ToolModel):
47 raise BaseException(f"must be ToolModel Class! not {model}")
48
49 def generate(self, prompt, template, generate_configs):
50 '''返回结果'''
51 return self.model.generate(prompt, template, generate_configs)
52
53 def eval_metric(self, datas):
54 ''''''
55 self.right_predicts = []
56 self.wrong_predicts = []
57 self.error_predicts = []
58 for data in datas:
59 prompt, predict, answer, response = data["prompt"], data["predict"], data["answer"], data["response"]
60 selected_keys = rec_search_key(response, "", [], predict)
61 try:
62 predict_json = selected_keys if isinstance(selected_keys, list) else eval(selected_keys)
63 answer_json = answer if isinstance(answer, list) else eval(answer)
64
65 predict_json = set(predict_json) if isinstance(predict_json, list) else predict_json

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected