说到底,想让ChatGPT老老实实帮你干数据处理这事儿,提示词里必须把输入格式、字段含义、校验规则、异常处理方式和输出结构全给捋清楚。缺一样,模型就自己开脑洞替你补,结果要么错位,要么漏处理,反正不会是你想要的。

所以,核心就一句话:指令里别留任何“模糊地带”——必须白纸黑字全写透。
明确输入数据的原始形态
第一步:用三行以内把数据来源和载体形式交代清楚。比如“输入为Excel文件,含Sheet1,首行为表头,无合并单元格”,这就够了,别啰嗦,但也别含糊。
第二步:逐字段列名、类型、是否必填、取值范围,一个都不能少。像这样:“order_id:文本型,长度6–12位,仅含数字和大写字母;status:枚举值,仅允许‘pending’‘shipped’‘cancelled’三种”。
第三步:得把那些“隐含约束”也点出来。举个例子:“同一order_id在文件中最多出现2次,第二次出现时代表状态更新,需覆盖前次记录”。这个步骤要是漏了,去重逻辑就全乱套了。
定义每一步处理动作的边界条件
方法一:直接用“当……时,执行……;否则……”的句式把分支逻辑锁死。比如:“当amount字段为空时,跳过该行并记录日志;当amount<0时,置为0并标记‘负值修正’”。这样模型就不会自己“发挥想象力”了。
方法二:对于聚合操作,必须声明分组键和聚合方式。比如:“按user_id分组,取每个组内latest_update_time最大值对应的整行记录,若时间相同则保留第一条”。【不声明‘保留第一条’,ChatGPT默认随机选】——这个坑,踩过的人都知道。
强制约束输出格式与字段顺序
直接甩出一个目标JSON Schema或CSV字段顺序模板,千万不要让模型自己猜。比如:
{"cleaned_records": [{"user_id":"string","order_count":"integer","last_active_date":"YYYY-MM-DD"}], "error_count": 0}
再补一句字段语义说明,比如“order_count为该user_id在原始数据中的非取消订单总数,不含status=‘cancelled’的记录”。
最后加一句硬性指令压轴:“输出仅包含合法JSON,不带任何解释性文字、Markdown符号或代码块包裹”。这句话一上,模型就不敢随便加“这是处理结果”之类的杂音了。
说到底,所谓“完整提示词”,就是把每一步的边界、规则、输出一一钉死,不留任何让模型自行脑补的空间。数据这么严肃的事,可别指望AI替你“猜”。
