【LLM大模型入门】Prompt实战优化

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对于特定任务的学习至关重要,并通过基于示例的训练来提高模型的性能。

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

如何系统的去学习AI大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

全套 《LLM大模型入门+进阶学习资源包↓↓↓ 获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

LLMprompt是通过模板定义的,该模板包含用于描述和表示任务输入和输出的占位符。通过prompt,我们可以控制LLM在不同任务上的应用。一个常见的prompt是使用问答形式的提示链,其中包括一个question()提示符用于将输入转换为问题,以及一个answer()提示符用于回答生成的问题。不同的提示链可以导致对输入的不同预测。因此,prompt的设计对于LLM的性能至关重要。 ASK ME ANYTHING PROMPTING (AMA)方法提出了一种简单而有效的方法来设计高质量的prompt。该方法通过产生多个有效的但不完美的prompt,然后将它们聚合起来,最终生成高质量的prompt。 这种方法可以减少开源LLM的参数数量,并取得比GPT3-175B更好的Few-Shot性能。 由于prompt的微小变化可能导致LLM性能的较大变化,因此prompt设计的重要性不容忽视。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [最新 | Ask Me Anything 一种提示(Prompt)语言模型的简单策略(斯坦福大学 & 含源码)](https://blog.csdn.net/yinizhilianlove/article/details/127215208)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值