批量调硅基流动前怎样筛掉空行、重复记录和超长输入
批量调硅基流动前,应先把空行、重复记录、缺字段和超长输入筛出来。预检发生在 API 之前,能避免把明显无效的数据送出去。本文提供数量守恒的本地流程,不讨论请求限流,也不把字符数伪装成模型 token 数。
先定义记录身份与去重规则
每条输入保留 row_id 和原始行号。业务编号相同但内容不同,通常是冲突,不能当重复直接删;正文相同但编号不同,也可能代表两条不同业务记录。明确采用“编号加正文完全相同才算重复”等规则后再写脚本。原始输入只读,清洗结果输出到新目录。
以下脚本使用五条合成数据,长度上限十个字符仅用于演示:
import json
rows = [
{'id':'01','text':'正常输入'},
{'id':'02','text':' '},
{'id':'01','text':'正常输入'},
{'id':'03','text':'甲'*11},
{'id':'04'},
]
accepted, isolated, seen = [], [], set()
for n, row in enumerate(rows, 1):
text = row.get('text')
reason = None
if not isinstance(text, str):
reason = '缺文本或类型错误'
elif not text.strip():
reason = '空白'
elif len(text) > 10:
reason = '超字符预检阈值'
key = (row.get('id'), text)
if reason is None and key in seen:
reason = '重复'
if reason is None:
seen.add(key)
accepted.append({'row':n, **row})
else:
isolated.append({'row':n, 'reason':reason, 'data':row})
assert len(rows) == len(accepted) + len(isolated)
print(json.dumps({'输入':len(rows),'有效':len(accepted),'隔离':len(isolated)}, ensure_ascii=False))
预期得到输入5、有效1、隔离4。脚本不删除原始数据,不做付费调用。把有效和隔离列表分别写为 JSONL,即得到下一阶段可读取的队列与复核文件。
超长输入需要两层判断
字符预检只做粗筛,正式长度还需要所选模型认可的 token 估算或服务端限制验证。中文、英文、代码和特殊符号的字符与 token 比例不同,不应使用固定比例承诺一定不超限。还要给系统提示、历史消息和输出留空间。
如果决定拆分长输入,记录原记录编号、片段编号和边界;不要直接截断后仍把它标成完整文档。拆分规则会影响语义,表格行、代码块和合同条款等内容需要针对性处理。隔离记录可人工确认后重入,但重入必须保留原原因与处理版本。
数量守恒报告要覆盖每个去向
最终报告列原始记录数、有效数、隔离数及各原因数量。若一条记录可能命中多个问题,约定主原因或多原因统计,避免原因数量相加误认为记录总数。编号冲突另列,不能被“去重成功”掩盖。每条原始行必须对应一个当前去向,程序异常中止时也应能定位最后处理位置。
预检之后,API 仍可能因模型权限、上下文或临时服务问题失败。因此把“预检通过”与“调用完成”分开计数,后续输出也根据原始行号回连,防止返回顺序变化造成错配。
输入预检还要处理同编号不同正文的冲突。上面的最小脚本把它们视为两条不同记录,正式流程应另外建立编号到正文摘要的映射;发现一个编号对应多个内容时,隔离或交人工决定版本,不能用最后一条覆盖前一条。若输入本身是损坏JSON,保留原行号与解析失败原因,不能只统计成功读入的对象。数量守恒的分母应来自全部原始记录,格式无法读取的部分也要有明确去向。
常见问题
空白清理后直接覆盖原文可以吗? 先保留原文与清理版,某些空格在代码或格式中有意义。
重复文本都应丢掉吗? 要看业务身份,先制定可解释的去重键。
隔离数越少越好吗? 不是,放宽规则可能把错误藏到后续阶段,应看规则是否正确。
继续处理相关问题
相关入口:硅基流动接入基础。
官方依据与核对日期
核对日:2026-10-23。硅基流动模型输入限制:嵌入输入不能为空且不能超模型上下文;其他接口应另查各自约束;Python JSON:可用标准 JSON 编解码保存预检结果。文中的流程、阈值和合成数据属于工程示例,不能代替当前账号、文件或运行环境的验收。
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。