技术笔记:提示工程:优化系统提示词(李博杰《深入理解 AI Agent》2.4观后总结)
·
核心类比:系统提示词 = Agent 的员工手册;检验标准:聪明新人读完手册,能清晰知道如何执行工作。
一、语气与风格:设定Agent人格
影响用户体验,不直接决定任务成败。
- 明确输出约束:限制行数、句子数量;失败场景禁止冗长自我解释
- 指令强调策略:关键约束使用大写(
NEVER / MUST),不要滥用,避免权重稀释 - 消融实验结论:风格改变表达方式,但任务完成率影响有限,模型具备较强风格自适应能力
二、结构化提示:优化信息格式
模型对结构化文本感知更强,推荐双层结构:
- XML标签:机器可解析,区分数据来源、语义边界(用于外部内容标记、元信息)
- Markdown:人机可读,组织层级指令、流程
实践:不要使用纯冒号文本传递关键结构化信息,增加模型解析负担。
三、组织方式:流程驱动 >> 零散规则堆砌
❌ 反面:无序上百条规则,无优先级、无执行顺序,模型无法处理规则冲突
✅ 推荐:SOP标准操作流程,分步定义执行链路
- 优势:模型清晰识别当前阶段、下一步动作、异常处理逻辑
- 实验佐证:打乱有序流程、拆散规则,任务成功率下降30%以上
四、业务规则细化(生产Agent重中之重)
- 定位:属于产品设计问题,而非单纯技术问题,需要产品参与定义
- 核心原则:消除模糊描述,规则细化至可执行
- 禁止开放式判定(“根据情况选择”),明确边界、分类条件、例外场景
- 标准化计算逻辑、成功率判定、计费/分支规则,杜绝模型自由裁量
- 设计哲学:模型擅长执行复杂指令,不要把业务决策自由交给模型;在固定框架内释放模型思考能力
五、Few-shot 少样本示例使用策略
使用场景
期望输出格式、语气、判定标准难以用文字描述时,优先使用示例。
工程要点
- 数量:2~3个高质量示例(覆盖边界案例)最优,过多示例占用token、稀释规则注意力
- 放置位置
- 写入系统提示词:全局永久生效
- 独立user/assistant消息:支持会话动态切换示例集
- KV Cache约束:示例需要保持字节稳定;禁止逐请求动态检索替换示例,会持续破坏缓存
- 不适用场景:模型原生擅长、规则容易清晰描述的任务(示例只会浪费token)
六、工具定义设计
tools 工具定义和系统提示词共同构成静态前缀:
- 工具描述规范:写明使用边界、调用示例、性能建议、工具间协作约束
- 前沿架构:工具渐进式延迟加载(Skills模式)
- 初始上下文仅存放工具名称与简述
- 完整Schema按需追加至对话末尾
- 优势:不破坏KV缓存前缀;追加内容不会使已缓存token失效
注意:仅新版模型支持识别“对话中途加载工具定义”
七、消融实验(Prompt调优科学方法)
控制变量,逐项移除组件观测指标(任务成功率、工具错误率)
重点观测维度:
- 语气风格:对成功率影响较小
- 信息组织结构:影响最大,混乱结构大幅降低成功率
- 工具描述:移除描述文本,工具调用错误率上升45%
落地思路:Agent表现异常时,优先消融实验定位瓶颈,而非全盘重写提示词。
八、提示注入:Agent核心安全威胁
攻击原理
外部内容(网页、PDF、文档、图片元数据)嵌入伪装指令,劫持Agent行为。
风险放大:普通聊天机器人仅输出异常;具备工具调用能力的Agent可执行高危操作(文件修改、数据泄露)
上下文层防御方案(多层防护第一道防线)
- 来源标记:外部不可信内容使用XML包裹标识
<external_content source="web">,区分指令与原始数据 - 严格区分角色消息:利用Chat Template
system/user/assistant/tool角色隔离,禁止手动拼接消息 - 输入清洗:匹配恶意注入关键词,仅作为辅助防御
重要提醒
上下文防御无法100%拦截注入,必须搭配执行层沙盒、权限管控、高危操作二次确认分层防御;第三方Skill、网页检索知识库均存在注入风险。
九、核心总结
- 优先采用 SOP流程驱动 + Markdown+XML结构化 编写系统提示词
- 业务规则做到无歧义、可执行,减少模型自由判断
- Few-shot按需添加,固定示例保障KV缓存稳定
- 工具定义完善描述;大型系统可采用工具延迟加载架构
- 使用消融实验量化优化效果,拒绝纯经验调参
- 持续防范提示注入,上下文防护+执行权限隔离双层保障
更多推荐


所有评论(0)