提示词不是一句神奇咒语,而是一份给模型的临时任务说明。好的输入让模型知道自己要完成什么、可以依据什么、必须遵守什么,以及最终结果长什么样。

四个必要部分

一份实用提示通常包含:

  1. 任务:要完成的动作,例如总结、分类、抽取或比较。
  2. 上下文:完成任务所需的资料、用户输入和业务背景。
  3. 约束:禁止编造、篇幅、语气、语言和必须覆盖的要点。
  4. 输出:字段、顺序、格式和无法完成时的返回方式。

例如“帮我总结”过于模糊。更清楚的写法是:面向项目负责人,用三条要点总结以下会议记录;每条包含决定、负责人和期限;资料没有写明时使用“待确认”,不要补充姓名。

指令与资料必须分开

把用户上传的文件、网页正文和检索片段放在明确的分隔区域,并说明它们是待处理数据,不是新的系统指令。外部内容可能包含“忽略之前要求”之类文字,应用不能因此放弃原有规则。

系统级要求负责长期不变的角色和边界,开发者或流程指令负责当前任务,用户输入表达具体需求,工具和检索结果只提供数据。优先级设计应在应用层固定,不要把所有内容简单拼成一段字符串。

示例用于消除歧义

当格式或判断标准难以只用文字说明时,提供少量输入输出示例。示例应覆盖正常情况和一个边界情况,并与真实任务一致。错误或互相冲突的示例会比模糊指令造成更大伤害。

不要堆入大量示例来弥补定义不清。先写清楚类别边界和字段含义,再使用示例说明容易混淆的部分。

上下文不是越长越好

长上下文会增加成本和延迟,也可能把关键条件淹没。可以先检索相关资料、压缩历史对话、删除重复段落,再把最重要的约束放在清楚位置。对于多轮聊天,应区分长期状态、近期对话和当前问题,不必每次传入全部历史。

用失败样本改提示词

提示词优化不应依赖“读起来更专业”。保存真实失败输入,判断问题来自资料缺失、指令歧义、格式不稳定还是模型能力不足。一次只修改一个主要因素,再用固定样本回归测试。

如果一个提示词需要越来越多例外条款,往往说明任务应该拆成多个步骤,或把确定性规则移到代码中。上下文工程的目标不是写最长的提示,而是让模型在最少歧义下完成一个边界清楚的任务。