作者用 50 道可自动校验的任务测试八个本地模型,规模覆盖 0.6B 至 14B,并比较朴素、普通和华丽三种提示文风。测试结论是文风影响较小,规定答案格式的指令更影响结果。
让 LLM 帮你“优化” prompt,你经常会得到这样的结果:
敬请对下文所载订单往来函件进行细致审阅,并从中提炼如下关键事项……
小型本地模型还能看懂这种表达吗?反过来,如果你用非常简单的词、很短的句子,像给孩子解释一样,会对 1B 模型有帮助吗?
上一次测试,我用拼写错误和糟糕的标点来折腾 prompt。这一次,拼写完全正确,只改变语言风格:简白、普通或华丽。我把每个版本都交给八个本地模型运行,规模从 0.6B 到 14B。14B 已经是我的 16 GB VRAM 能容纳的最大模型。
简短的答案是:语言风格本身几乎没什么影响。真正重要的是其中一行,也就是告诉模型该如何组织答案格式的那一行。
测试包含 50 个任务,每个任务的答案都能用脚本检查。共五类,每类十个任务:
每个任务都有三个版本:
三个版本中的事实、数字和条件完全相同。运行之前,我让一个 Claude 模型检查每组三个版本是否存在语义差异(它漏掉了一处,后面会讲)。你会粘贴进去的数据,比如订单说明或记录列表,在各个版本中完全一致。变化的只有数据周围的指令措辞。
所有模型都通过 Ollama 运行,并关闭 thinking:Qwen3 0.6B、1.7B、4B-instruct、8B、14B,以及 Gemma3 1B、4B、12B。每个 prompt 用固定 seed 测试三次。主测试共调用 3,600 次,另有 1,440 次调用用于后续数学测试。
这里统计的是 40 个非数学任务,指标包括正确率,以及相对普通版本的差值和对应的 95% 区间。
从 8B 开始,三个版本的正确率差距都在 4 个百分点以内。即使华丽英语的句子长达 23 个词,也完全没有拖累这些模型。
在 4B 及以下模型中,可以看到一个趋势:普通版本得分最高,简白版本和华丽版本都低了约 8 个百分点。但这些区间全都触及零,所以我不能说这个结论已经得到证实。不过,它们指向同一个方向。对小模型来说,使用非常简单的语言也不是稳妥的选择。我的简白 prompt 比普通版本略长,因为句子更多、每句更短,事实也分散在更多句子里。
数学结果看起来才是重头戏。汇总所有模型后,简白版本的正确率为 28%,普通版本为 34%,华丽版本为 18%。qwen3 4B-instruct 的正确率从普通版本的 93% 降到了华丽版本的 43%。
然后,我查看了模型的回答。当模型写出计算过程时,正确率为 79%;当它只给出一个数字时,正确率只有 11%。这些模型都关闭了 thinking,所以写出步骤本身就是它们的思考过程。
而格式指令那一行,决定了它们有多大概率写出步骤:
华丽 prompt 并没有让模型看不懂。模型反而更严格地遵守了指令,而这阻止了它们进行推理。
为了区分这两种影响,我保留每道题原有的语言风格,但给三个版本都换上了相同的最后一行:
最后一行相同时,题目文本的语言风格最多只会让得分变化 5 个百分点。改变最后一行,却能让得分变化 45 个百分点。
最奇怪的是,两种含义相同的简白表达竟然产生了不同的结果。面对“只给出数字。”,qwen3 1.7B 在 17% 的回答中写出了计算过程;面对“回答时只写数字。”,这个比例却达到了 80%。同一个模型,同样的题目,措辞也几乎相同。
其中一个提取任务包含这样一段说明:“你好,我是 Becker Design 的 Laura Becker。我们想订购 12 盏台灯……”
这其实不能算是错误答案。“委托客户”完全可以指公司。华丽措辞让问题变得更模糊,模型于是选择了另一种理解。我用来检查三个版本语义是否一致的 Claude 审核模型,也没有指出这个问题。这正是让 LLM 改写 prompt 的风险:每一个华丽词汇,都有一点可能让原意发生偏移。
理论。 Instruction-tuning 数据大多使用普通、直接的英语。因此,“普通” prompt 对模型来说应该最熟悉,而非常简白和非常华丽的英语应该都比较陌生。小模型更难应对不熟悉的输入。这可以解释为什么小模型在普通版本上表现最好,而大模型不受影响。
测试。 Perplexity 衡量的是一段文本让模型感到多么意外。数值越低,说明越熟悉。我用同样的 Qwen3 模型(0.6B、1.7B、4B-instruct),为全部 150 个 prompt 的指令措辞计算了分数,不包含三个版本中完全相同的粘贴数据。
然后,我逐个任务检查:模型是否也更容易答错那个不熟悉的版本。在非数学任务中,两者的关联很弱(r 介于 −0.15 和 +0.08 之间),而且对任何模型来说,都无法确认它与零存在差异。在数学任务中,4B 模型的关联很明显(r = −0.41)。但这又是格式指令造成的:华丽表达“仅提供数值”既是模型最不熟悉的文本,也是阻止模型进行推理的那一行。
解释。 这个理论只对了一半。
华丽英语对这些模型来说确实显得陌生:perplexity 大约是普通版本的两倍。但它们依然能理解。仅仅是词汇不熟悉,几乎不会损害准确率。
简白英语和普通英语的熟悉程度完全一样,但小模型在简白版本上的表现仍然稍差。所以,原因不可能是熟悉程度。更可能的原因是结构:我的简白版本把每个任务拆成了更多、更短的句子,小模型需要把分散的事实重新串起来。
因此,关键不太在于你用了哪些词,而更在于任务是如何组织的,以及模型会多严格地解读格式指令。
别费心把 prompt 改写成更华丽的英语。这不会带来帮助,还可能改变原意。
也别为了小模型刻意把语言写得过于简单。普通、直接的英语表现不输任何一种风格,在 4B 及以下模型上甚至略好一些。
把精力放在格式指令上。对关闭 thinking 的模型来说,“只输出数字”就是让它猜答案。如果你想得到正确的数字,就让它写出计算过程,再读取最后一行。
如果 LLM 改写过你的 prompt,请检查改写后的版本,看看是否有词语存在两种解释。
本次测试包含 50 个任务,每个 prompt 测试三次,使用固定 seed 和 Ollama 默认 temperature。三种语言风格由一个人编写,并借助了 LLM,所以换一个作者,“华丽”版本可能更难,也可能更简单。华丽 prompt 比普通版本更长,因此长度与语言风格的影响部分混在了一起。测试只涉及英语,只使用规模不超过 14B、关闭 thinking 的本地模型。这次没有测试前沿模型;我之前的拼写错误测试表明,它们很可能对这些变化都不以为意。Perplexity 检查只覆盖三个较小的 Qwen 模型,计算分数时使用全精度权重,而实际运行使用的是 Ollama 的 4-bit 版本。关于简白版本的“结构”解释,是我认为最合理的解读,并非这次测试单独验证过的结论。
包含 prompt、测试框架和全部原始回答的仓库:github.com/valbarov/prompt-register-test
如需进一步处理,你可以考虑屏蔽此人和/或举报滥用行为。