提示工程-Prompt Engineering

提示工程(Prompt Engineering)

[!NOTE] 《Prompt Engineering Guide》学习笔记
原文链接:提示工程指南 | Prompt Engineering Guide (promptingguide.ai)

基本概念

提示工程(Prompt Engineering)就是探讨如何设计出最佳提示词,用于指导语言模型帮助我们高效完成某项任务。

两个API超参数

  • temperature: 参数越小返回的结果越准确,越确定,反之返回的结果越随机;
  • top_p:与temperature参数相同作用。

零样本提示与小样本提示

  • 零样本提示(zero-shot prompting),即用户不提供任务结果相关的示范,直接提示语言模型给出任务相关的回答;
  • 小样本提示(Few-shot Prompting)范式,即用户提供少量的提示范例,如任务说明等;

提示词的一般要素

指令:想要模型执行的特定任务或指令。

上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。

输入数据:用户输入的内容或问题。

输出指示:指定输出的类型或格式。

提示技术

少样本提示

[!NOTE]

  1. 使用的格式也对性能起着关键作用,即使只是使用随机标签,这也比没有标签好得多
  2. 其他结果表明,从真实标签分布(而不是均匀分布)中选择随机标签也有帮助。

避免先放所有的积极例子,然后最后放消极例子。如果标签的分布偏斜,这个问题会进一步放大。一定要进行大量实验,以减少模型对这种类型的偏见。

链式思考提示( Chain-of-Thought Prompting)

在提供少样本示例的时候,向模型解释部分推理过程,尝试让模型从一步一步推导得到正确答案
Example:

1
2
3
4
5
6
IN:
这组数中的奇数加起来是偶数:4、8、9、151221A:将所有奇数相加(9151)得到25。答案为False。这组数中的奇数加起来是偶数:15、32、5、138271
A

OUT:
将所有奇数相加(15、5、13、71)得到41。答案为False。

对于零样本提示,也可以在问题最后提示“让我们一步一步地解决这个问题,以确保我们有正确的答案”,来达到我们想要的效果。
![[Pasted image 20230526144627.png]]

方向性提示

给予LLMs主要关注的一些词,要求模型以此做出回答。

![[Pasted image 20230526145919.png]]

ReAct(Reason +Act)

引入多段"思考+检索+信息摘取+再思考 + 最后回答" 的策略,目前new bing貌似就是类似的方法

LLMs 提示工程的应用

  • 辅助训练大模型
  • 生成训练数据
  • 生成代码
  • 执行各种文字类的工作
  • 生成提示函数,便于后续快速调用

封装成提示函数

Prompt:

1
2
3
function_name: [trans_word]
input: ["text"]
rule: [I want you to act as an English translator, spelling corrector and improver. I will provide you with input forms including "text" in any language and you will detect the language, translate it and answer in the corrected of my text, in English.]

Use:

1
trans_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.')