让 AI 帮忙列数据质量规则很方便,但“订单数据应合理”不能直接验收。规则必须有准确条件、可测反例和失败后动作,才能进入自动化流程。本文用订单金额与编号演示:先把自然语言拆成三条断言,再故意输入错误样本看能否被拒绝。
从建议中提炼可判定条件
人工构造的建议是“订单金额必须为正,订单编号不能为空且不得重复”。代码将其拆为 positive_amount、id_present 和 id_unique。空字符串与真正的缺失值都视为没有编号;金额 0 也不满足“为正”。

这些规则适用于本教学场景,不表示所有订单业务都不能出现零元订单。若有试用、赠品或退款,先找业务方确定例外条件和状态,再写代码;让 AI 猜政策会导致误杀数据。
同时运行正例和反例
安装 pandas,将代码保存为 rules_as_tests.py 并运行。valid 应通过;zero_amount 只触发金额规则;duplicate_id 只触发唯一性规则。如果一个反例没有被挡住,规则还不能上线。
import pandas as pd
# “AI建议”是人工构造的候选文本,需转成明确断言后才可使用。
suggestion='订单金额必须为正,订单编号不能为空且不得重复'
def validate(frame):
return {'positive_amount':bool(frame['amount'].gt(0).all()),
'id_present':bool(frame['id'].notna().all() and frame['id'].astype(str).str.strip().ne('').all()),
'id_unique':bool(frame['id'].is_unique)}
good=pd.DataFrame({'id':['a','b'],'amount':[2,3]})
bad_amount=pd.DataFrame({'id':['a','b'],'amount':[2,0]})
bad_duplicate=pd.DataFrame({'id':['a','a'],'amount':[2,3]})
for name,frame in [('valid',good),('zero_amount',bad_amount),('duplicate_id',bad_duplicate)]:
result=validate(frame)
print(name,result,'accepted=',all(result.values()))
print('source_suggestion=',suggestion)
看测试结果而不是看 AI 的解释
结果中正常表 accepted=True,两种坏样本均为 False,且失败项与预期一致。下一步把企业真实字段、金额类型及订单状态加入固定测试集;每次改规则都重跑正例和反例,尤其检查以前可接受的边界样本是否被误拒。
valid {'positive_amount': True, 'id_present': True, 'id_unique': True} accepted= True
zero_amount {'positive_amount': False, 'id_present': True, 'id_unique': True} accepted= False
duplicate_id {'positive_amount': True, 'id_present': True, 'id_unique': False} accepted= False
source_suggestion= 订单金额必须为正,订单编号不能为空且不得重复
Python unittest 官方文档给出了将这些断言组织成可重复测试的方式;pandas 重复行文档说明重复检查可针对指定字段或整行,本例要求订单编号唯一。
规则落地前还有哪些缺口
真实流水线应为失败行保存编号、规则版本和原值,阻止错误批次进入下游,并给出修复入口。本例不处理并发写入和跨文件重复;若编号唯一性跨多个批次,应在持久存储层再设唯一约束。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31709.html