提示工程与角色设定
提示工程与角色设定:分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示,以架构、轨迹与故障重放完成工程验收。
学习目标
- 能解释“提示工程与角色设定”如何分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示
- 能区分角色设定、任务指令、few-shot、结构化输出、prompt injection,并标出控制权、状态和副作用边界
- 能冻结输入与版本,沿以下证据定位首个分叉:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异
- 能注入“把用户提交的文档直接拼进系统指令,文档中的伪命令改变了工具权限”,完成阻断、恢复、复位和同输入重放
来源、课程身份与适用边界
“提示工程与角色设定”以Anthropic 公开全文《Building effective agents》建立工程总纲,并用Anthropic《Effective context engineering for AI agents》核对本章机制。
这不是一本名为《AI Agent 开发实战》的官方出版物,也不存在官方十四章目录。平台把公开工程文章、官方开发文档和原始论文重组为 14 个工程单元;下列 112 个节点是站内课程地图。正文、代码、图表、实验与练习均为独立教学重写,模型、API、协议或安全边界变化时必须重新验证。
本单元的八个工程坐标
- 提示工程与角色设定:这是“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的第 1 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 同样一句吩咐,会下指令和不会下,天差地别:这是“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的第 2 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 第一味:给小特发「岗位说明书」——角色设定:这是“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的第 3 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 第二味与全貌:提示的三层结构:这是“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的第 4 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 第三味:给几个范例,让它照葫芦画瓢——few-shot 示例:这是“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的第 5 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 第四味:让它按表格填,别写散文——结构化输出:这是“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的第 6 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 动手一:三味配料,每加一味输出好一截:这是“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的第 7 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 动手二:散文 vs JSON,程序提取天差地别:这是“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的第 8 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
术语与运行合同
↡角色设定:规定模型职责、边界和长期行为的系统层说明;在“提示工程与角色设定”中按以下证据核对:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。、↡任务指令:描述本次要完成什么及成功标准的要求;在“提示工程与角色设定”中按以下证据核对:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。、↡few-shot:用少量代表性输入输出示范目标行为;在“提示工程与角色设定”中按以下证据核对:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。、↡结构化输出:按机器可验证 schema 返回结果;在“提示工程与角色设定”中按以下证据核对:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。、↡prompt injection:不可信数据试图冒充高优先级指令的攻击;在“提示工程与角色设定”中按以下证据核对:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。。
本页不变量是:可信指令与不可信数据边界清晰,输出要求可被机器校验和回归测试。任何“成功”结论都要保存提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异;模型自评、最终措辞和单次 demo 都不能替代环境事实。
工程机制与反证实验
角色不能代替任务合同
“你是专家”不说明输入、产物、边界或成功标准,只会增加风格暗示。
动手验证:删除角色形容词,保留合同,比较任务正确率。
分区表达优先级
背景、指令、工具规则、示例与用户数据应明确分隔,防止角色混淆。
动手验证:在用户数据中放入越权命令,确认工具政策不变。
示例覆盖行为边界
精选正常、边界与拒绝样本比堆积大量相似例更节省注意预算。
动手验证:用相同 token 预算比较重复例与多样例。
结构输出进入确定性门禁
合法 JSON 仍要通过 schema 与业务规则,失败对象不能触发执行。
动手验证:注入缺字段和越权对象,确认下游调用数为零。
从架构到故障重放
1. 架构复杂度实验
在“提示工程与角色设定”中切换简单基线、受控工作流和自主循环,先判断“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”是否真的需要更高自主性,再比较延迟、成本、可观测性与风险。
Architecture decision laboratory
提示工程与角色设定
分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示
不变量:可信指令与不可信数据边界清晰,输出要求可被机器校验和回归测试
最小可运行切片
const prompt = composeSections({
role: trustedRole,
task: taskContract,
toolRules,
examples: canonicalExamples,
userData: markUntrusted(userInput),
});
const raw = await model.generate(prompt);
return businessRules.parse(outputSchema.parse(JSON.parse(raw)));切片只表达“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”的核心合同。生产实现还要补齐持久化、超时、密钥隔离、结构化日志、幂等和批量评测;如果不能重新取得提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异,代码跑通也不能证明机制正确。
小结
- 提示分离系统角色、任务指令、用户数据、示例与结构合同
- 角色不代替任务合同,须用评测而非直觉改提示
- 可信指令与不可信数据边界清晰,防止 prompt injection
- 结构化输出进 schema 与业务规则门禁,失败对象不触发执行
- 最小证据含提示版本、分区、输入样本、原始输出与 schema 错误
练习与答案
练习
问题 1:最小证明。 怎样用正常、边界和单故障三类样本证明“可信指令与不可信数据边界清晰,输出要求可被机器校验和回归测试”?
问题 2:节点覆盖。 提示工程与角色设定、同样一句吩咐,会下指令和不会下,天差地别、第一味:给小特发「岗位说明书」——角色设定、第二味与全貌:提示的三层结构、第三味:给几个范例,让它照葫芦画瓢——few-shot 示例、第四味:让它按表格填,别写散文——结构化输出、动手一:三味配料,每加一味输出好一截、动手二:散文 vs JSON,程序提取天差地别如何从目录词变成工程证据?
问题 3:恢复验收。 怎样证明“把用户提交的文档直接拼进系统指令,文档中的伪命令改变了工具权限”已经修复?
本章回顾
- “提示工程与角色设定”解决的是分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示。
- 核心不变量是可信指令与不可信数据边界清晰,输出要求可被机器校验和回归测试。
- 首要反例是把用户提交的文档直接拼进系统指令,文档中的伪命令改变了工具权限。
- 最小证据包包含提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 角色设定
规定模型职责、边界和长期行为的系统层说明。在“提示工程与角色设定”中必须能按以下证据重新定位:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。
- 任务指令
描述本次要完成什么及成功标准的要求。在“提示工程与角色设定”中必须能按以下证据重新定位:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。
- few-shot
用少量代表性输入输出示范目标行为。在“提示工程与角色设定”中必须能按以下证据重新定位:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。
- 结构化输出
按机器可验证 schema 返回结果。在“提示工程与角色设定”中必须能按以下证据重新定位:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。
- prompt injection
不可信数据试图冒充高优先级指令的攻击。在“提示工程与角色设定”中必须能按以下证据重新定位:提示版本、分区、输入样本、原始输出、schema 错误、评分与版本差异。