← 返回博客
EngineeringBuild in PublicVideo

我让大模型修正拼错的名字,结果它把产品改名了

我的 AI 剪辑工具会修正字幕里的专有名词。在一条视频上,它把一个不认识的模型名换成了真实存在的竞品。原因在哪,代码怎么改。

2026年9月28日

我让大模型修正拼错的名字,结果它把产品改名了

创建时间:2026 年 9 月 28 日 · 更新时间:2026 年 9 月 28 日

Katto 是一款 AI 视频剪辑工具。你丢进一段长视频,它把其中的精彩片段剪成竖屏短视频,并帮你写好字幕。我一个人开发它,并且全程公开。这篇文章讲的是我在定价页上宣传的一个功能,而我发现它悄悄在做与职责相反的事。

我本来要解决的问题

语音转文字对普通词很在行,对名字则很糟糕。Whisper 听到一个从没见过的品牌,就按发音写下来。"Trump" 变成 "trompe"。"Suárez" 变成 "Suares"。"ChatGPT" 变成 "chatgépété"。在一条法语足球视频里,我曾在同一份转录稿中数出九十八处这样的错误。

名字被写歪的字幕看起来很随便,而字幕又是一个片段里最显眼的部分。于是我加了一道修正环节:转录完成后,文本交给一个小语言模型,只给它一条指令,找出被按发音拼写的专有名词并改正拼写。每条视频大约花一美分。那九十八处都被修好了。

实际上线后发生了什么

上周有用户剪了一条关于大语言模型的法语视频。讲者反复提到一个叫 JEV 的模型。Whisper 听到后写成了 "Jev",已经足够接近,没人会觉得有问题。

结果生成的片段标题是《为什么 Jamba 被高估了》和《Jamba:既是革命,又被高估》。字幕里写着 Jamba。描述里也写着 Jamba。

Jamba 是一个真实存在的大语言模型,由 AI21 开发。它只是跟视频里说的那个毫无关系。

我去看了流水线存下的数据。归档的转录稿里 "Jev" 出现了两次,"Jamba" 零次。之后的每一个环节都只有 "Jamba",再没有 "Jev":打分后的候选片段、片段元数据、片段池,总共二十四处。转录本来是对的,而我为了保护它加上去的东西把它弄坏了。

模型为什么会这么做

它做的正是一个乐于助人的助手会做的事。视频讲的是语言模型。"Jev" 不是它认识的模型。"Jamba" 是它认识的模型,而且眯着眼看,两者相差不远。在这个语境下,把前者换成后者看起来像是修正,而不是杜撰。

这就是这类任务里没人提醒你的失效模式。拼写检查器遇到不认识的词,会放着不动。语言模型遇到不认识的词,会去抓离它最近的那个它认识的词,而且它的领域知识越多,这一抓就越自信、越错。我的修正器在生僻名字上表现更差,恰恰是因为它在常见名字上表现很好。

最扎心的部分

这一点我早就想到了。提示词里用大写写着:

ONLY fix spelling and capitalization. NEVER replace a name with a DIFFERENT name. Inventing a plausible-but-wrong name is WORSE than leaving an unusual one unchanged. […] Do NOT guess a better-known name from context.

三句话,毫不含糊,就是专门为了防止这件事写的。模型读了,然后照样给产品改了名。

我不认为这段提示词写得不好,我现在也不再认为换一段更好的就能解决问题。要求模型不要做它天然倾向去做的事,是一种请求,不是一种约束。它大部分时候有效,而这比完全无效更糟,因为你会因此不再检查。

我最后的做法

这条规则从提示词里搬进了代码。模型仍然提出修正建议;现在由一个函数来判断每条建议属于拼写修正还是改名,并把改名的那些悄悄丢掉。

判断方法故意做得很粗糙:把两个字符串都去掉大小写和重音符号,再衡量原词在替换词中保留了多少。高于 0.6,就是同一个名字的不同拼法。低于这个值,就是另一个名字。

我测试集里的每一条修正都保留了下来。有些合理的修正会被误伤:第五行就是真实案例。法语讲者说 "Nguyen" 会被听成 "nouillène",去掉重音之后两个字符串几乎没有共同之处,于是这道防线把这条修正扔掉了。罗马音的日文名字,以及用另一种语言逐个字母念出的缩写,也会遇到同样的情况。

这是我选的那一边。一个奇怪的名字留在那里是显眼的,读者能推断出原本要说什么。一个错误的名字不显眼,谁也推断不出来。被拒绝的修正会连同两个字符串一起记录下来,因为一次拒绝意味着模型刚刚试图给某样东西改名,这是值得看一眼的。

几点教训

模型可以无视的规则不算规则。如果一条约束很重要,它应该写在模型之后运行的代码里,而不是写在模型要读的一段话里。提示词表达意图,但不能强制执行意图。

要看修正的方向,而不只是看有没有修正。我对这个环节是有指标的:每条视频改了多少处。九十八看起来是个健康的数字。但没有任何指标衡量一次修正是让文本更接近事实还是更远离事实,而如果你只统计总数,坏的修正和好的修正毫无区别。

一条既存输入又交付输出的流水线可以骗你两次。归档的转录稿写着 "Jev",而交付出去的每个片段都写着 "Jamba"。如果我只看归档,我会得出流水线没问题的结论。真正重要的检查,是对送出门的东西做的那次检查。

自信本身就是这类失败的一部分。一个把陌生名字原样留下的修正器,产生的是显眼但无害的怪异之处。一个把它替换掉的修正器,产生的是干净、流畅、错误的文本,没人会质疑,包括我,直到拍视频的人读到自己的字幕。

这道防线当天就上线了。如果你剪的视频讲的是某个冷门话题,而 Katto 把一个不常见的名字原封不动地照听写出来,那现在是有意为之。

相关文章

准备好把你的视频变成爆款短片了吗?

Katto 自动将你的长视频剪辑、加字幕并重新构图,转换为短视频内容。

免费试用 Katto →