数据后处理器 功能: 1. 读取 evaluator 输出的 jsonl 文件 2. 应用过滤函数筛选数据 3. 应用转换函数转换数据(支持一对一或一对多) 4. 输出新的 jsonl 文件 示例用法: # 创建处理器 processor = DataPostProcessor() # 注册过滤函数 processor.add_filter(lambda x: x.get("success") == True) proc
| 18 | |
| 19 | |
| 20 | class DataPostProcessor: |
| 21 | """ |
| 22 | 数据后处理器 |
| 23 | |
| 24 | 功能: |
| 25 | 1. 读取 evaluator 输出的 jsonl 文件 |
| 26 | 2. 应用过滤函数筛选数据 |
| 27 | 3. 应用转换函数转换数据(支持一对一或一对多) |
| 28 | 4. 输出新的 jsonl 文件 |
| 29 | |
| 30 | 示例用法: |
| 31 | # 创建处理器 |
| 32 | processor = DataPostProcessor() |
| 33 | |
| 34 | # 注册过滤函数 |
| 35 | processor.add_filter(lambda x: x.get("success") == True) |
| 36 | processor.add_filter(lambda x: x.get("score", 0) > 0.5) |
| 37 | |
| 38 | # 注册转换函数 |
| 39 | processor.add_transformer(extract_training_data) |
| 40 | |
| 41 | # 执行处理 |
| 42 | processor.process( |
| 43 | input_path="eval_results.jsonl", |
| 44 | output_path="filtered_results.jsonl" |
| 45 | ) |
| 46 | """ |
| 47 | |
| 48 | def __init__(self): |
| 49 | """初始化数据处理器""" |
| 50 | self.filters: List[Callable[[Dict[str, Any]], bool]] = [] |
| 51 | self.transformers: List[Callable[[Dict[str, Any]], Union[Dict[str, Any], List[Dict[str, Any]]]]] = [] |
| 52 | self.stats = defaultdict(int) |
| 53 | |
| 54 | def add_filter(self, filter_func: Callable[[Dict[str, Any]], bool], name: Optional[str] = None): |
| 55 | """ |
| 56 | 添加过滤函数 |
| 57 | |
| 58 | Args: |
| 59 | filter_func: 过滤函数,接收一个字典,返回布尔值 |
| 60 | 返回 True 表示保留该数据,False 表示过滤掉 |
| 61 | name: 过滤函数的名称(可选,用于统计) |
| 62 | |
| 63 | 示例: |
| 64 | processor.add_filter(lambda x: x.get("success") == True) |
| 65 | processor.add_filter(lambda x: x.get("score", 0) > 0.5, name="high_score") |
| 66 | """ |
| 67 | if name: |
| 68 | filter_func._filter_name = name |
| 69 | self.filters.append(filter_func) |
| 70 | return self |
| 71 | |
| 72 | def add_transformer(self, transform_func: Callable[[Dict[str, Any]], Union[Dict[str, Any], List[Dict[str, Any]]]], name: Optional[str] = None): |
| 73 | """ |
| 74 | 添加转换函数 |
| 75 | |
| 76 | Args: |
| 77 | transform_func: 转换函数,接收一个字典,返回一个字典或字典列表 |