Prompt Engineering入门教学(看这一篇就够!)

备注:本篇文字为博主学习吴恩达老师的Prompt Engineering课程后的学习笔记,如果您觉得笔记中的内容不正确可以随时与我联系,谢谢!我会尽量保证本篇博客内容的高质量和可靠度。

两类大语言模型

大语言模型(LLM)可以划分为基础大语言模型和指令调整大语言模型两类,下面给出了这两类模型的相关概念:

基础大语言模型

  • 定义:Base LLM,顾名思义,是未经过特定任务或指令调整的基础大语言模型。这些模型通常通过预训练(pre-training)在大量的文本数据上进行训练,以学习语言的基本结构和模式。
  • 训练数据: Base LLM 通常在非常庞大的文本数据集上进行训练,例如互联网文本、图书、新闻文章等。
  • 用途:由于这些模型已经学习了语言的基本结构和模式,它们可以用于各种自然语言处理任务,如文本分类、情感分析、摘要生成等。但是,对于特定的任务或指令,Base LLM 可能需要进行一些微调(fine-tuning)。
  • 例子: GPT-3、BERT、T5 等都是 Base LLM 的典型例子。

指令调整大语言模型

  • 定义: Instruction Tuned LLM 是经过特定任务或指令调整的大语言模型。这些模型已经通过指令调整(instruction tuning)或任务特定调整(task-specific tuning)进行了优化,以更好地执行特定的任务或遵循特定的指令。
  • 训练数据: 除了基础预训练数据外,这些模型还使用针对特定任务或指令的数据进行训练。
  • 用途: Instruction Tuned LLM通常用于需要高度准确率和效率的任务,如机器翻译、问答系统、对话生成等。由于已经进行了任务特定调整,这些模型通常比 Base LLM在相应任务上表现更好。
  • 例子: InstructGPT 是 Instruction Tuned LLM 的一个例子。它是在 GPT-3的基础上,通过指令调整和人类反馈强化学习(human feedback reinforcement learning)进行优化的。

Prompt Engineering(提示词工程)笔记

编写明确和具体的指令

注意:这并不是说给大语言模型编写的指令必须要尽量短。

  • 使用分隔符清楚地指示输入的不同部分:为了确保模型能够准确识别并处理需要进行操作的文本,我们推荐使用特定的分隔符来明确区分文本中的不同部分。这样做不仅可以提升模型的理解能力,还能够有效防止提示词冲突的发生。提示词冲突是指模型错误地将需要处理的文本内容误认为是执行命令,而使用分隔符则能够清晰地将二者区分开,避免这类误解的产生。
  • 使用结构化的输出方式:为了提高输出的可读性和使用效率,我们可以要求模型采用结构化的输出方式。例如,可以要求模型以JSON或HTML等标准格式进行输出,这样做既方便了人类用户的阅读和理解,又有利于其他系统或工具对输出进行进一步的处理和分析。
  • 要求模型检查是否满足条件:为了确保任务的顺利完成,我们可以让模型在执行任务前先进行自我检查,判断是否满足完成任务所必需的前提条件。这一步骤可以帮助模型更好地考虑各种边界条件,并提前发现并规避可能的问题,从而提升任务的成功率和准确性。
  • 少量训练提示(Few-shot):为了提升模型在新任务上的执行效率和准确性,我们可以在模型执行任务之前为其提供少量成功执行任务的示例。通过学习和借鉴这些示例,模型能够更好地理解任务需求和处理流程,从而在面对类似任务时能够更加游刃有余地完成。这种方法不仅可以降低模型的训练成本,还能够在一定程度上提高模型的泛化能力。

