前言
随着大语言模型(LLM)的不断退出和突破,提示工程的重要性也在不断凸显。我简单总结分析了一下Prompt Engineering,初略聊一聊。 针对不同的领域不同的需求,Prompt Engineering有不同的实践方法,实践出真知,大家可以在这篇文章的基础上,多多实践,挖掘最适合自己的Prompt Engineering。
提示工程简介
模型设置
playground 参数介绍
- 响应严谨性/创造性
- Temperature:
temperature
参数的值将控制大模型对于搜索结果token的权重。通俗地讲,就是temperature
越大,大模型输出的结果越确定。所以我们可以根据自己工作需求来进行动态调整:如果是相关严谨性要求高的工作,就调小temperature
;如果是创造性要求高的工作,就调大temperature
。 - Top_p:与
temperature
参数同理,如果需要确定性,就调低;如果需要创造性,就调高。 tips:使用top_p
与temperature
被称为核采样(nucleus sampling)一般建议是改变Temperature
和Top P
其中一个参数就行,不用两个都调整。
- Temperature:
- 响应文本长度、结构
- Max Length:
max length
控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。 - Stop Sequences:指定
stop sequences
是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加 “11” 作为stop sequence
来告诉模型生成不超过 10 个项的列表。
- Max Length:
- 响应文本重复性
- Frequency Penalty:
frequency penalty
是对下一个生成的 token 进行惩罚,这个惩罚和 token 在响应和提示中已出现的次数成比例,frequency penalty
参数可以控制某个词地重复出现次数。越高,某个词再次出现的可能性就越小。 - Presence Penalty:
presence penalty
也是对重复的 token 施加惩罚,但不同的是,惩罚对于所有重复 token 都是相同的。。 如果您希望模型生成多样化或创造性的文本,您可以设置更高的presence penalty
,如果您希望模型生成更专注的内容,您可以设置更低的presence penalty
。tips:一般建议是改变frequency penalty
和presence penalty
其中一个参数就行,不用两个都调整。
- Frequency Penalty:
提示词要素
提示词主要包括四大要素:指令、上下文、输入数据、输出指令
- 指令:想要模型执行的特定任务或指令
- 上下文:包含外部信息或额外的上下文信息
- 输入数据:用户输入的内容或问题
- 输出指令:指定输出的类型或格式
设计提示地通用技巧
拆分
将复杂的任务拆分为多个简单的小任务,从简明性、具体性、简洁性入手
指令
指令需要清楚具体
可以将指令放在提示的开头或者像“###”这样清晰的分隔符去隔开指令和上下文
具体性
要在控制提示长度的同时,做到具体并且精准。提示越具描述性和详细,结果越好。并且提示文本中不要包含太多不必要的信息
避免不明确
不要传达不明确的描述——越直接,信息传达得越有效
比如
解释提示工程的概念。保持解释简短,只有几句话,不要过于描述
改为
使用 2-3 句话向高中学生解释提示工程的概念
会得到更好的响应
避免说不要做什么,而应该说要做什么
Best practices for prompt engineering with the OpenAI API
提示词实例
我们会分为七个主题来举例说明,大家可以直接照搬套用
分别为文本概括、信息提取、问答、文本分类、对话、代码生成、推理
文本概括
Test paragraph
A
A
可以为Explain the above in one sentence,翻译汉语为用一句话解释上面的信息:
信息提取
Test paragraph
A
A
可以为Mention xxx mentioned in the paragraph above:,翻译汉语为说明上段提到的xxx:
问答
Answer the question based on the context below. Keep the answer short and concise. Respond "Unsure about answer" if not sure about the answer.
Context:
Question:
Answer:
文本分类
对于文本分类,建议给出示例
对话
对于对话领域的提示词,建议使用
角色提示(Role Prompting):为模型分配特定的角色或身份来引导其生成更符合预期的文本输出
代码生成
同上述技巧与实例
推理
当今大型语言模型(LLM)面临的最困难任务之一是需要某种形式的推理的任务。
对于具体的推理任务,我们需要向LLM说明具体步骤,进行具体的拆分指令