提示工程与角色设定

提示工程与角色设定:分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示,以架构、轨迹与故障重放完成工程验收。

学习目标

  • 能解释“提示工程与角色设定”如何分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示
  • 能区分角色设定、任务指令、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 错误、评分与版本差异;模型自评、最终措辞和单次 demo 都不能替代环境事实。

工程机制与反证实验

角色不能代替任务合同

“你是专家”不说明输入、产物、边界或成功标准,只会增加风格暗示。

动手验证:删除角色形容词,保留合同,比较任务正确率。

分区表达优先级

背景、指令、工具规则、示例与用户数据应明确分隔,防止角色混淆。

动手验证:在用户数据中放入越权命令,确认工具政策不变。

示例覆盖行为边界

精选正常、边界与拒绝样本比堆积大量相似例更节省注意预算。

动手验证:用相同 token 预算比较重复例与多样例。

结构输出进入确定性门禁

合法 JSON 仍要通过 schema 与业务规则,失败对象不能触发执行。

动手验证:注入缺字段和越权对象,确认下游调用数为零。

从架构到故障重放

分步1 / 3

1. 架构复杂度实验

在“提示工程与角色设定”中切换简单基线、受控工作流和自主循环,先判断“分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示”是否真的需要更高自主性,再比较延迟、成本、可观测性与风险。

Architecture decision laboratory

提示工程与角色设定

分离系统角色、任务指令、用户数据、示例和结构合同,并用评测而非直觉改提示

复杂度档位

不变量:可信指令与不可信数据边界清晰,输出要求可被机器校验和回归测试

受控工作流:只激活能够由收益证明的阶段1定义角色2写任务合同3隔离用户数据4加入示例5结构化验收蓝色表示当前方案承担的责任;虚线阶段仍留在系统边界外。关键证据:提示版本、分区、输…
自主性46
延迟52
成本48
可观测78

最小可运行切片

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 错误、评分与版本差异。

阅读导航

← LLM:Agent 的大脑 · ReAct:推理与行动循环 →

讨论

评论区加载中…