核心类比:系统提示词 = Agent 的员工手册;检验标准:聪明新人读完手册,能清晰知道如何执行工作。

一、语气与风格:设定Agent人格

影响用户体验,不直接决定任务成败。

  1. 明确输出约束:限制行数、句子数量;失败场景禁止冗长自我解释
  2. 指令强调策略:关键约束使用大写(NEVER / MUST),不要滥用,避免权重稀释
  3. 消融实验结论:风格改变表达方式,但任务完成率影响有限,模型具备较强风格自适应能力

二、结构化提示:优化信息格式

模型对结构化文本感知更强,推荐双层结构:

  • XML标签:机器可解析,区分数据来源、语义边界(用于外部内容标记、元信息)
  • Markdown:人机可读,组织层级指令、流程

实践:不要使用纯冒号文本传递关键结构化信息,增加模型解析负担。

三、组织方式:流程驱动 >> 零散规则堆砌

❌ 反面:无序上百条规则,无优先级、无执行顺序,模型无法处理规则冲突
✅ 推荐:SOP标准操作流程,分步定义执行链路

  • 优势:模型清晰识别当前阶段、下一步动作、异常处理逻辑
  • 实验佐证:打乱有序流程、拆散规则,任务成功率下降30%以上

四、业务规则细化(生产Agent重中之重)

  1. 定位:属于产品设计问题,而非单纯技术问题,需要产品参与定义
  2. 核心原则:消除模糊描述,规则细化至可执行
    • 禁止开放式判定(“根据情况选择”),明确边界、分类条件、例外场景
    • 标准化计算逻辑、成功率判定、计费/分支规则,杜绝模型自由裁量
  3. 设计哲学:模型擅长执行复杂指令,不要把业务决策自由交给模型;在固定框架内释放模型思考能力

五、Few-shot 少样本示例使用策略

使用场景

期望输出格式、语气、判定标准难以用文字描述时,优先使用示例。

工程要点

  1. 数量:2~3个高质量示例(覆盖边界案例)最优,过多示例占用token、稀释规则注意力
  2. 放置位置
    • 写入系统提示词:全局永久生效
    • 独立user/assistant消息:支持会话动态切换示例集
  3. KV Cache约束:示例需要保持字节稳定;禁止逐请求动态检索替换示例,会持续破坏缓存
  4. 不适用场景:模型原生擅长、规则容易清晰描述的任务(示例只会浪费token)

六、工具定义设计

tools 工具定义和系统提示词共同构成静态前缀:

  1. 工具描述规范:写明使用边界、调用示例、性能建议、工具间协作约束
  2. 前沿架构:工具渐进式延迟加载(Skills模式)
    • 初始上下文仅存放工具名称与简述
    • 完整Schema按需追加至对话末尾
    • 优势:不破坏KV缓存前缀;追加内容不会使已缓存token失效

注意:仅新版模型支持识别“对话中途加载工具定义”

七、消融实验(Prompt调优科学方法)

控制变量,逐项移除组件观测指标(任务成功率、工具错误率)
重点观测维度:

  1. 语气风格:对成功率影响较小
  2. 信息组织结构:影响最大,混乱结构大幅降低成功率
  3. 工具描述:移除描述文本,工具调用错误率上升45%

落地思路:Agent表现异常时,优先消融实验定位瓶颈,而非全盘重写提示词。

八、提示注入:Agent核心安全威胁

攻击原理

外部内容(网页、PDF、文档、图片元数据)嵌入伪装指令,劫持Agent行为。

风险放大:普通聊天机器人仅输出异常;具备工具调用能力的Agent可执行高危操作(文件修改、数据泄露)

上下文层防御方案(多层防护第一道防线)

  1. 来源标记:外部不可信内容使用XML包裹标识 <external_content source="web">,区分指令与原始数据
  2. 严格区分角色消息:利用Chat Template system/user/assistant/tool 角色隔离,禁止手动拼接消息
  3. 输入清洗:匹配恶意注入关键词,仅作为辅助防御

重要提醒

上下文防御无法100%拦截注入,必须搭配执行层沙盒、权限管控、高危操作二次确认分层防御;第三方Skill、网页检索知识库均存在注入风险。

九、核心总结

  1. 优先采用 SOP流程驱动 + Markdown+XML结构化 编写系统提示词
  2. 业务规则做到无歧义、可执行,减少模型自由判断
  3. Few-shot按需添加,固定示例保障KV缓存稳定
  4. 工具定义完善描述;大型系统可采用工具延迟加载架构
  5. 使用消融实验量化优化效果,拒绝纯经验调参
  6. 持续防范提示注入,上下文防护+执行权限隔离双层保障
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