跳到主要内容

2 篇博文 含有标签「system-prompt」

查看所有标签

负面提示词是代码异味:为什么系统提示词中的每个 “不要” 都是技术债

· 阅读需 11 分钟
Tian Pan
Software Engineer

打开任何已经上线超过三个月的生产环境 AI 功能的系统提示词(system prompt)。数一数其中的负向条款——“不要”、“绝不说”、“避免”、“在任何情况下都不”、“你绝不能”。如果计数达到了两位数,你看到的就不是一个系统提示词。你看到的是一个坟场。每一块墓碑都标志着一个特定的用户投诉、一个特定的事故报告,或者一条来自利益相关者的 Slack 消息,因为他们看到模型做出了一些令人尴尬的事情。团队在表面打了补丁后就继续前进了,现在这个提示词读起来就像一份被强行嫁接了人格的法律免责声明。

负向提示词是代码异味(code smells)。并非隐喻意义上的,而是字面意义上的。它们在提示词工程中相当于吞掉异常的 try/except 块、没有文档的配置标志,或者是 2022 年留下的 // TODO: refactor this。它们在某种程度上有效,直到它们失效。而且它们所掩盖的失败模式,几乎总是比它们被添加用来压制的那个失败更有趣。

Prompt 权重归因:识别系统提示词中的“无效指令”

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队发现他们的系统提示词存在冗余问题的方式都如出一辙——一次成本审查、一次延迟激增,或者某位工程师终于从头到尾读了一遍。他们通常会发现一个在六个月内有机增长的 2,000 token 的文档,其中散落着三个不同版本的“保持简洁”,还有指向二月份就已弃用的产品工作流的指令,以及模型在每次运行时都明显忽略的十几条规则。提示词规模庞大,但大部分内容其实毫无用处。

这就是 Prompt 信用分配问题 (Prompt Credit Assignment Problem):弄清楚一个数千 token 的系统提示词中,哪些指令真正驱动了模型行为,哪些只是消耗 token 并分散注意力的冗余负重。坏消息是,大多数团队完全跳过了这一步——他们在行为出错时添加指令,却从未减少过。好消息是,这有一套可重复的工程准则。