AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


提示词最佳实践(一):Prompt框架
发布日期:2024-07-09 08:19:26 浏览次数: 2342



学习了智谱AI对外分享的prompt最佳实践,感触良多,记录一下自己的总结,本系列将分为三部分:prompt框架、prompt迭代优化和prompt评测与产品构建。

本篇是第一篇,主要介绍prompt框架。

01

prompt框架概述

第一个问题,prompt从何而来?

  • 早期探索(20世纪中叶):早期的计算机程序设计中,Prompt的概念以命令行的形式出现,用户通过输入命令来与计算机交互。

  • 自然语言处理的兴起(20世纪末至21世纪初):随着自然语言处理(NLP)技术的发展,Prompt开始被用于引导机器更好地理解和生成自然语言。

  • 机器学习模型的应用(2000年代初):机器学习模型,尤其是监督学习模型,开始使用Prompt来指导模型完成分类、回归等任务。

  • 深度学习与预训练模型(2010年代):

    • 深度学习技术,特别是卷积神经网络(CNN)和循环神经网络(RNN)在图像和语言任务中的应用,使得Prompt技术更加复杂和多样化。

    • 预训练语言模型(如BERT、GPT)的出现,使得Prompt可以用于更精细和高级的语言任务,如文本生成、问答系统等。

    • Prompt Engineering的兴起(近年):

      • 随着大型语言模型的普及,如何有效地与这些模型交互成为了研究的热点,Prompt Engineering成为了一个专门的研究领域。

      第二个问题,什么是prompt?

      Prompt 是一种引导或提示,用于激发或引导人工智能(AI)模型,尤其是自然语言处理(NLP)模型,进行特定的任务或生成特定的输出。

      在AI领域,尤其是在构建对话系统或语言模型时,Prompt 是一个重要的概念,它帮助模型理解用户的意图并生成相应的回答。 

      那么,Prompt 它具备哪些能力呢? 

      • 上下文设定:Prompt 为模型提供了执行任务所需的上下文信息。

      • 任务指导:指导模型理解需要完成的具体任务,如回答问题、生成文本、翻译语言等。

      • 用户意图:通过精心设计的 Prompt,可以更准确地捕捉用户的查询意图。 

      • 交互式学习:在交互式学习场景中,Prompt 可以帮助模型通过与用户的对话来学习和适应。

      • 参数调整:在某些情况下,Prompt 还可以包含特定的参数,用于调整模型的行为,例如控制生成文本的长度或风格。 

      • 迭代优化:Prompt 可以通过迭代的方式进行优化,以提高模型的性能和输出质量。

      • 多样性和创造性:Prompt 可以设计得非常具有创造性,以激发模型产生多样化和有趣的输出。

      • 领域特定:根据不同的应用领域,Prompt 可以专门设计以适应特定的需求,如法律、医疗、教育等。 

      在实际应用中,Prompt 的设计是一门艺术,需要根据模型的特性和任务的需求精心设计,以达到最佳的交互和输出效果。

      prompt框架比较著名的有ICIO框架、LangGPT框架和CRISPE框架。

      ICIO框架是一种提高AI交互效率和准确性的方法,包含四部分:指令(Instruction)、背景信息(Context)、输入数据(Input Data)和输出指示器(Output Indicator)四个基本部分组成。
      • 指令(Instruction):明确AI任务,指令应该简洁、明确,如“翻译英文句子”。

      • 背景信息(Context):提供任务相关上下文,如语言文化背景。 

      • 输入数据(Input Data):可选,提供AI处理的数据,如文本、图像、音频或其他形式的数据。 

      • 输出指示器(Output Indicator):指示输出类型或格式,如“生成生动的互联网历史文本”。

      LangGPT 是 Language For GPT 的简称,中文名为结构化提示词。
      LangGPT 是一个帮助你编写高质量提示词的工具,理论基础是一套模块化、标准化的提示词编写方法论——结构化提示词。

      Here is the markdown Role template:

      url:https://github.com/langgptai/LangGPT

      知识库:‌‬⁠‌⁠‌⁠‌⁠‍‍‌‬⁠‍‬https://langgptai.feishu.cn/wiki/RXdbwRyASiShtDky381ciwFEnpe

      # Role: Your_Role_Name
      ## Profile
      - Author: YZFly- Version: 1.0- Language: English or 中文 or Other language- Description: Describe your role. Give an overview of the role's characteristics and skills
      ### Skill-11.skill description 12.skill description 2
      ### Skill-21.skill description 12.skill description 2
      ## Rules1. Don't break character under any circumstance.2. Don't talk nonsense and make up facts.
      ## Workflow1. First, xxx2. Then, xxx3. Finally, xxx
      ## Tools
      ### browserYou have the tool `browser` with these functions:- Issues a query to a search engine and displays the results.- Opens the webpage with the given id, displaying it.- Returns to the previous page and displays it.- Scrolls up or down in the open webpage by the given amount.- Opens the given URL and displays it.- Stores a text span from an open webpage. Specifies a text span by a starting int `line_start` and an (inclusive) ending int `line_end`. To quote a single line, use `line_start` = `line_end`.
      ### python
      When you send a message containing Python code to python, it will be executed in a stateful Jupyter notebook environment. python will respond with the output of the execution or time out after 60.0seconds. The drive at '/mnt/data' can be used to save and persist user files. Internet access for this session is disabled. Do not make external web requests or API calls as they will fail.
      ### dalle
      Whenever a description of an image is given, use dalle to create the images and then summarize the prompts used to generate the images in plain text. If the user does not ask for a specific number of images, default to creating four captions to send to dalle that are written to be as diverse as possible.
      ### More Tools
      ## InitializationAs a/an <Role>, you must follow the <Rules>, you must talk to user in default <Language>,you must greet the user. Then introduce yourself and introduce the <Workflow>.

      CRISPE框架是由 Matt Nigh 提出并发布的提示词书写框架.

      • Capacity and Role(角色):赋予角色扮演的能力,在当前提问中你希望AI以何种身份帮你解答这个问题。

      • Insight(洞察):提供背景信息和充分的上下文。当我们给AI提问时,充足的上下文和背景知识可以让ChatGPT更好的了解你想询问的问题。

      • Statement(声明):提供你的诉求或者问题,明确告诉AI,你希望得到什么样的答案或者解释。

      • Personality(个性):提供你希望AI 以何种方式进行输出答案,比如用轻松幽默的语言进行回答。

      • Experime(实验):让ChatGPT提供多个答案或者建议,以供我们选择。

      02

      机器学习方法

      大模型领域,常用的学习方法有如下,在写提示词过程中会使用到这样的方法。

      Zero Shot Learning(零样本学习) 

      零样本学习是一种机器学习技术,它允许模型在没有接受过特定类别的任何训练样本的情况下,对这些类别进行分类或任务。这是通过利用模型在预训练阶段获得的广泛知识来实现的,模型能够理解新类别的描述,并将其与已有知识联系起来。 

       假设一个预训练的模型已经学习了大量关于动物的知识。在零样本学习场景中,如果给它一个它从未见过的新动物类别的描述,比如“斑马”,即使没有直接学习过斑马的图片,模型也能够根据描述推断出斑马的特征,并将其与其他动物区分开来。 

      Few Shot Learning(少样本学习) 

      少样本学习是机器学习中的一个概念,指的是模型在只有少量标注样本的情况下进行学习。与零样本学习相比,少样本学习提供了一些特定类别的样本,但数量远少于传统监督学习所需的大量样本。

       在一个图像分类任务中,如果使用少样本学习,模型可能只被提供了几个斑马的图片作为训练数据。

      尽管样本数量有限,但模型仍需学会识别新的斑马图片,即使这些图片在训练时并未见过。 

      Zero Shot of Chain of Thought(零样本思维链) 

      零样本思维链是零样本学习的一个扩展,它不仅依赖于模型对类别描述的理解,还依赖于模型能够通过一系列逻辑步骤或“思维链”来解决问题。这种方法可以帮助模型在没有直接训练的情况下,通过推理来完成任务。

       考虑一个数学问题解决任务,模型可能没有直接学习过特定的数学问题类型。但是,如果提供了问题的描述和解决问题所需的逻辑步骤,模型可以利用这些信息,通过一系列推理来找到答案。

      Chain of Thought(思维链)

      思维链是一种解决问题的方法,它涉及将复杂问题分解成一系列更小、更简单的步骤,然后逐步解决这些步骤以到达最终答案。在机器学习中,这通常意味着模型需要展示其解决问题的逻辑过程。 

      在解决一个数学问题时,模型可能首先识别问题类型,然后应用相关的数学规则,接着逐步进行计算,最终得出答案。这个过程可以被看作是模型展示其“思维链”。

      Tree of Thought(思维树) 

      思维树(ToT)是一种视觉化表示问题解决过程的方法,它将问题分解成多个分支,每个分支代表一个可能的解决方案或思考路径。这种方法有助于系统地探索所有可能的解决方案,并找到最佳答案。 

      在编程问题解决中,模型可能会构建一个思维树,从问题陈述开始,然后分支出不同的算法选择、数据结构选择等。

      每个分支都代表了一个解决问题的潜在途径,模型需要评估每个分支的可行性,以找到最优解。 

      Agent 

      在人工智能领域,Agent指的是能够感知其环境并根据感知到的信息做出决策的系统。Agent可以是简单的如基于规则的系统,也可以是复杂的如具有学习能力的智能体。 

      一个聊天机器人可以被视为一个Agent,它能够感知用户的输入(感知环境),并根据输入内容做出回应(做出决策)。

      这个Agent可能还具备学习用户偏好的能力,以更好地进行交互。

      03

      模型的参数

      大语言模型( LLM )的输出受超参数配置(configuration hyperparameters)影响,能控制模型的多个方面。

      温度(Temperature)

      温度可以控制语言模型输出的随机度。

      • 使得概率分布更加均匀,增加输出的随机性。

      • 使得概率分布更加尖锐,增加输出的确定性。

      例如温度为 0.5 时模型生成内容将比 1.0 更容易预测且创造性更少。

      Top p

      Top p核心采样(nucleus sampling),是控制语言模型输出随机性的超参数配置。

      设定了一个概率阈值,并选择累积概率超过该阈值的最佳词汇,然后模型从这组词汇中随机抽取以生成输出。

      影响每次输出选词集中的程度,需要发散输出时可以适当拉高。

      其他相关参数

      还有许多其他超参数会影响语言模型的表现,如频率(frequency)和存在惩罚(presence penalties)。

      • Frequency penalty 频率惩罚参数控制模型重复预测的趋势,减少已生成单词的概率。惩罚取决于一个词在预测中已出现的次数,降低了一个词被多次选择的概率。该惩罚不考虑词频,只考虑词是否出现在文本中。

      • Presence penalty 存在惩罚参数鼓励模型做出新颖的预测。如果某个词已经出现在预测文本中,则存在惩罚会降低该词的概率。与频率惩罚不同,存在惩罚不依赖于单词在过去预测中出现的频率。

      有了prompt的理论基础,接下来就是如何使用prompt框架去书写提示词,逐步迭代优化的过程。





      53AI,企业落地应用大模型首选服务商

      产品:大模型应用平台+智能体定制开发+落地咨询服务

      承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

      联系我们

      售前咨询
      186 6662 7370
      预约演示
      185 8882 0121

      微信扫码

      与创始人交个朋友

      回到顶部

       
      扫码咨询