最近好几个老板找我聊,说AI答非所问。问的明明是获客成本,它给你扯品牌建设。问的是这条视频为什么跑不出去,它给你讲平台算法有多复杂。
我说你先别急着骂AI,把你跟它的对话截图给我看看。
看完我就知道问题出在哪了。不是模型不行,是你压根没教会它。你自己脑子里清楚要什么,但你给AI的信息,完全没把它带到那个位置上。
AI的"记忆力"和你想的不一样
斯坦福那边有篇论文,叫《Lost in the Middle》,专门研究这个事。结论特别反直觉:上下文越长,模型对中间部分的利用率越差。开头和结尾的信息,它记得清楚。埋在中间的关键指令,它直接无视。
这个现象太有意思了。我们都觉得,给AI的信息越多,它就越聪明。结果恰恰相反,你塞了一大堆背景资料,把最关键的那句"你要帮我做什么"埋在中间,它就真看不见。
你给的不是上下文,是干扰项。
我做个比喻你就懂了。上下文窗口就是个仓库,你把所有东西都堆进去,它确实都能装下。但AI不是仓库管理员,它是个来取货的工人。你指望它自己翻遍整个仓库找到你要的那件货?它只会拿最顺手的那件。
所以关键信息的位置,决定了AI能不能看到它。这个规律我反复验证过,不是玄学,是模型架构决定的。
System Prompt不是写作文,是贴标签

很多老板问我System Prompt怎么写。我说你先别想着写,你先想清楚三件事:AI知道它是谁吗?知道要干嘛吗?知道什么不能做吗?
这三个问题想清楚了,你再动笔。我自己写System Prompt的习惯是分层,角色定义在最前面,任务目标紧随其后,然后是关键约束,最后是输出格式。优先级从上往下排,最重要的永远放在第一句。
Anthropic官方也说过类似的话。Claude 3有200K的上下文窗口,听着挺吓人。但官方自己都承认,窗口大不等于记忆好,处理超长上下文的时候,信息召回还是不均衡。他们给的解决方案就是:把关键指令放在开头或者结尾,别埋在中间。还要主动要求模型,先回顾用户最近提出的要求再作答。
坦白讲,我自己早期也犯过这个错。写了一大堆背景介绍,真正的指令就藏在其中一段。AI跑出来的结果,完全不是我要的。后来我才意识到,不是它不听话,是我把它的注意力稀释了。
你写System Prompt不是在写作文,是在贴标签。标签越清晰,AI越知道往哪走。
你想要的不是"聪明",是"听话"
还有一件事,我发现很多人搞混了。他们以为AI答非所问是因为模型不够聪明,所以拼命想找更聪明的模型。其实不是。大多数情况下,你需要的不是更聪明的模型,是更听话的工具。
那怎么让它听话?靠约束,不是靠背景。
我见过太多人写System Prompt,写了一大段"你是我的商业顾问,你非常了解行业趋势……"这种废话。AI知道这些有用吗?没用。它需要的是具体指令:你的输出格式是什么,你的分析框架是什么,你绝对不能说什么。
OpenAI那边的文档也提过类似的事。GPT-4 Turbo上下文窗口很大,大到什么程度?能塞下一整本书。但官方明确说了,窗口大不代表好用,关键信息的摆放位置,直接决定了回答质量。
上下文窗口是仓库,不是你的大脑。你把重要的事放在仓库最里面,就别怪工人找不到。
这里我分享一个我自己在用的笨办法,不一定对,但对我有效。每次写System Prompt,我会把最核心的那条指令,放在开头第一句,然后结尾再重复一遍。开头是告诉它"你要干什么",结尾是提醒它"别忘了干什么"。中间的内容,全部是辅助信息,丢了也不可惜。
这个办法我用了很久,效果稳定。你下次可以试试。
行动建议
下次你发现AI答非所问,先别归咎于模型。打开你的System Prompt,问自己三个问题:第一句写的是什么?关键指令在第几行?如果AI只读第一段和最后一段,它能知道你要什么吗?
如果你的核心指令被埋在中间,赶紧挪位置。第一句说清楚你要什么,最后一句再强调一遍。中间的部分,能少就少,能删就删。
别追求完美,先写一版跑起来,不行再改。不要等准备好了再发,发了才叫准备好了。
AI这东西,你用不好,不是它的问题,是你还没学会怎么指挥它。而指挥的第一课,就是把最重要的那句话,放到它一定能看见的位置。
爱云发科技