给模型思考的时间

  • 为模型指定完成任务的步骤:这种策略的核心思想是将一个复杂或多步骤的任务拆分成若干个简单、明确的子任务,并为模型提供详细的步骤指示。例如,如果我们希望模型完成一个文本摘要的任务,我们可以指示模型首先提取文本的主要信息,然后对这些信息进行整合和简化,最后生成简洁明了的摘要。通过为模型指定明确的步骤,我们可以确保模型在处理任务时不会迷失方向,也能够使模型更加专注于当前步骤,从而提高任务的完成质量和效率。
  • 指示模型在得到自己的结果之前先给出解决方案:这个策略要求模型在生成最终的输出之前,首先给出一个或多个可能的解决方案。这样做的好处是可以使模型更加深入地思考任务,并从多个角度考虑问题的解决方案。例如,在一个文本生成任务中,我们可以要求模型先生成几个不同的文本草案,然后再选择和优化最佳的输出。通过这种方式,我们可以激发模型的创造性和灵活性,同时也可以使模型的输出更加多样化和全面。

大语言模型的限制和解决方案

模型幻觉问题

  • 解释:模型幻觉是指大语言模型在生成文本时可能会产生一些与事实不符、错误或根本不存在的信息。这可能是由于模型在训练过程中学习了某些错误的模式,或者是因为模型在处理某些复杂的任务时过于依赖模式识别而忽视了事实的准确性。

  • Prompt优化策略

    • 增加事实核查:在Prompt中加入要求模型核实其输出的事实准确性的指示。例如,在提问时加入“请确保你的回答是基于事实的”。
    • 提供准确示例:在给模型的Few-shot示例中,确保所有信息都是准确的,以减少模型学习到错误模式的机会。
    • 引入外部知识源:考虑将外部知识库或API与模型结合,使其在生成输出时能够实时检查事实的准确性。

模型的数学能力欠佳

  • 解释:尽管大语言模型在文本生成和理解方面取得了很大的进展,但它们在处理复杂的数学问题,尤其是需要进行多步骤推理或符号运算的问题时,表现往往欠佳。这可能是因为这些模型主要是基于文本数据进行训练的,而缺乏足够的数学结构和逻辑的训练。

  • Prompt优化策略

    • 数学表达式结构化:使用LaTeX或其他数学表示法来结构化数学问题,使模型更容易理解和处理数学符号和表达式。
    • 分解复杂问题:对于复杂的数学问题,尝试将其拆分成若干简单的子问题,并为每个子问题提供一个明确的Prompt。
    • 结合外部工具:考虑使用专门的数学工具或API来辅助模型处理数学问题,例如,可以使用Wolfram Alpha或Mathematica的API来获取数学问题的答案或解决方案,并与模型的输出进行整合。
    • 提供数学示例:在Few-shot中,为模型提供数学问题的成功解决示例,以帮助其更好地理解和学习如何处理这类问题。。

大语言模型可以处理的任务

  • 创建摘要

    • 说明:当运用大型语言模型来生成摘要,我们可以精确指导模型聚焦于文本的特定段落或要点,确保所生成的摘要不仅精炼,而且准确无误。
    • 实例:例如,对于一篇冗长的研究报告,我们可以指示模型重点关注“研究方法”和“结论”部分,从而为我们生成一个聚焦于这两个要点的摘要。
  • 模型推理

    扫描二维码关注公众号,回复: 17225503 查看本文章
    • 说明:大型语言模型的强大之处在于其多任务处理能力,这意味着它们能够同时执行和管理多种NLP任务,而无需像传统方法那样,为每个单独的任务构建一个专门的模型。
    • 实例:在一个单一的模型中,我们可以同时进行情感分析、命名实体识别和问答,而不需要训练三个独立的模型。
  • 文本转换

    • 说明:文本转换是一个涵盖广泛的应用领域,包括但不限于文本翻译、语气的调整以及格式转换等。
    • 实例:文本翻译:将英文文本实时转换为中文,或反之;语气变化:将一段正式的商务文本转化为更为亲切和友好的语气,或反之;格式转换:例如,将Markdown格式的文本转换为HTML。
  • 文本扩充

    • 说明:基于给定的简短文本或提纲,大型语言模型有能力生成更为详尽和充实的文本内容。
    • 补充实例:假如有一个简短的故事大纲,模型可以根据这个大纲扩展出完整的故事情节和角色对话。

