输入规范化:先把用户输入弄干净

人工智能 · 2026-10-07

脏输入是「模型变笨」的常见原因。本文给出六个规范化动作(按优先级)、规范化要可解释的三个要求、四类不该被规范化掉的内容,以及该观测的指标与最小实现。


脏输入是"模型变笨"的常见原因

用户从 Word 复制来的文本带**零宽字符** ✔、从 PDF 复制的带**换行错乱** ✔、

从表格复制的是**制表符混空格** ✔ —— 这些"看不见的脏"会破坏匹配 ✔、

让格式校验莫名失败 ✔、让检索召回落空 ✔。

**在进入模型之前先把输入规范化** ✔,比事后调提示词有效得多 ✔。

一、六个规范化动作(按优先级)

1. **Unicode 归一化**(NFC/NFKC ✔)—— 处理组合字符与全角/半角 ✔;

2. **去零宽与不可见字符**(U+200B~200D、U+FEFF ✔)—— 它们会静默破坏匹配 ✔;

3. **统一换行**(`\r\n` → `\n` ✔)与压缩连续空行 ✔;

4. **去首尾空白**、去掉重复分隔符 ✔;

5. **编码修复**(非法字节替换或拒绝 ✔,别让乱码进链路 ✔);

6. **长度与类型校验**(超长截断并**标注** ✔ —— 见长尾输入那篇 ✔)。

**第 2 条最容易被忽略** ✗:零宽字符肉眼不可见 ✔,但会让"看起来一样"的两段文本比对失败 ✔。

二、规范化要"可解释"

  • **记录做了什么改动**(去掉多少字符、是否截断 ✔);
  • 改动大时**提示用户** ✔("已去除 12 个不可见字符" ✔)——
  • 这比静默处理更让人放心 ✔;

  • **原始输入要保留**(用于复现与审计 ✔ —— 见可复现那篇 ✔)。
  • 三、什么不该被"规范化"掉

  • **代码块里的空格与缩进** ✗(一改语义就变 ✔);
  • **数学公式与符号**(如 `≤`、`×` ✔);
  • **多语言混排中的原始写法**(日文假名、阿拉伯文 ✔);
  • **URL/ID/哈希**(大小写敏感 ✔ —— 归一化大小写会直接搞坏 ✔)。
  • **做法**:把文本分成"**自然语言段**"与"**结构化段**"(代码/公式/ID ✔),

    只对前者做激进规范化 ✔。

    四、该观测什么

  • **规范化改动率**(去掉了多少字符 ✔ —— 异常升高说明上游有问题 ✔);
  • **规范化后校验通过率的提升** ✔(这是它价值的直接证据 ✔);
  • **因脏输入导致的失败占比** ✔(分类型统计 ✔)。
  • 五、一个最小实现

    ```

    ① 统一换行 → ② 去零宽/不可见 → ③ Unicode 归一化

    ④ 分段(自然语言 vs 代码/公式/ID)→ ⑤ 只对自然语言段做空白压缩与截断

    ⑥ 记录改动摘要 + 保留原始输入

    ```

    一条判据

    > 同样的内容,分别从网页、Word、PDF 复制进系统 ✔,模型的行为是否**一致** ✔?

    > 不一致,说明输入规范化没做全 ✗。

    想要你的品牌在AI回答里被推荐?

    免费诊断 →