深入理解agent学习笔记(六)——提示工程-优化系统提示词

1 提示工程:优化系统提示词

1.1 语气与风格:系统提示词的"人格"

提示工程核心对象为系统提示词(System Prompt) ,即API消息列表中role: "system"消息,相当于Agent的员工手册,定义身份、行为规则、约束、工作流程。评判标准:如果一名新员工读完提示词仍不清楚如何工作,Agent同样无法完成任务。

语气风格容易被忽略,但显著影响体验。可通过指令限制输出行数、禁止多余解释;关键约束可用大写强调(NEVER),但不可滥用,避免效果稀释。

1.2 结构化提示:系统提示词的"格式"

大模型对结构化输入敏感。

  • XML标签:具备层次语义,机器可解析,区分信息边界;
  • Markdown:可读性强,适合组织层级指令; 二者可以配合使用:XML承载精确语义,Markdown负责人机可读的逻辑组织。

1.3 流程驱动 vs 规则堆砌:系统提示词的"组织方式"

人类的认知减负方法同样适用于大模型。单纯堆砌上百条零散规则,缺少优先级,模型难以判断冲突场景。 流程驱动提示词采用SOP标准操作流程,分步骤定义任务,明确当前阶段、目标与后续跳转逻辑。遇到异常时,模型基于所处步骤选择处理方案,而不是遍历全部规则匹配。

1.4 业务规则细化:系统提示词的"内容"

生产级Agent中业务规则细化是关键,属于产品设计问题,需要产品经理深度参与。 模糊的业务描述会造成Agent行为不稳定。业务规则必须细化至可执行级别,明确边界、判定条件、计算口径,消除歧义。

设计哲学:模型擅长执行复杂指令、提取上下文信息,但不应赋予业务规则上的自由裁量权。搭建清晰框架,让模型专注推理,而不是自行判断业务规则。提示词由产品经理基于业务数据迭代,工程师负责编码落地,不擅自修改业务逻辑。

1.5 Few-shot 示例:何时给模型看例子

当输出格式、风格难以用文字规则精准描述时,使用Few-shot示例效果更好;规则简单、模型原生擅长的场景,示例只会浪费token。 工程要点:

  1. 放置位置:写入system提示词,作为全局静态前缀;或放在首轮user/assistant消息内,支持按会话选用示例集。
  2. KV Cache约束:示例属于上下文靠前内容,一旦确定保持字节稳定;禁止逐请求动态检索示例,否则破坏缓存。
  3. 数量控制:2~3个覆盖边界案例的高质量示例,优于大量重复样例,避免稀释注意力。

1.6 工具定义的设计

tools工具定义是请求内另一大静态前缀,决定Agent调用工具的准确率,相当于工具操作手册。优秀工具定义包含使用边界、参数示例、性能提示、工具协作约束。详细设计方案第四章展开。

工具定义正在演进为渐进式披露(Skills思路):

  • 传统模式:会话启动时,全部工具schema一次性放入静态前缀;

  • 新机制(OpenAI Responses API、Anthropic Claude Code等):初始化仅加载工具名称与简述,完整schema按需检索后追加到上下文末尾;

    缓存原理:末尾追加内容不会修改前面已缓存KV,不会破坏原有前缀缓存;schema追加完成后固定在当前位置,后续消息继续往后追加。 限制:仅新版模型支持该模式,开源自托管模型需要额外专项训练。完整主动工具发现见第四章。

1.7 提示工程的消融实验

基于Tau-Bench,采用控制变量消融实验,基线为结构化提示词、完整工具描述、中立语气,逐项修改观测指标(任务完成率、交互效率、满意度)

  1. 语气风格:风格改变仅影响表达方式,对任务完成率影响较小;
  2. 信息组织:打散流程、拆成无序规则,任务成功率下降>30%,容易违反业务规则;对人友好的结构对模型同样友好;
  3. 工具描述:删除工具描述仅保留函数签名,工具调用错误率上升45%。 实验方法论启示:Agent表现异常,优先做消融实验定位瓶颈,而非直接重写全部提示词。

1.8 提示注入:上下文安全的核心威胁

提示注入是Agent安全核心威胁。攻击者在外部内容(网页、PDF、邮件等)嵌入伪装指令,劫持Agent行为。

Agent比普通聊天机器人风险更高:Agent具备工具调用能力,注入可造成文件删除、数据泄露等不可逆操作。网页、文档、图片元数据都是潜在攻击入口。

上下文层面防御思路:区分指令 与数据

  1. 来源标记:外部内容使用XML标签包裹,标记来源,告知模型该内容为不可信外部数据;
  2. 严格使用Chat Template角色体系,区分system/user/assistant/tool,不要手动拼接消息;
  3. 输入清洗:过滤典型注入关键词,仅作为辅助防御,容易被变体绕过。

额外风险点: Agent Skills、Agent状态栏存在注入风险:Skill内容具备高执行权重;状态栏信息被模型高度信任,若数据源可被外部污染,会被攻击者利用。

上下文防御仅为第一道防线,无法完全杜绝攻击;需要搭配沙盒、权限控制等高风险操作执行层防御;知识库文档投毒带来的注入风险放在第三章。

1.9 提示注入攻防

搭建具备网页阅读、文件操作工具的Agent,基线规则:禁止泄露system提示词、高风险写入操作必须确认。 三组攻击场景:

  1. 直接注入:用户消息内嵌指令,要求忽略原有提示词、输出系统提示词;
  2. 间接注入:网页正文隐藏指令,Agent在总结网页时触发恶意文件操作;
  3. 记忆注入:多轮对话植入隐蔽指令,长期影响后续会话行为。

对照防御策略:无防御基线、系统提示词增加外部风险警告、外部内容XML来源标记、组合防御。 观测指标:各攻击场景下的攻击成功率,评估不同防御策略效果。

相关推荐
霖霖7141 小时前
【ESP32笔记】RGB灯WS2812实验
笔记·单片机·mcu·物联网
Aurora_eye1 小时前
Git 笔记
笔记·git
yi0111 小时前
DAY28: LeetCode 111. 二叉树的最小深度
人工智能·笔记·python·算法·leetcode·二叉树·递归
诸神缄默不语2 小时前
小春学习日刊 2026年第1期:2026.10.13
学习
xxwl5852 小时前
三、区域赛算法模版第三章---字符串相关算法
笔记·学习·算法
卿卿的产品经理日记3 小时前
【AI产品经理实战】Day 37|拆开 JSON 与 EXE:数据都有格式
人工智能·笔记·python·json·产品经理
辣知3 小时前
辣知·化智80 《道德经》和光同尘的智慧
学习
wdfk_prog3 小时前
LWIP教程 15:IPv4 与 IPv6——从网络层工作原理到嵌入式工程取舍
运维·开发语言·网络·笔记·学习·智能路由器·ip
chde2Wang3 小时前
numpy学习3
学习·numpy