很多人已经会写“请总结、请改写、请提取重点”这类基础提示词,却仍然很难稳定复用结果。问题通常不在于提示词不够复杂,而在于任务没有被拆成可检查的流程:什么算完成、输入有哪些边界、输出必须遵守什么格式,以及结果应该由谁、按什么标准验收,都没有提前说清楚。
一次性提问的常见模式是:想到什么就补充什么,模型给出结果后,再根据不满意的地方继续追加要求。这种方式适合探索,却不适合复用。因为每次输入的背景、判断标准和修改方向都可能变化,最后很难判断究竟是哪一部分起了作用。
更稳妥的做法,是先把任务写成一个可以交给别人执行的工作说明。至少要回答四个问题:
例如,“整理一段会议记录”并不是完整目标。更清楚的目标应当包括:从记录中提取已经确认的事项、尚未解决的问题和后续行动;没有明确提到的内容不得自行补全;结果要便于继续查看和核对。这样,任务就从“帮我整理一下”变成了能够验收的工作对象。
目标越清楚,后面的提示词越不依赖临场发挥。模型负责生成结果,人负责定义完成条件。
上下文组织的重点,不是把所有资料都塞给模型,而是区分哪些信息真正会改变输出。
可以把输入资料分成三层。第一层是任务背景,例如这段内容来自什么场景、面向什么读者、处理结果要用于什么后续工作。第二层是判断规则,例如哪些内容需要保留原意、哪些信息必须标记为未知、遇到矛盾时以哪一部分为准。第三层是原始材料,也就是模型实际要处理的文本、数据或问题。
这三层混在一起时,模型容易把背景说明误认为正文内容,也可能把示例中的表达当成事实。把它们分开,既方便模型理解,也方便之后排查问题。
上下文还应当明确边界。比如,资料中没有出现某项信息时,是要求模型留空、标记“未提供”,还是允许根据常识推断?这是三个完全不同的任务。许多所谓“回答不稳定”,其实是因为这个判断没有被定义。
对办公人员来说,可以先观察一件事:同一份资料交给模型两次,结果是否会在关键字段、结论范围或遗漏内容上发生明显变化。对开发者来说,则应进一步固定输入来源、提示词版本和调用条件,否则测试结果无法比较。
格式要求不是为了让答案看起来整齐,而是为了让人或程序能够快速判断结果是否合格。
一个可复用的输出约束,通常需要说明三件事。第一,结果由哪些部分组成;第二,每一部分需要包含什么信息;第三,缺失或不确定时如何处理。例如,要求输出“事项、负责人、时间、依据”四个字段时,还要说明没有明确负责人的情况下不能猜测,时间不完整时要保留原文表述。
不要一开始就追求复杂格式。格式越复杂,越容易把注意力放在排版上,却忽略内容是否正确。可以先从少量、用途明确的字段开始,确认这些字段确实能帮助后续查看、复制或处理,再逐步增加约束。
如果输出会被其他工具继续读取,格式一致性就更重要。此时验收不能只看“读起来像不像”,还要检查字段是否缺失、类型是否混乱、额外说明是否混入结果,以及模型是否在资料不足时擅自补全。
只用一两个熟悉案例测试提示词,很容易得到虚假的稳定感。真正有用的测试样本,应当覆盖正常情况、边界情况和容易出错的情况。
正常样本用于确认主流程能否完成。例如,资料完整、表达清楚、任务目标明确的输入,应该能够得到符合要求的结果。边界样本用于测试信息不完整、顺序混乱、格式不统一或内容较长时,模型是否仍能按规则处理。反例样本则专门检查模型会不会把没有依据的内容当成事实,或者在指令冲突时选择了错误的规则。
样本不需要一开始就很多,但必须具有代表性。可以从日常工作中挑选已经处理过的真实材料,去掉敏感信息后保存下来。每次遇到一个新的失败案例,不要只修改当前答案,也要把它加入测试集,作为之后的回归样本。这样,测试集会随着问题积累变得更有价值。
测试样本还应保留预期结果或判断依据。对于开放式任务,不一定要规定唯一答案,但至少要写清楚哪些内容必须出现、哪些内容绝对不能出现、哪些表达可以接受。没有判断依据的样本,只是素材仓库,还不是评估集。
评分表不必追求复杂,关键是让不同版本的提示词能够按照同一套标准比较。可以采用“通过、部分通过、不通过”三档,也可以使用简单分值,但每个分值都要有明确含义。
一张实用的评分表,可以包含以下维度:
这些维度不必每次全部使用。若任务重点是信息提取,准确性、完整性和格式合规应当优先;若任务重点是改写,表达质量可以纳入评分,但不能因此掩盖事实错误。
评分时还要区分“硬性失败”和“普通扣分”。例如,漏掉一个次要描述可能只是完整性下降,但捏造原文没有提供的关键信息,就可能直接判定为不合格。只有把这类底线写出来,评分表才不会被流畅的语言带偏。
如果先看结果,再临时修改标准,很容易出现“这次看起来不错,所以标准放宽”的问题。更可靠的流程是,在运行测试前就确定合格条件,再统一评估各个版本。
合格条件至少应包含三类内容。第一类是任务指标,例如关键内容是否被正确提取。第二类是格式指标,例如结果是否包含规定字段,是否出现不允许的额外内容。第三类是风险底线,例如面对资料缺失、含糊表述或诱导性输入时,不能出现哪些错误。
这里不一定要马上设定复杂的百分比或精确阈值。对于个人使用,可以先规定“哪些项目必须全部通过”“哪些问题出现一次就需要修正”。等测试样本积累后,再根据历史结果设定更稳定的合格线。重要的是,标准要先于测试存在,而不是根据某次结果事后调整。
如果任务会交给其他人使用,还要明确谁负责最终验收。模型可以参与自检,但不能让模型自己成为唯一裁判。尤其是涉及事实判断、重要决定或对外发布的内容,仍需要人工复核。
提示词优化最容易犯的错误,是一次加入很多修改:增加角色设定、补充多个示例、重写格式、调整语气,再拿新结果与旧结果比较。这样即使结果变好了,也不知道究竟是哪项修改有效。
可以把一次迭代控制在一个主要变量上。例如,先只补充任务边界;下一轮只调整输出字段;再下一轮处理异常输入。每次测试都使用同一组样本,并记录版本、改动内容、得分变化和新增问题。
如果某个版本在熟悉样本上表现更好,却在边界样本上出现更多错误,不能简单判定它更优。提示词的目标不是让少数示例看起来漂亮,而是让整体表现更稳定。特别是当输出格式变得更严格时,还要确认它没有损害内容准确性。
版本记录不需要复杂工具。一个表格就可以记录:
这份记录的价值在于让修改可追溯。以后更换模型、调整资料来源或发现输出行为变化时,可以重新运行同一批样本,判断问题来自提示词、输入分布还是模型行为变化。
一个实用的提示词流程,可以压缩成一条固定路径:先定义任务目标,再整理必要上下文;随后规定输出结构和异常处理方式;接着准备代表性测试样本;在测试前写好评分标准;运行多个版本并记录结果;最后保留通过的版本和失败案例。
这套流程的重点不在于写出更长的提示词,而在于把“好结果”变成可观察、可比较、可复查的对象。提示词只是其中一环,测试样本和验收标准才决定它能不能稳定复用。
当某次输出失败时,不要只问“模型为什么答错了”,还要追问:目标是否含糊,资料是否缺失,边界是否没有写明,格式是否难以判断,评分标准是否遗漏了这个场景。沿着这条路径排查,提示词优化就不再是凭感觉改句子,而会变成一个能够持续积累的工作流程。
Δ
Ctrl+D