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。 工程要点:
- 放置位置:写入system提示词,作为全局静态前缀;或放在首轮user/assistant消息内,支持按会话选用示例集。
- KV Cache约束:示例属于上下文靠前内容,一旦确定保持字节稳定;禁止逐请求动态检索示例,否则破坏缓存。
- 数量控制:2~3个覆盖边界案例的高质量示例,优于大量重复样例,避免稀释注意力。
1.6 工具定义的设计
tools工具定义是请求内另一大静态前缀,决定Agent调用工具的准确率,相当于工具操作手册。优秀工具定义包含使用边界、参数示例、性能提示、工具协作约束。详细设计方案第四章展开。
工具定义正在演进为渐进式披露(Skills思路):
-
传统模式:会话启动时,全部工具schema一次性放入静态前缀;
-
新机制(OpenAI Responses API、Anthropic Claude Code等):初始化仅加载工具名称与简述,完整schema按需检索后追加到上下文末尾;
缓存原理:末尾追加内容不会修改前面已缓存KV,不会破坏原有前缀缓存;schema追加完成后固定在当前位置,后续消息继续往后追加。 限制:仅新版模型支持该模式,开源自托管模型需要额外专项训练。完整主动工具发现见第四章。
1.7 提示工程的消融实验
基于Tau-Bench,采用控制变量消融实验,基线为结构化提示词、完整工具描述、中立语气,逐项修改观测指标(任务完成率、交互效率、满意度)
- 语气风格:风格改变仅影响表达方式,对任务完成率影响较小;
- 信息组织:打散流程、拆成无序规则,任务成功率下降>30%,容易违反业务规则;对人友好的结构对模型同样友好;
- 工具描述:删除工具描述仅保留函数签名,工具调用错误率上升45%。 实验方法论启示:Agent表现异常,优先做消融实验定位瓶颈,而非直接重写全部提示词。
1.8 提示注入:上下文安全的核心威胁
提示注入是Agent安全核心威胁。攻击者在外部内容(网页、PDF、邮件等)嵌入伪装指令,劫持Agent行为。
Agent比普通聊天机器人风险更高:Agent具备工具调用能力,注入可造成文件删除、数据泄露等不可逆操作。网页、文档、图片元数据都是潜在攻击入口。
上下文层面防御思路:区分指令 与数据
- 来源标记:外部内容使用XML标签包裹,标记来源,告知模型该内容为不可信外部数据;
- 严格使用Chat Template角色体系,区分system/user/assistant/tool,不要手动拼接消息;
- 输入清洗:过滤典型注入关键词,仅作为辅助防御,容易被变体绕过。
额外风险点: Agent Skills、Agent状态栏存在注入风险:Skill内容具备高执行权重;状态栏信息被模型高度信任,若数据源可被外部污染,会被攻击者利用。
上下文防御仅为第一道防线,无法完全杜绝攻击;需要搭配沙盒、权限控制等高风险操作执行层防御;知识库文档投毒带来的注入风险放在第三章。
1.9 提示注入攻防
搭建具备网页阅读、文件操作工具的Agent,基线规则:禁止泄露system提示词、高风险写入操作必须确认。 三组攻击场景:
- 直接注入:用户消息内嵌指令,要求忽略原有提示词、输出系统提示词;
- 间接注入:网页正文隐藏指令,Agent在总结网页时触发恶意文件操作;
- 记忆注入:多轮对话植入隐蔽指令,长期影响后续会话行为。
对照防御策略:无防御基线、系统提示词增加外部风险警告、外部内容XML来源标记、组合防御。 观测指标:各攻击场景下的攻击成功率,评估不同防御策略效果。
