AIGC: 关于ChatGPT中Prompt提示词的常用小技巧

Prompt 提示词小技巧

  • 基于前文通过对 Prompt 模板的设计,已经了解和GPT交流的方式方法
  • 在对实际问题进行描述的时候,需要去掌握一些描述的方法和技巧

1 )技巧1: 分词, 关键字

  • 对于一个功能,比如我们想要去拆分语句,识别文字的情感等等,可能描述了一大段话,但还是词不达意导致GPT没有办法准确的理解, 这种情况怎么办呢?
  • GPT本质上还是NLP技术的一种,对于常用的文本处理和机器学习的概念,其实是非常清晰的,对于涉计文本处理和机器学习相关的这些技术以及功能
  • 我们可以尝试用GPT的家乡话去和它进行沟通, 比如我们可以明确的告诉GPT需要去对我们的文本去进行分词,去进行词段的提取,进行关键字的提取,以及文本摘要,磁性标注机器翻译等等
  • GPT完全可以理解我们这些词语代表的什么意思?我们不需要去通过一大段的描述,告诉GPT应该干什么?
  • 对于GPT本身都所熟悉的这些家乡话,我们用一些专业的术语来告诉它就可以了,通过这些家乡话可以精简 Prompt,同时可以让 Prompt 准确的理解我们的需求

2 )技巧2: 特殊提示词

  • 第二个小技巧是一些特殊的提示词,相关的提示词,可以看一下 OpenAI 的官方手册
    • 一般我们最常用的是: “让我们一步一步来”,提升逻辑性,优化输出质量
    • 然后是: “让我们思考一下”, 提升深度性,优化输出质量
  • 可以在我们的 Prompt 后面加上类似的这些提示词来进行一下尝试,看看GPT的输出, 加和不加有哪些区别。

3 )技巧3: 源指令

  • GPT是有一些"源指令"的, 这些 “源指令” 其实是在调用GPT API的时候,会作为参数进行提供
  • 我们的 Prompt 当中,也可以直接的去输入内容。
  • 这里有三个源指令
    • 第一个源指令是 Temperature 用于调整随机从生成模型当中抽样的程度
    • 第二个源指令是 Top_p 可以动态的设置 tokens 候选列表的大小
    • 第三个源指令是 Top_k 允许其他的高分 tokens 有机会被选中
  • 一般我们最常使用的就是 Temperature ,当它接近于 0 的时候,GPT 生成的文本更加的连贯
  • 但是, 我们多次进行生成的时候,生成的文本基本上是一样的,缺乏多样性
  • 当 Temperature 为 1 的时候,我们多次对于同一问题进行生成的时候,GPT就会保证一定的多样性和连贯性
  • 当我们的 Temperature 设置大于 1 的时候,模型对于低概率的单词,它的选择会更加的宽容,生成的文本会变得更加的多样
  • 如果我们希望去获得更具创造性的回答,我们就可以去提升 Temperature 的值
  • 如果我们需要去获取更为准确和连贯的回答,我们就可以降低 Temperature 的值
  • 在实际的应用过程当中,我们可以根据对多样性和连贯性的要求,尝试不同的 Temperature 去进行一个设置,最终获取到我们所理想的输出

4 )技巧4: 多用肯定, 少用否定

  • 第四个小技巧是正确的表达,我想要与我不要
    • 我想要是指我们清晰的表达我们的需求, 这个我们其实都可以实现
    • 重点是"我不要",我不要是为了引导AI去规避我们不想生成的内容
    • 但这个问题的难点就在于GPT对于我不要的理解上
  • GPT的模型本质上是基于概率和模式来识别 Prompt ,而不是通过真正的阅读来理解文本
  • 所以GPT没有办法准确的理解和处理否定的概念, GPT会通过提取重点的关键字进一步理解 Prompt
  • 具体的关键字,它的权重是比较高的, 一些连接词和不要等等, 这样的表达可能会被忽略
  • 所以我们虽然描述了"不要",但是可能会反向的引导GPT故意的去输出相关的这些内容,让输出的结果和我们的要求是完全背离的
  • 其中OpenAI的官方实战手册也给出了对于否定的佐证和指导, 其中就提到了如何的去正确表达"我不要"
  • 在官方手册当中提到了用肯定来替代否定, 除了用肯定替代否定,还可以在描述的时候,侧重肯定,同时附加上对应的否定
  • 更好的策略,就是去提供示例,帮助GPT去进行理解
  • 比如我们的 Prompt 当中可以把否定相关的描述去进行扩展, 我们不要只告诉GPT不要什么,要完整的描述我们需要什么
  • 如果我们的需求描述足够清楚,可能就不需要去附加否定的内容了, 如果确实需要增加否定,我们可以在要求后面补充
  • 具体上我们的 Prompt 应该怎样去实现呢?
    • 我们的 Prompt 不要只告诉 GPT 我们不要什么,而是要完整的描述我们的需求,尝试着用肯定来替代否定。
  • 作为程序员,我们都知道 对于肯定和否定,其实本质上呢就是判断满足什么条件做什么
  • 如果我们一定要去加上对应的否定相关的这些内容的话, 在 Prompt 的设计过程当中
  • 我们也可以将这种肯定和否定的这种情况的判断引入进来,满足某一个条件,则进行某一操作。
  • 通过这种策略有效的去避免"我不要"

5 )技巧5: 引入参数和变量

  • 第五个小技巧就是在 Prompt 当中,我们可以去引入参数和变量等等的这些内容
  • 首先呢我们可以使用 " " 或者 {} 这种符号,可以使指令更加的清晰
  • 同时针对某些特殊的指令,我们还可以通过参数以及变量的方式,让他们去进行一个传递
  • 让我们能够像运行shell脚本一样,通过参数和GPT去进行沟通,达到多任务实现和可扩展的一个目的
  • 我们可以将我们的方向和数量去设置成参数,这样我们就可以通过设置参数,让GPT对它的输出进行调整
  • 在我们前文的 Prompt 当中,在设立角色阶段,抽象出了一个方向的参数,告诉GPT是某一方向, 某一领域的面试官
  • 它的任务是根据我们的指令去提出指定数量,指定领域的相关的面试的问题,示例
    你是一位[/方向]邻域的面试官
    你的任务是根据我的指令提出[/数量]个[/方向]领域的常见面试问题,我将作为候选人进行回答
    参照以下示例进行:
    请输入指令: 如方向=大数据, 数量=1
    Hadoop都具备哪些服务, 请回答
    NameNode, DataNode, ResourceManager
    具体要求如下:
    1. 询问我输入指令
    2. 交互式问答, 逐个面试题进行提问
    3. 提示要简洁, 避免对我的回答进行解释
    4. 全部回答完成后,需要结合领域知识对回答进行评分
    5. 评分分值区间为0-100分,其中100分为满分
    让我们一步一步来
    
  • 按照回复,我们输入
    方向=Java, 数量=2
    
  • 我们继续输入
    方向=Python, 数量=3
    
  • 通过这种 Prompt 小技巧,对于我们如何去和GPT进行交互提供了更多的可能

你可能感兴趣的:(AIGC,AIGC)