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输出排序后的编号。

相关推荐
TechTorch10 分钟前
数据库大学实验二
数据库·经验分享·笔记·mysql
xx24061 小时前
vite学习笔记
笔记·学习
林晓lx1 小时前
[学习笔记] 从零开始虚拟化搭建数据库服务器
数据库·redis·笔记·centos
江畔柳前堤1 小时前
PyQt学习系列08-插件系统与模块化开发
运维·开发语言·数据库·python·学习·机器学习·pyqt
tongxianchao2 小时前
以少学习:通过无标签数据从大型语言模型进行知识蒸馏
人工智能·学习·语言模型
CC数学建模4 小时前
2025 年江西研究生数学建模竞赛题C题基于大雾背景视频学习的能见度回归建模完整思路 模型代码 结果 成品分享
学习·数学建模·回归
蓝婷儿4 小时前
6个月Python学习计划 Day 6 - 综合实战:学生信息管理系统
java·python·学习
_冷眸_4 小时前
SQLord: 基于反向数据生成和任务拆解的 Text-to-SQL 企业落地方案
人工智能·sql·自然语言处理·aigc·机器翻译
YKPG4 小时前
C++学习-入门到精通【9】面向对象编程:继承
java·c++·学习