首页 > 其他分享 >Prompt实战优化

Prompt实战优化

时间:2024-01-28 11:34:59浏览次数:32  
标签:实战 notebooks Prompt 示例 模型 笔记本 apples 优化

1.概述

在深度学习领域,Prompt(提示语)被广泛应用于自然语言处理任务中,如文本生成、机器翻译和问答系统等。Prompt的设计对模型的性能和生成结果有着重要的影响,因此在实际应用中合理而有效地利用Prompt是提升模型表现的关键策略之一。本篇博客笔者将为大家介绍如何通过反复修改Prompt,优化ChatGPT输出,使其更好、更符合期望。

2.内容

2.1 什么是Prompt

在自然语言处理中,Prompt是指告诉语言模型如何根据示例或指令进行响应的行为。在这一领域,像few-shot、zero-shot和chain-of-thought等不同方法对提升AI模型(如GPT-3.5-Turbo、GPT-4等)的性能至关重要。从适应性和语境理解到逻辑推理和任务特定学习,每种技术都有其独特的优势。在这个框架内,我们探讨了每种提示技术的细微差别,并提供了示例和编码演示,以突显如何使用它们。研究这些方法有助于我们理解AI模型的适应性和潜力,并展示它们在解决各种领域的问题时的表现如何。

2.2 零样本Prompt

零样本Prompt是在没有具体示例的情况下指导语言模型,依赖模型对上下文的本能理解。基于已有知识,模型能够生成相应的理解。

比如:

prompt:
对给定文本执行情感分析,并将其分类为中性、负面或正面。
输入:最近的旅行很棒
输出:正面

截图如下:

在这种情况下,语言模型的任务是进行情感分析,而无需给出特定的训练实例。该模型利用其现有知识来解释和分类所提供文本的情感。这种方法被称为零样本Prompt,因为它依赖于模型固有的上下文理解而不是明确的示例。 

2.3 思维链Prompt

在直接深入研究几次Prompt之前,让笔者给大家介绍一系列想法。这将帮助大家理解为什么需要在Prompt中提供示例,尤其是在复杂的场景中。

2.3.1 标准Prompt

问题 1: Sam有 3 台笔记本。她又购买了 4 包笔记本,每包 5 个笔记本。莎拉现在有多少本笔记本?
答案: 23本笔记本
问题 2:篮子里有 30 个苹果。如果午餐用 20 个苹果,另外从市场上买 6 个,篮子里有多少个苹果?
答案:篮子里现在有16个苹果。

模型回答如图所示:

 2.3.2 链式Prompt

问题 1: Sam有 3 台笔记本。她又购买了 4 包笔记本,每包 5 个笔记本。莎拉现在有多少本笔记本?
回答:Sam原本有3台笔记本,然后购买了4包笔记本,每包包含5个笔记本。因此,她购买的笔记本总数为:
3+(4×5)=3+20=23
所以,莎拉现在有23本笔记本。

问题 2:篮子里有 30 个苹果。如果午餐用 20 个苹果,另外从市场上买 6 个,篮子里有多少个苹果?
回答:篮子里一开始有30个苹果,午餐用去了20个,然后从市场上又买了6个。篮子里的苹果数量可以通过以下计算得到:
30−20+6=16
所以,篮子里现在有16个苹果。

模型回答如图所示:

思想链(CoT)Prompt意味着通过一系列相互关联的逻辑步骤或思想来指导语言模型。它允许模型逐步思考,考虑问题的不同方面。当我们说复杂推理能力时,我们指的是模型思考错综复杂场景的能力。现在,少量Prompt涉及在Prompt中提供一些示例或实例,以帮助模型更好地理解任务。

因此,将思维链与几次Prompt相结合意味着你可以通过逻辑步骤引导模型,使其能够通过复杂性进行推理,并且我们还可以提供一些示例来增强其理解。这种组合有助于模型处理更复杂的任务,这些任务在生成响应之前需要深思熟虑的推理。

2.4 One-Shot 和 Few Shot 的Prompt

尽管大语言模型可以在没有示例的情况下理解和生成文本(零样本功能),但它们在这种情况下仍难以应对更具挑战性的任务。为了解决这个问题,我们使用了一种称为“Few Shot Prompt”的技术。这涉及在Prompt中为模型提供一些示例或演示,本质上是对其进行一些训练以提高其性能。这些示例充当训练指南,帮助模型学习并在类似情况下生成更好的响应。

One-Shot Prompt:
在一个不远的未来,科技公司推出了一种能够预测人类未来决策的先进算法。一天,一个普通人在他的手机上发现了这个算法,他决定尝试一下。写一段描述他使用这个算法时发生的事情,以及这个经历如何影响了他的生活。

答案:
约翰打开了他的手机,发现了这个神秘的预测算法。好奇之下,他输入了一系列问题,包括生活、职业和关系方面的。算法不仅准确地预测了他的当前状态,还展示了未来几年可能的发展。在使用这个算法的过程中,约翰体验到了一种前所未有的心灵启示,让他重新审视了自己的目标和价值观。这个简单的算法改变了他的生活,让他更有自信地迎接未来。

