当前位置: 首页 > news >正文

【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)搜索615日从杭州飞往北京
的特价机票(价格比平常低30%的机票)

除此之外,「分界符/标题」「重要说明」都是常见的强化的手段

一些不成体系的优化技巧

本人亲测有效的技巧
  1. 要么只有中文,要么只有英文,不要既有中文又有英文(模型训练资料里面少有一篇文章同时有中英文)
  2. 上下文一直,比如前面用了全称RequirementId,后面就不要用ReqId
网传有用,但我测试效果一般的技巧
  1. 表达情绪,告诉AI这件事很重要,会有很严重的后果/威胁AI【即使我说了这会导致系统崩溃,大模型依然不管不顾】
  2. 让大模型去做某事,而不是不做某事【没有任何影响】
还没来得及测试的技巧
  1. 最后加上一句话/在下一次对话中加入,你是不是漏了什么【大模型更善于做评估>生成】
  2. 不让大模型直接判断对错,而是让大模型先自己生成,然后再要求判断对错【大模型更善于做评估>生成】
  3. 要求大模型一步步思考
  4. CO-START框架:C-背景、O-目标、S-风格、T-语调、A-听众/读者、R-返回值格式【这是新加坡prompt大赛冠军的使用的框架】

prompt调优的基本原则

  1. 没有万能的prompt
  2. 好的prompt是在不断实践和调整中优化出来的

参考资料

  1. 吴恩达的提示词工程课:https://www.bilibili.com/video/BV1GYzCYmEYb/?spm=ata.21736010.0.0.136812a89BwWiA&vd_source=828226ba8c0b4c5ec57ea92e4991dd26
  2. 【CO-STAR 提示词指南】https://weibo.com/tv/show/1034:5031216034807827?from=old_pc_videoshow
  3. GPT 最佳实践中文大白话版本

其实参考的资料不多,如果有更好的prompt学习资料,欢迎留言

相关文章:

  • 安装VSCode的时候没勾选将“通过Code打开”操作添加到Windows资源管理器目录上下文菜单(右键VSCODE打开)
  • 计算机视觉课程笔记-机器学习中典型的有监督与无监督学习方法的详细分类、标签空间性质、解释说明,并以表格形式进行总结
  • WebFuture:模板如何加上简繁切换?
  • Vue3+TypeScript中v-bind()的原理与用法
  • 【Docker基础】Docker核心概念:命名空间(Namespace)之User详解
  • 66、【OS】【Nuttx】【构建】System.map文件生成(上)
  • 1572. 矩阵对角线元素的和
  • DELL R730XD服务器调整风扇转速
  • [linux] ftp上传文件
  • 设计模式笔记_创建型_单例模式
  • 服务器静态ip,网关不能占用*.*.*.1
  • LeetCode--33.搜索旋转排序数组
  • Distilling Knowledge via Knowledge Revie
  • 4. 时间序列预测的自回归和自动方法
  • 【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(软件篇)(二)
  • TortoiseSVN迁移到本地git
  • 力扣面试题 17.05. 字母与数字
  • 海康威视GigE工业相机的python调用demo
  • 无穿戴动捕革命:体育医疗双领域,解锁人体姿态分析新范式
  • 充电桩运维管理工具系统的**详细功能列表** - 慧知开源充电桩平台
  • 网站建设栏目流程/想在百度做推广怎么做
  • 来个网站吧好人一生平安2022/app软件下载站seo教程
  • 陕西企业网站建设/seo百度网站排名软件
  • 成都网站搜索优化/杭州谷歌推广
  • 国外学校网站模板/今日重大事件
  • 做视频链接网站/搜索指数查询