【Manus第三篇-Prompt优化】两周实战,一套注意力视角的prompt优化框架,真的有用!
为了让OpenManus听话,调了2周的prompt,以下为一些总结
技巧介绍
1.基础格式
首先,prompt的核心组成应该包括:
- 角色、任务、返回值&例子
- 重要说明:你需要的其他约束。如果要说明的信息非常多,可以再拆分成其他子标题,如遇到错误,遇到阻塞
- 分隔符:可以使用### ```等作为分隔符,非常重要,有效的帮助AI识别重点
##身份
你是一个测试工程师##目标
你的目标是帮助用户完成代码的测试工作##返回值
你需要返回具体测试用例,需要包括在什么页面元素上执行什么动作,最好拆分成多个步骤,例如:
1.[账号输入框]输入账号
2.[密码输入框]输入密码
3.[登录按钮]处点击##重要
1.如果你需要登录某个页面,你可以使用以下这个
账号,账号sanxuan 密码test
2.你要重点关注用户提供给你的数字和括号内的信息
3.你要根据用户的输入进行操作,不要编造信息
其余部分:背景、风格、腔调、观众…。网上还有说要添加其他各种信息的,目前没有尝试,建议先按照上面的基础格式去初始化,后续根据需要不断调整
2.模型的注意力
如果你已经完整的描述了信息,但是大模型还是不能按照预期输出,那就要关注模型的注意力到哪里。个人经过2周总结下来的调优过程如下
- 移动:当我们发现某一句话,大模型总是会执行,那我们可以把我们要强调的信息,放到这句话附近。
比如在OpenManus中,为了避免大模型执行超出当前步骤的操作,会加上这句话
......
4. 任务完成:
- 如果完成则使用terminate工具为实现当前步骤 ,下一步应该做什么?
......
但效果并不好,即使执行完了当前任务,模型还是会继续调度做额外的步骤。为此,我改成了
......
4. 任务完成:
- 每次都要判断当前步骤的任务是不是完成了,只要
完成了就使用terminate工具来终止为实现当前步骤 ,下一步应该做什么?
......
效果还是不好,最后我改成了
......
4. 任务完成:
- 如果完成则使用terminate工具当前步骤做完了吗?做完了的话请调用terminate;
没做完的话为实现当前步骤 ,下一步应该做什么?
......
效果就非常好,大模型总是能在完成之后立刻退出当前步骤。原因就是「为实现当前步骤 ,下一步应该做什么?」这句话是提交给大模型的任务,是大模型核心关注的句子。
除了【核心转移】之外,还有一些转移的技巧
- 【后置转移】把重要的信息放到prompt的最后,避免上下文太长导致遗忘。
(这也是一个prompt攻击手段,通过多次对话,让大模型忘记System prompt,就能让大模型突破系统限制,比如通过这个手段获取到system prompt)
- 【模块转移】同一个模块的信息最好是在同一个子标题里面描述。比如同样一句话,我加在task里面就会非常有效,加在important里面就毫无作用
## Task to accomplish:{query}
//加在这里非常有用
If the task does not include changeId
or 变更id,i will not do something## Important:
1....
//加载这里完全不起作用
2.If the task does not include changeId
or 变更id,i will not do something
- 【记忆转移】将重要信息在上一轮对话的返回值中给出,利用大模型对于历史记忆的高关注度。
- 强化:通过一些数字、括号、##等标识符来强化大模型的关注度
比如为了避免大模型编造url或者一些数字的信息,我会加上这句话,利用括号和数字来强化关键信息的关注度,还可以有效的解释专业概念,避免大模型胡编乱造
System Prompt:对于括号中的内容以及数字你要
重点关注,这是用户对于关键信息的解释,你可以
加入到对应的步骤中User Prompt:请你在百度页面
(wwww.baidu.com)搜索6月15日从杭州飞往北京
的特价机票(价格比平常低30%的机票)
除此之外,「分界符/标题」「重要说明」都是常见的强化的手段
一些不成体系的优化技巧
本人亲测有效的技巧
- 要么只有中文,要么只有英文,不要既有中文又有英文(模型训练资料里面少有一篇文章同时有中英文)
- 上下文一直,比如前面用了全称RequirementId,后面就不要用ReqId
网传有用,但我测试效果一般的技巧
- 表达情绪,告诉AI这件事很重要,会有很严重的后果/威胁AI【即使我说了这会导致系统崩溃,大模型依然不管不顾】
- 让大模型去做某事,而不是不做某事【没有任何影响】
还没来得及测试的技巧
- 最后加上一句话/在下一次对话中加入,你是不是漏了什么【大模型更善于做评估>生成】
- 不让大模型直接判断对错,而是让大模型先自己生成,然后再要求判断对错【大模型更善于做评估>生成】
- 要求大模型一步步思考
- CO-START框架:C-背景、O-目标、S-风格、T-语调、A-听众/读者、R-返回值格式【这是新加坡prompt大赛冠军的使用的框架】
prompt调优的基本原则
- 没有万能的prompt
- 好的prompt是在不断实践和调整中优化出来的
参考资料
- 吴恩达的提示词工程课:https://www.bilibili.com/video/BV1GYzCYmEYb/?spm=ata.21736010.0.0.136812a89BwWiA&vd_source=828226ba8c0b4c5ec57ea92e4991dd26
- 【CO-STAR 提示词指南】https://weibo.com/tv/show/1034:5031216034807827?from=old_pc_videoshow
- GPT 最佳实践中文大白话版本
其实参考的资料不多,如果有更好的prompt学习资料,欢迎留言