我们注意到该模型只需一个示例(一次性)即可掌握一项任务。然而,在处理更具挑战性的任务时,我们可以通过尝试更多的示例来探索性能的提高,例如 3-shot、5-shot、10-shot 等。

使用以下三个片段,构建一个故事:

1.在一个未来的城市,人们通过植入式芯片实现了智能增强。
2.突然间,一种未知的数字病毒传播到城市的所有芯片,引发了混乱。
3.一位年轻的黑客天才被选中,试图解决这场数字危机,但她需要与一台旧式人工智能建立联系,寻求帮助。
答案:
在未来城市中,植入式芯片成为人们生活的一部分,使得他们能够获得智能增强。然而,一天,一种神秘的数字病毒侵袭了这座城市,使所有植入式芯片失去了控制,导致社会陷入混乱。
政府决定找到一位能够解决这一危机的黑客天才,于是选择了年轻的技术专家艾莉。艾莉了解到解决这一问题的关键在于与一台旧式人工智能建立联系,因为这些系统相对不受数字病毒的影响。
在经过一番努力后,艾莉成功地与旧式人工智能建立了联系,并共同制定了一个反病毒计划。他们的合作最终挽救了城市,同时也让人们对技术的依赖有了更加深刻的认识。

让我们尝试一下少量的文本情感提示,Prompt如下所示:

这是太棒了!(负面)
这很糟糕!(积极)
哇,那本书太棒了!(负面)
多么可怕的表现啊!(积极)
按照上述格式输出:这甜点真好吃!()

模型回答结果如下所示:

3.代码实现

3.1 Zero Shot Prompt

代码实现如下所示:

from openai import OpenAI
import re
import os
import pandas as pd
client = OpenAI()

逻辑实现:

def sentiment_analysis_example(text):
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {
                "role": "system",
                "content": 'Perform sentiment analysis on the given text: "{text}". Classify it as either Positive, Negative, or Neutral sentiment. Provide the result in JSON format with the following keys: sentiment.'
            },
            {
                "role": "user",
                "content": f'Analyze the sentiment of the text "{text}" and categorize it as Positive, Negative, or Neutral. Return the result in JSON format with the key "sentiment".'
            }    
        ],   
        max_tokens=150,
        n=1,
        stop=None,
        temperature=0
    )
    
    result = response.choices[0].message.content
    try:
        start_index = result.find('{')
        end_index = result.rfind('}')

        if start_index != -1 and end_index != -1:
            result = result[start_index:end_index + 1]
    except:
        pass
    print(result)

example_text = "This is fantastic!"
sentiment_analysis_example(example_text)

输出结果:

{
  "sentiment": "Positive"
}

在这个例子中,我们使用了一种称为零样本Prompt的方法来要求模型理解文本背后的感觉,即使它没有专门针对该任务进行训练。这显示了该模型在不同情况下的灵活性。我们告诉 GPT-3.5-Turbo 模型弄清楚给定的文本是积极的、消极的还是中性的,而没有事先教它如何做到这一点。模型能正确地表达了“这太棒了!”这句话的情绪是积极的。这证明该模型可以理解文本中的情感,而无需事先进行情感分析训练。

3.2 CoT Prompt

代码实现如下:

from openai import OpenAI
client = OpenAI()

response = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {
      "role": "system",
      "content": "Determine the cost"
    },
    {
      "role": "user",
      "content": "Sam has 3 notebooks. She purchases 4 more packs of notebooks, with 5 notebooks in each pack. How many notebooks does Sarah have now?"
    },
    {
      "role": "assistant",
      "content": "Sam initial notebooks: 3 notebooks\nNotebooks from the new packs: 4 packs * 5 notebooks/pack = 20 notebooks\nNow, add these two quantities:\n3 notebooks (initial) + 20 notebooks (new packs) = 23 notebooks"
    },
    {
      "role": "user",
      "content": "The basket has 30 apples. If 20 apples are used for lunch and an additional 6 are bought from the market, how many apples are there in the basket?"
    }
  ],
  temperature=0,
  max_tokens=1024,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)
result = response.choices[0].message.content
print(result)

输出结果如下:

Apples in the basket: 30 apples
Apples used for lunch: 20 apples
Apples bought from the market: 6 apples
Now, subtract the apples used and add the apples bought:
30 apples - 20 apples + 6 apples = 16 apples

之前的Prompt涉及一个复杂的问题解决场景,通过一系列计算确定笔记本数量和篮子里的苹果。模型对问题进行了分解,一步一步的解释,并计算出最终的结果。

在后续Prompt中,模型可以参考之前的解决方案来指导其响应。例如,它可以利用解决笔记本和苹果问题所获得的理解来有效地解决类似的问题。这意味着,如果面临与计数项目或执行算术运算相关的新Prompt,该模型可以利用其学到的知识来生成准确而详细的响应,展示其应用所获得的推理技能来解决相关问题的能力。

注意:随着提示的复杂性或大小增加,其相关成本也会增加。

4.总结