temperature超参数

  • 作用和原理:大语言模型中的Temperature超参数是一个非常关键的调整项,它能够影响模型在生成文本时的随机性和创造性。这一超参数主要作用于模型的softmax输出层,通过调整预测词的概率分布来实现对文本生成的控制。
  • 表现形式:当Temperature的值增大时,预测词的概率分布的方差会随之减小。这意味着模型在生成文本时会呈现出更高的多样性和变化性,因此,生成的文本内容会更加丰富和不可预测。这种情况下,模型更有可能产生一些新颖、有创意的表达和组合,但与此同时,也可能导致生成的文本缺乏连贯性和一致性。当Temperature的值减小时,预测词的概率分布会变得更加集中,使得生成的文本更加确定和可预测。这有助于提高文本的连贯性和一致性,但也可能导致生成的文本缺乏多样性和新颖性。
  • 具体应用中的设置:在构建具体的应用程序时,如何设置Temperature的值取决于我们的具体需求。例如,如果我们希望构建一个能够生成多样化、富有创意的文本的系统,可以适当增大Temperature的值。然而,如果我们更看重生成的文本的连贯性和一致性,或者希望模型在生成文本时更加“保守”,就应该将Temperature的值设置得小一些。特别地,在某些需要模型给出确定、可靠输出的场景下(如某些问答系统或决策支持系统),我们甚至可能会将Temperature的值设置为零,以确保模型始终给出一致和可预测的输出。这样,我们可以获得一个更加稳定和可靠的系统。

对话中的角色

大语言模型中通过设置角色来描述对话中的不同参与者,主要的角色包括:System、Assistant和User,对他们的介绍如下:

System(系统)

  • 概念:System代表了大语言模型背后的整个系统或框架,它负责控制和管理AI助手的表现和行为。
  • 作用:System主要负责设置和调整AI助手的各种参数和功能,以确保AI助手能够以适当的方式与用户进行交互。例如,System可能会定义AI助手的响应速度、语气、知识库等。此外,System还可能负责监控和维护AI助手的运行状态,确保其始终能够有效地为用户提供服务。

Assistant(助手)

  • 概念:Assistant是具体的聊天模型,也就是用户在实际交互中会面对的AI实体。它代表了系统的前端,负责与用户进行直接的对话和交流。
  • 作用:Assistant的主要职责是理解和响应用户的输入,为用户提供信息、回答问题或执行任务。它通过分析用户的文本输入,从其内部的知识库或外部资源中提取信息,然后生成相应的回复。同时,Assistant还会根据System的设置来调整其表现和行为,以适应不同的用户需求和场景。

User(用户)

  • 概念:User代表与AI助手进行交互的实际用户,也就是人类的一方。他们是对话的发起者和接收者,通过与Assistant的交流来获取信息或完成任务。
  • 作用:用户在对话中提供输入,这可以是问题、请求、指令或其他形式的文本信息。用户的输入是驱动整个对话过程的关键因素,Assistant会根据用户的输入来生成相应的回复或执行相应的操作。同时,用户还可以通过反馈机制来影响System对Assistant的调整和优化,从而提升整个系统的性能和用户体验。

学习过程中的英语单词积累

  • prompt 提示词
  • retrieval 检索
  • underappreciated 被低估的
  • startup 新兴公司
  • unicorn 独角兽
  • plausibly 合理地
  • dash off 匆忙写好
  • authentication 认证

独角兽公司的概念:所谓“独角兽公司”是指那些估值达到10亿美元以上的初创企业。这些企业通常是优质、市场潜力无限大,并且其商业模式很难被复制的绩优股。

猜你喜欢

转载自blog.csdn.net/hanmo22357/article/details/134901115