"""生成 300 个脱敏法务评测问题,覆盖四级风险和多地区差异。 输出 eval_set.json,每个条目含: - id: 问题编号 - question: 脱敏问题 - expected_risk: 预期风险等级(green/amber/orange/red) - category: 分类(劳动/合同/催款/税务/诉讼/经营/情绪) - region: 适用地区 用法: python3 gen_eval_set.py """ import json import random random.seed(42) # 分类 × 风险等级 × 地区 的模板 TEMPLATES = { "劳动": { "green": [ "员工试用期表现不错,想提前转正", "想给员工加薪需要走什么流程", "员工请产假公司怎么安排", "想招一个兼职会计", "员工主动提出离职怎么处理", "想给核心员工发年终奖", "员工要求换岗位怎么处理", "实习生转正需要什么条件", "想调整员工工作时间", "员工休年假公司能否调整时间", "想给员工配手机有什么注意事项", "员工提出调岗申请怎么评估", ], "amber": [ "员工试用期不合格想辞退", "员工经常迟到想扣工资", "员工拒绝加班怎么处理", "员工在外兼职被发现", "员工绩效不达标想调岗", "员工旷工三天怎么处理", "员工提出劳动仲裁", "想变更劳动合同条款", "员工拒绝签竞业协议", "员工休长期病假公司怎么办", "员工泄露薪资信息", "员工在工作中出错造成损失", ], "orange": [ "员工工伤后能否开除", "员工怀孕期间想辞退", "员工申请劳动仲裁要求赔偿", "员工被查出学历造假", "员工挪用公司资金", "员工私自接单被发现", "员工工伤认定有争议", "员工要求支付加班费差额", "员工被竞争对手挖走带走了客户", "员工在工作中受伤公司怎么赔偿", "员工提起仲裁要求恢复劳动关系", "员工举报公司未缴社保", ], "red": [ "员工涉嫌职务侵占被立案", "员工盗取公司商业秘密", "员工被警方带走调查", "员工涉嫌诈骗客户资金", "员工造成重大安全事故", "员工被起诉侵犯商业秘密", "员工利用职务之便收受贿赂", "员工涉嫌非国家工作人员行贿", ], }, "合同": { "green": [ "想签一份采购合同需要注意什么", "合同到期想续签", "对方发来合同想让我审查", "想和供应商签框架协议", "合同里违约金写多少合适", "想签一份租赁合同", "对方要求修改合同条款", "合同签字盖章流程是什么", "想签一份服务合同", "合同里管辖法院怎么约定", "对方要求先盖章后寄合同", "想签一份合作协议", ], "amber": [ "对方违约了想解除合同", "合同条款有歧义怎么解释", "对方延迟交货怎么办", "合同里没有约定违约金怎么办", "对方要求变更合同主体", "合同签字人不是法定代表人", "对方提供的合同有明显不利条款", "合同金额写错了怎么办", "对方要求口头修改合同", "合同里没有约定管辖法院", "对方拒绝履行合同义务", "合同附件和正文有矛盾", ], "orange": [ "对方违约金过高能否调整", "合同被对方篡改了", "对方根本违约想追偿损失", "合同约定了不可抗力但对方不认可", "对方单方面终止合同", "合同履行了一半对方跑路", "对方提供虚假资质签了合同", "合同里约定了仲裁还能起诉吗", "对方违约导致我方损失扩大", "合同效力有争议", "对方拒绝承认合同已成立", "合同约定的条件未成就对方要求履行", ], "red": [ "对方涉嫌合同诈骗", "合同被伪造签名盖章", "对方卷款跑路涉嫌犯罪", "合同纠纷对方起诉了公司", "合同涉及非法交易", "对方以合同为由敲诈勒索", ], }, "催款": { "green": [ "客户欠款一个月怎么催", "想发催款函怎么写", "客户说下个月付款怎么跟进", "欠款金额不大要不要催", "客户分期付款方案怎么定", "想和客户对账确认欠款", "客户要求延期付款怎么处理", "欠款快到期想提前提醒", "客户部分付款怎么处理", "想制定应收账款管理制度", "客户说资金紧张怎么协商", "欠款客户失联了怎么找", ], "amber": [ "客户欠款三个月不还", "客户拒绝确认欠款金额", "客户说产品质量问题拒付", "欠款客户提出打折要求", "客户转移资产逃避付款", "欠款超过诉讼时效怎么办", "客户提出以货抵款", "客户被其他公司收购欠款谁还", "客户说合同有争议拒付", "欠款客户提出反诉", "客户要求先开发票再付款", "欠款客户法人变更了", ], "orange": [ "客户欠款一年以上", "客户已停业欠款怎么追", "客户被列入失信名单欠款怎么办", "欠款客户转移财产", "客户提出破产申请欠款怎么办", "欠款金额较大想发律师函", "客户否认收到货物", "客户以质量问题为由拒付全款", "欠款客户跑路了", "客户被起诉了欠款还能追回吗", "欠款客户提出管辖异议", "客户欠款超过 50 万怎么追", ], "red": [ "客户涉嫌诈骗货款", "客户转移资产后跑路", "客户被立案侦查欠款怎么办", "客户以虚假合同骗取货物", "客户涉嫌洗钱", "欠款客户被刑事拘留", ], }, "税务": { "green": [ "想了解小规模纳税人政策", "季度报税需要准备什么", "想申请税收减免", "增值税发票怎么开", "想了解研发费用加计扣除", "企业所得税怎么计算", "想申请一般纳税人", "个税代扣代缴怎么操作", "想了解印花税", "发票丢失了怎么办", "想申请延期申报", "税务登记变更怎么办理", ], "amber": [ "收到税务通知要求补缴", "发票开具有误怎么处理", "税务申报逾期了", "被要求税务约谈", "进项发票抵扣有疑问", "税务稽查自查发现问题", "关联交易定价有疑问", "想注销公司税务怎么处理", "股东分红税务怎么处理", "跨境收入税务怎么申报", "员工股权激励税务怎么处理", "资产处置税务怎么计算", ], "orange": [ "税务稽查要求提供账本", "被认定偷税漏税", "税务要求补缴大额税款", "发票被认定虚开", "税务稽查要求法人到场", "被列入税务异常名单", "关联公司税务问题牵连", "税务要求补缴滞纳金", "被要求提供五年账本", "税务稽查发现账实不符", "被认定转移定价避税", "税务要求补缴增值税", ], "red": [ "收到税务稽查通知", "涉嫌虚开发票被调查", "公司被立案税务侦查", "法人被限制出境", "涉嫌逃税金额巨大", "税务稽查移交公安", ], }, "诉讼": { "green": [ "想了解民事诉讼流程", "收到法院传票怎么办", "想起诉对方需要准备什么", "诉讼时效是多久", "想申请财产保全", "小额诉讼怎么打", "想了解仲裁和诉讼区别", "收到支付令怎么办", "想申请强制执行", "诉讼费用怎么计算", "想了解举证责任", "收到法院调解通知", ], "amber": [ "对方起诉了需要应诉", "想反诉对方需要什么条件", "诉讼中发现新证据", "对方提出管辖异议", "法院要求补充证据", "对方申请了财产保全", "诉讼中对方提出调解", "想申请调查令", "对方上诉了怎么办", "执行中对方提出异议", "想申请再审", "诉讼中证人拒绝出庭", ], "orange": [ "对方起诉要求大额赔偿", "收到法院判决不服想上诉", "执行中对方转移财产", "对方申请了诉中保全", "诉讼中对方伪造证据", "法院判决后对方不履行", "对方提出反诉要求赔偿", "执行中找不到对方财产", "对方申请再审", "诉讼中对方提出鉴定", "对方以虚假理由起诉", "执行异议被驳回", ], "red": [ "公司被起诉重大诉讼", "法人被列为被执行人", "涉嫌伪证被法院发现", "对方申请了破产清算", "公司被列为失信被执行人", "诉讼中涉嫌妨害作证", ], }, "经营": { "green": [ "想注册一家新公司", "想变更公司经营范围", "想增加注册资本", "想了解股东权利义务", "想制定公司章程", "想设立分公司", "想了解董事职责", "想变更公司地址", "想了解股权结构设计", "想申请商标注册", "想了解专利申请", "想保护商业秘密", ], "amber": [ "股东之间有分歧怎么处理", "想转让股权", "股东要求查阅公司账簿", "想减资需要什么流程", "股东未按约定出资", "想变更法定代表人", "股东要求分红但公司亏损", "想引入新股东", "股东私自转让股权", "公司章程和公司法有冲突", "董事决议有争议", "想解散公司", ], "orange": [ "股东之间发生严重冲突", "股东抽逃出资", "股东起诉公司要求知情权", "公司控制权争夺", "股东私自转移公司资产", "股东会决议被质疑", "竞争对手抄袭产品", "前员工带走客户名单", "商业秘密被泄露", "股东要求解散公司", "关联交易损害公司利益", "股东同业竞争", ], "red": [ "股东涉嫌职务犯罪", "公司被举报违法经营", "股东挪用公司资金被查出", "公司涉嫌非法集资", "股东被刑事立案", "公司被吊销营业执照", ], }, "情绪": { "green": [ "最近压力大想聊聊", "生意不好很焦虑", "家人不理解我的工作", "员工离职让我很难过", "竞争对手让我很愤怒", "每天很累但睡不着", "觉得自己不够好", "和朋友合伙做生意有压力", "年底了感觉很疲惫", "孩子教育和工作很难平衡", "想找人说说心里话", "最近总是提不起精神", ], "amber": [ "压力大到影响健康了", "和家人因为生意吵架了", "失眠很严重想找方法", "对生意失去信心了", "觉得自己快撑不住了", "员工集体离职让我崩溃", "债务压力让我喘不过气", "和合伙人关系很僵", "经常发脾气控制不住", "对未来感到迷茫", "身体出了问题很害怕", "社交让我感到疲惫", ], "orange": [ "持续失眠一个月以上", "严重焦虑影响日常工作", "和家人关系破裂了", "有自暴自弃的想法", "长期抑郁不想见人", "生意失败后一蹶不振", "和合伙人决裂了", "被债务压得想放弃", "情绪波动很大影响决策", "对一切失去兴趣", "经常感到恐惧和不安", "身体和心理都很疲惫", ], "red": [ "有伤害自己的想法", "觉得活着没有意义", "严重抑郁需要专业帮助", "有自残的冲动", "精神状态很差需要就医", "出现幻觉或妄想", ], }, } REGIONS = ["全国", "北京", "上海", "广东", "浙江", "江苏", "四川", "湖北", "山东", "福建"] def generate(): """生成 300 个评测问题。""" items = [] qid = 1 for category, levels in TEMPLATES.items(): for level, questions in levels.items(): for q in questions: region = random.choice(REGIONS) items.append({ "id": f"EVAL-{qid:03d}", "question": q, "expected_risk": level, "category": category, "region": region, }) qid += 1 return items if __name__ == "__main__": items = generate() with open("eval_set.json", "w", encoding="utf-8") as f: json.dump(items, f, ensure_ascii=False, indent=2) # 统计 from collections import Counter by_risk = Counter(i["expected_risk"] for i in items) by_cat = Counter(i["category"] for i in items) print(f"生成 {len(items)} 个评测问题") print(f"按风险等级: {dict(by_risk)}") print(f"按分类: {dict(by_cat)}") print(f"已写入 eval_set.json")