Prompt 提示工程学习笔记

一、Prompt设计的四个关键要素:

任务描述、输入数据、上下文信息、提示风格

(1)任务描述 :描述想要让LLM遵循的指令。描述应详细清晰,可进一步使用关键词突出特殊设置,从而更好地指导LLM工作。
(2)输入数据 :对于非结构化数据可用文本描述的方式输入,对于非结构化数据(知识图谱、表格、代码等)采用一种合适的方式,例如:文本化、线性化转换函数。
(3)上下文信息 :上下文和背景信息。有助于更好地描述任务范例、任务目标、特殊的输出格式以及输入和输出之间的映射关系。
(4)提示风格:设置合适的提示风格,有助于激发LLM解决特定任务的能力。例如,角色设定、添加相关前后缀:"Let us think step by step"、拆解为子任务。

二、Prompt设计的四个准则:

任务描述目标清晰、分解为简单的子任务、提供少量示例、使用友好的格式

(1)任务描述目标清晰 :避免莫能两可的描述,导致不精确的返回结构。一个清晰而详细的描述应该包含解释任务的各种元素,例如:任务目标、输入/输出数据、约束要求(字数等信息)
(2)分解为简单的子任务 :将困难任务分解为多个子任务更容易解决问题。可用编号形式列出子任务,例如:1. ... 2. ... 3. ... 。让LLM可以更专注于解决子任务,最终解决整个复杂的任务。
(3)提供少量示例 :提供一些输入输出示例对有助于LLM学习输入和输出之间的语义映射关系。
(4)使用友好的格式 :合适的prompt格式有助于LLM更好的理解指令。例如:OpenAI相关的模型适合使用###"""作为分隔符。训练语料主要为应为的LLM用英语提问的效果更好。

三、Prompt的一些使用技巧

1、任务描述

(1)描述详细

(2)以一个专家角色作为前缀信息

(3)多告诉模型应该做什么,而不是不做什么(否定词)

(4)避免输出长文

2、输入数据

(1)检索相关文档和prompt拼接在一起

(2)使用特殊标记突出重要部分

3、上下文信息

(1)对于复杂的任务,详细描述中间步骤

(2)对于打分的任务,提供打分标准

(3)对于文本生成任务,指导LLM对于上下文上乘的结果进行解释

(4)类似于思维树的方式:多专家讨论,记录每个专家的思考步骤并共享思考步骤,如果有一个专家思考出错,则让他离开,剩下的专家继续思考。如果没出错继续留下来思考。

4、示例

(1)提供良好格式的上下文示例

(2)思维链(一步一步思考),示例用分隔符标注。例如:\n

(3)检索相似的示例,先用示例获取答案,然后再将这个答案和我们的问题拼接

(4)示例多样化,问题或解决方案多样化

(5)使用基于聊天的LLM时,可以将上下文示例分解为多回合信息。同理,可将示例的推理过程分解为多回合对话。

(6)复杂和信息丰富的上下文示例

(7)符号示例分解为多个片段,将前面的片段作为上下文示例,引导LLM预测后面的片段。

(8)示例、提示和问题在prompt中的位置很重要。

(9)没有上下文示例时,可以让LLM生成一些

5、其他设计

(1)让LLM自己检查一下结果是否正确

(2)调用外部工具进行辅助

(3)prompt独立,上下文中减少代词的使用

(4)比较多个示例时,顺序对性能影响较大

(5)角色分配

(6)OpenAI的模型用英文提问更好

(7)做多选题时,限制输出对性能有所帮助。用更详细的解释描述,对逻辑进行限定。

(8)对于基于排序的任务,可以不让LLM直接输出排序后的文本,而是对每个文本段分配一个编号标识符(例如:ABCDE),然后指导LLM输出排序后的编号。

相关推荐
晨非辰8 分钟前
#C语言——刷题攻略:牛客编程入门训练(十二):攻克 循环控制(四)、循环输出图形(一),轻松拿捏!
c语言·开发语言·经验分享·笔记·其他·学习方法·visual studio
抓饼先生41 分钟前
C++ 20 视图view笔记
linux·开发语言·c++·笔记·c++20
Olrookie1 小时前
ruoyi-vue(十四)——前端框架及package.json,vite.config.js, main.js文件介绍
前端·笔记
搜搜秀1 小时前
内存传输速率MT/s
人工智能·自然语言处理·机器翻译
尚久龙2 小时前
安卓学习 之 SeekBar(音视频播放进度条)
android·java·学习·手机·android studio
人生游戏牛马NPC1号2 小时前
学习 Android (二十二) 学习 OpenCV (七)
android·opencv·学习
初九之潜龙勿用2 小时前
技术与情感交织的一生 (十三)
笔记·microsoft·印象笔记
草莓熊Lotso3 小时前
《从 0 建立测试开发认知:先搞懂 “是什么”,再学 “怎么做”》
经验分享·笔记·其他·测试
FlYFlOWERANDLEAF3 小时前
DevExpress中Word Processing Document API学习记录
学习·c#·word
半夏知半秋3 小时前
基于跳跃表的zset实现解析(lua版)
服务器·开发语言·redis·学习·lua