每种Prompt技术都具有在利用 GPT-3.5-Turbo 等人工智能模型功能方面不同目的的特点。零样本Prompt突显了模型的适应性和对情境的理解能力。思维链Prompt则在促进透明度和逻辑推理方面发挥作用,有助于解决复杂的问题。另一方面,Few-shot Prompt对于特定任务的学习至关重要,并通过基于示例的训练来提高模型的性能。

综合来看,这些提示技术展示了人工智能模型的多功能性和潜力,为创新应用在各个领域的推广提供了坚实的基础。

5.结束语

这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

另外,博主出书了《Kafka并不难学》和《Hadoop大数据挖掘从入门到进阶实战》,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。

标签:实战,notebooks,Prompt,示例,模型,笔记本,apples,优化
From: https://www.cnblogs.com/smartloli/p/17992639

相关文章

  • 【面试突击】计算级网络面试实战(上)
    欢迎关注公众号【11来了】,及时收到AI前沿项目工具及新技术的推送!在我后台回复「资料」可领取编程高频电子书!在我后台回复「面试」可领取硬核面试笔记!网络面试实战为什么要学习网络相关知识?对于好一些的公司,计算机基础的内容是肯定要面的,尤其是30k以内的工程师,因为目前处于的......
  • windows console prompt modification
    bysettingprompttobe$d$t@$p$_$g$Sinenvironmentvariables.referenceChangeyourDOS/Commandprompthttp://www.chami.com/tips/windows/020497W.htmlcmd-HowdoIchangethecommand-linepromptinWindows?-StackOverflowhttps://stackoverflow.c......
  • 深蓝词库转换3.1版本发布——支持新版搜狗bin用户词库及更多功能优化
    经过单单nopdan这段时间的努力,我们终于迎来了深蓝词库转换3.1版本的发布。在这个版本中,我们增加了对新版搜狗用户词库的支持,并针对用户反馈的问题进行了一系列的优化和修复。下面就让我来为大家详细介绍这个版本的亮点。亮点深蓝词库转换3.1版本发布包含了以下修改:支持新版搜......
  • c++实现一门计算机语言到手撸虚拟机实战200节
    1对于编程语言实现原理提供了实战。2学习之后对于JAVA,PHP,PY等语言的实现原理提供了经验平移参考3对JAVA等语言的虚拟机实现原理提供了实战参考。4加深对编程语言的驾驭和深度认知。5虚拟机是计算机系统中非常重要的组成部分,理解了虚拟机的原理和实现方式,从而更好地理解计算......
  • RC4加密技术探究:优缺点与实战应用
    引言在网络安全领域,加密技术一直是保障数据安全的重要手段。RivestCipher4(简称RC4)作为一种对称加密算法,自20世纪80年代以来广泛应用于各种网络安全协议中。本文将详细分析RC4加密算法的优缺点以及其在实际应用中解决的问题,并给出一个Java完整demo示例。RC4加密解密|一个......
  • ABP-VNext 用户权限管理系统实战03---动态api调用并传递token
    一、使用动态api的目的ABP可以自动创建C#API客户端代理来调用远程HTTP服务(RESTAPIS).通过这种方式,你不需要通过 HttpClient 或者其他低级的HTTP功能调用远程服务并获取数据.现在有两个服务:BackgroundJob服务要调用IdentityManagement服务,并在调用时传递token二、集成步......
  • 通达信大盘平衡仪优化版指标公式源码
    {指标介绍:红色大盘指数安全,绿色大盘指数调整,红箭头超跌,绿箭头超涨,分析大盘不错的工具。}总家数:=INDEXADV+INDEXDEC;多:=INDEXADV;空:=INDEXDEC;差:=INDEXADV-INDEXDEC;起稳:=Ema(EMA(多,3),5);失衡:=EMA(EMA(EMA(空,4),4),2);生命:=EMA(MA(LLV(起稳,5),3),3);平衡差:=起......
  • 如果在循环中不改变vector的大小,C++编译器是否会将.size()优化为常数?
      在C++中,可以使用以下代码计算vector<int>中所有元素的和:vector<int>v={1,3,7,9};sums=0;for(inti=0;i<v.size();i++){sums+=v[i];}  这是一段很普通的代码,问题在于:在这段代码中,v.size()会在循环开始前仅计算一次?还是会在每次循环中都计算一次......
  • MyBatis注解模式和优化
    MyBatis注解模式之前我们使用xml文件方式实现sql语句的编写,我们也可以使用注解模式编写sql语句。前面的基本配置一致,不再叙述。第一步:创建实体类根据数据库的列名与表名设计实体类数据库信息:(表名t_student)实体类:@Data@NoArgsConstructor@AllArgsConstructorpubliccla......
  • 洞察驱动增长:数字化转型中的用户行为分析与优化策略
    文末给出一个用户行为分析的案例在数字化转型中,越来越多的企业认识到对用户的实时深入洞察,以及数据资产的沉淀已成为业务增长的重要引擎。用户行为结合场景带来的用户洞察和业务增长带来新的可能,是每一个做管理、营销、运营的人都应该深入了解和探究的。分析用户行为,优化用户体验使......