Prompt工程记录
Prompt基本建议:
1.在查询中包含详细信息以获得更相关的答案
总结会议笔记:先将会议笔记总结为一段,然后写一份演讲者的打分表,列出他们的每个要点;最后列出发言者建议的下一步行动或者行动项目(如果有的话)
2.让模型扮演一个角色
3.使用分隔符清楚的指示输入的不同部分
总结以下文本:1234
总结由三个引号分割的文本
"""12342132131"""
4.指定完成任务所需任务
5.提供示例
6.指定所需的输出长度
提示工程
Few-shot
大多数情况下我们写的Prompt一般称为One-shot(零样本)通常依赖模型已经学到的知识
Few-shot 少量样本教导模型使用非常少量的训练数据来识别新对象
示例的作用有时超过千言万语
Few-shot并不复杂,只需要将一些类似的问题和答案作为提示的一部分输入即可
示例:
- 例题 1:“如果 3 个苹果售价 6 元,那么 5 个苹果多少钱?” → 解答:6÷3×5=10 元
- 例题 2:“4 支铅笔 8 元,买 7 支需要多少钱?” → 解答:8÷4×7=14 元
待解问题:“2 个笔记本 10 元,买 6 个笔记本要花多少钱?” → 模型应输出 “10÷2×6=30 元”
通过思维链提示法提升模型推理能力
核心:通过在输入序列中精心设计一系列有序的,逻辑相连的提示或者问题,促使AI模型不仅关注当前任务的直接需求,还能追溯并整合过往信息,形成一条条逻辑清晰的思维轨迹。
充分利用思维链提示法的关键是:设计高度结构化且具有引导性的提示序列,要求设计者深刻理解目标问题的内在逻辑,布局问题框架,铺设从简单导复杂的思考路径。
动态调整提示策略,根据模型反馈灵活修正思维链的方向和深度,也是优化中的重要环节。
最基础的思维链:在输入末尾加上“let's think step by step" 称为 Zero-shot-CoT
Few-shot-CoT
通过编写思维链样本作为提示,让模型学会思维链的推导方式
示例:
输入文本:
“请解决下面的数学问题,解题时请先写出详细的推理步骤,再给出答案。
示例 1:
问题:小明有 5 颗糖,妈妈又买了 7 颗,分给同学 3 颗,还剩几颗?
推理:
小明原本有 5 颗糖,妈妈买了 7 颗后,现在有 5+7=12 颗。
分给同学 3 颗后,剩下的数量是 12-3=9 颗。
答案:9示例 2:
问题:一个书架有 4 层,每层放 6 本书,借出去 10 本,还剩多少本?
推理:
书架每层 6 本,4 层一共有 4×6=24 本书。
借出去 10 本后,剩下 24-10=14 本。
答案:14现在请解决:
问题:3 个小朋友每人有 4 个气球,不小心飞走了 5 个,还剩多少个气球?
请先推理,再给出答案。”
- 思维链要 “接地气”:模仿人类自然推理的口语化表达(如 “首先”“然后”“因为… 所以…”),避免过于简洁或抽象。
- 示例数量适中:2-5 个示例效果最佳(太少则模型学不会推理模式,太多则可能稀释重点)。
- 明确提示 “先推理后答案”:在最后一个问题前强调 “请先写出推理步骤,再给出答案”,防止模型跳过思维链。
- 答案格式统一:示例中答案的标注方式要一致(如均用 “答案:XXX”“最终答案:XXX”),方便模型对齐输出。
- 复杂问题利用此方法准确率依然不够好
Least-to-Most Promoting
通过人工编的思维链提示样本可能并不能很好的迁移到其他问题中:泛化能力不够
Google提出两阶段进行的方法
1:自上而下的分解问题
2:自下而上的依次解决问题
LtM的核心不仅在于引导模型拆分问题,还要将子问题的问题和答案回传给子模型,理论上,整个过程会有三次调用大模型的过程:
- 原始问题 提问 拆分为子问题
- 子问题 提问 获得子问题回答
- 原始问题 子问题加答案 获得原始问题回答
主问题:A、B、C、D 四人排队,A 不在第一个,B 在 C 的前面,D 在 A 的后面,第一个人是谁?
Least-to-Most 提示过程:
子问题 1:根据 “B 在 C 的前面”,可能的位置顺序有哪些(只考虑 B 和 C)?
推理:B 必须在 C 左边,可能的顺序是 B→C(中间可隔人)。
答案:B 在 C 前,如 BXXXC、BX CX、BCXX 等子问题 2:结合 “A 不在第一个”,A 可能的位置是?
推理:总共有 4 个位置(1 到 4),A 不能在 1,所以可能在 2、3、4。
答案:A 在 2、3 或 4 位子问题 3:结合 “D 在 A 的后面”,A 和 D 的位置关系是?
推理:D 必须在 A 右边,即若 A 在 2,D 可在 3/4;A 在 3,D 在 4;A 在 4,D 无位置(排除)。
答案:A 在 2→D 在 3/4;A 在 3→D 在 4主问题(整合子问题):第一个人是谁?
推理:
由子问题 1:B 在 C 前,所以 C 不能在 1;
由子问题 2:A 不能在 1;
由子问题 3:D 在 A 后,若 D 在 1,则 A 需在 D 前(不可能),故 D 不能在 1;
剩下只能是 B 在 1。
答案:B
提示框架
BROKE:背景,角色,目标,关键结果,改进
COAST:上下文,目标,行动,场景,任务
ROSES:角色,目标,场景,解决方案,步骤
1. BROKE 框架
背景:
动态Job Shop Scheduling Problem(JSP)涉及在生产过程中处理作业和机器之间的调度问题。随着任务和作业的动态变化,如何在不确定性中实现高效调度成为一个挑战。现代算法,如遗传算法、启发式算法和强化学习,能够有效应对这一挑战。
角色:
调度系统(负责优化任务分配)
生产经理(决策和目标设定)
作业和机器(受调度影响的对象)
目标:
开发一个灵活的调度算法,能够根据动态输入(如作业到达、机器故障、生产任务变更等)自动调整和优化调度计划,以最大化生产效率和减少延误。
关键结果:
提高调度的实时响应能力,能快速处理动态变化
降低作业的延误时间和机器的空闲时间
提升整体生产效率和成本效益
改进:
探索基于强化学习的调度优化策略,以应对复杂的动态变化
考虑多目标优化,兼顾生产效率、资源使用和任务完成时间
2. COAST 框架
上下文:
在动态JSP环境中,生产过程中可能出现作业需求的突然变化,机器故障或突发事件,这些都要求调度算法能够快速响应。传统的静态调度方法无法适应这种动态变化,需要新的调度方法来优化决策。
目标:
优化动态环境下的作业调度,提高生产效率和机器利用率,减少作业的等待时间,并最大化按时交货率。
行动:
设计并实现一个动态调度算法,能够实时调整调度计划
将遗传算法与启发式算法结合,以处理动态作业调度的挑战
利用机器学习模型预测可能的作业需求和机器状态变化,从而提前做出调度决策
场景:
制造业车间,多个作业和机器同时运行
每个作业有多个工序,需要依赖不同的机器执行
作业到达时间和任务要求是动态变化的
任务:
实时监控和响应车间中作业和机器的状态变化
动态调整调度方案,确保尽可能减少生产瓶颈和延误
进行在线优化,考虑时间窗约束、优先级和机器能力限制等多种因素
3. ROSES 框架
角色:
调度系统:负责管理和优化作业调度
生产管理人员:通过调度系统获取生产状态反馈,并做出决策
作业任务:需按特定顺序和资源约束完成
机器设备:提供资源来完成作业操作
目标:
实现一个能够适应动态变化(如作业到达、机器故障)的调度系统,并在保持高效生产的同时,减少因这些变化导致的延误和资源浪费。
场景:
在一个现代化生产车间中,多个作业和多个机器同时运行。作业到达时间、工序执行时间和机器状态是动态的,可能在执行过程中出现故障或优先级变化。
解决方案:
设计一个动态调度系统,利用进化算法(如遗传算法)处理动态变化的作业调度问题
结合智能预测技术(如机器学习)预测未来可能的生产瓶颈,并根据预测调整调度策略
动态调度不仅考虑作业的完成时间,还考虑机器的利用率、设备的维护状态和作业的优先级
步骤:
建立一个系统模型,描述作业、机器、任务等对象的关系
实现一个动态调度框架,支持实时数据输入和调度调整
设计和实施遗传算法或其他进化算法,作为调度优化策略
集成机器学习模型来预测系统的动态变化并优化调度
在实际环境中进行测试和调整,确保系统能有效应对突发事件和需求变化