大模型之Prompt研究和技巧

大模型之Prompt研究和技巧

  • 大模型之Prompt编写
    • 简介
    • 组成
    • 技术
      • Zero-Shot
      • Few-shot
      • COT
      • COT-SC
      • TOT
      • GoT
      • ReAct

大模型之Prompt编写

简介

Prompt是是 AI **模型的指令,**一个简短的文本输入,用于引导AI模型生成特定的回答或执行特定任务。

Prompt是你与语言模型沟通的方式。一个好的Prompt可以让AI更准确地理解你的需求,从而给出更有用的回答。

组成

Prompt的组成拆解主要包括以下六个要素:

  1. 任务(Task): 任务是Prompt的核心,通常以动词开始,明确表达你希望ChatGPT完成的任务或目标。这可以包括生成文本、给予建议、写作内容等。可以有多个任务,以清晰地定义你的需求。
  2. 上下文(Context): 上下文提供了与任务相关的背景信息,以确保ChatGPT理解问题的背景和约束条件。这包括用户的背景信息、成功标准、所处环境等。上下文对于任务的明确性和有效性至关重要。
  3. 示例(Exemplars): 示例是提供具体例子或框架的部分,用来引导ChatGPT生成更准确的输出。提供示例可以明确示范所需的内容和格式,从而提高输出质量。但并不是每次都需要提供示例,有时候也可以让ChatGPT自行生成。
  4. 角色(Persona): 角色明确指定ChatGPT和Bard(如果涉及到虚构的角色)所扮演的角色或身份。这可以是具体的人,也可以是虚构的角色,有助于调整语气和内容以适应特定角色的需求。
  5. 格式(Format): 格式部分可视化了你期望输出的外观和结构,如表格、列表、段落等。明确指定输出的格式可以确保ChatGPT生成的内容符合你的预期。
  6. 语气(Tone): 语气定义了输出文本的语气或风格,如正式、非正式、幽默等。指定语气有助于确保ChatGPT的回应符合所需的情感和风格要求。

通过合理组织这六个要素,你可以创建一个清晰明了的Prompt,有效引导ChatGPT生成符合期望的文本输出。

当创建一个Prompt时,下面是一些具体的例子,展示如何使用上述六个要素:

1. 任务(Task):

  • 生成一篇有关太阳能发电的文章。
  • 给予我一些建议,以降低生活中的碳足迹。
  • 写一封感谢信,以表达对客户的感激之情。

2. 上下文(Context):

  • 作为一个学生,你要写一篇有关气候变化的研究报告,希望获得深入了解可再生能源的信息。
  • 你是一位环保活动家,需要有关减少塑料污染的可行性计划。
  • 你正在回顾一次商务合作,需要一封感谢信来强调合作的重要性。

3. 示例(Exemplars):

  • 作为示例,可以提供一些有关太阳能的统计数据,或者一个类似的文章的开头段落。
  • 作为示例,列出一些环保措施,如减少用塑料制品、使用可再生能源等。
  • 提供一些已经写好的感谢信段落,以供参考。

4. 角色(Persona):

  • 请以一位环保组织的志愿者的身份来回答。
  • 请以一位科学家的身份来回答。
  • 请以一位公司首席执行官的身份来回答。

5. 格式(Format):

  • 请以段落的形式写一篇文章,包括标题、引言、正文和结论。
  • 请以列表形式列出减少碳足迹的建议。
  • 请以正式书信的格式写一封感谢信,包括日期、地址、称呼等。

6. 语气(Tone):

  • 请使用正式的语气,避免使用俚语或口语。
  • 请使用轻松的语气,可以适当加入幽默元素。
  • 请使用感激之情的语气,表达真诚的感谢。

这些示例突出了如何根据具体的需求来组成Prompt,以确保ChatGPT能够理解任务、上下文、示例、角色、格式和语气,并生成相应的内容。通过合理搭配这些要素,可以引导ChatGPT产生符合要求的文本回应。

技术

Zero-Shot

Zero-Shot Prompting 指的是在大型语言模型(LLM)中,不需要额外微调或训练,直接通过文本提示就可以完成指定的下游任务。

主要思想是:

  • 先训练一个通用的大型语言模型,学习语言的基本规则,掌握丰富的常识和知识。
  • 然后在不改变模型参数的情况下,只通过软性提示指导模型完成特定任务。
  • 模型根据提示和已掌握的知识,生成对应任务的输出。

举个例子,我们可以给 ChatGPT 一个简短的 prompt,比如 描述某部电影的故事情节,它就可以生成一个关于该情节的摘要,而不需要进行电影相关的专门训练。

Zero-Shot Prompting 技术依赖于预训练的语言模型,这些模型可能会受到训练数据集的限制和偏见。它的输出有时可能不够准确,或不符合

预期。这可能需要对模型进⾏进⼀步的微调或添加更多的提示⽂本来纠正。

Few-shot

Few-shot Prompting 是 Zero-shot Prompting的扩展,指使用很少量的任务相关示例来辅助提示,使模型更快适应新任务。

其关键思想是:

  • 仍然基于预训练好的通用语言模型
  • 使用软提示指导模型完成新任务
  • 额外提供1-2个相关示例作为提示补充

例如:

任务: 生成一篇关于太阳能的文章。

示例:

  1. 示例1:太阳能是一种清洁能源,通过太阳能电池板将太阳能转化为电力。
  2. 示例2:太阳能电池板通常安装在屋顶上,可以为家庭提供可再生能源。
  3. 示例3:太阳能是减少温室气体排放的重要途径。

任务描述: 请以这些示例为基础,撰写一篇关于太阳能的文章,重点介绍太阳能的工作原理、应用领域以及对环境的影响。

COT

论⽂表明,它仅在⼤于等于 100B 参数的模型中使⽤才会有效。如果是⼩样本模型,这个⽅法不会⽣效

思维链提示,就是把一个多步骤推理问题,分解成很多个中间步骤,分配给更多的计算量,生成更多的 token,再把这些答案拼接在一起进行求解。

在这里插入图片描述
在这里插入图片描述

COT-SC

让模型⽣成多个思维链,然后取最多数答案的作为最终结果。

其实重复运算多次,取概率最⾼的那⼀个,需要借助脚本辅助完成这个功能。

Self-consistency是对CoT方法的改进,相比于CoT只进行一次采样回答,SC采用了多次采样的思想,最终选择consistent的回答作为最终答案。SC的成立的基础是文章认为,一个复杂的推理问题可以采用多种不同的方式进行解决,最终都可以得到正确答案。人类思考同一个问题可能会有不同的思路,但是最后可能得到相同的结论。可以理解为“一题多解”“条条大路通罗马”。SC相比于CoT性能进一步得到了更大的提升。

在这里插入图片描述

通过多次采样回答,最终选择一致性最高的结果作为最终结果,这在很大程度上可以避免LLM随机性带来的错误问题。

TOT

Tree of Thoughts(ToT)框架,⽤于改进语⾔模型(LMs)的推理能⼒。该框架是对流⾏的“Chain of Thought”⽅法的⼀种

泛化,允许模型在解决问题的过程中进⾏更多的探索和策略性前瞻。

ToT允许模型⾃我评估不同的选择,以决定下⼀步的⾏动,并在必要时进⾏前瞻或回溯,以做出全局性的选择。

在24点游戏中,使⽤链式思考提示的GPT-4仅解决了4%的任务,⽽使⽤ToT⽅法的成功率达到了74%

在其他场景中的应用型不是很大。

GoT

GoT有三种操作:

  • Aggregation

  • Refining

  • Generation

Aggregation指的是几个想法的整合,变成了一个更好的想法,图上表现为多个节点指向同一个节点;

Refining指节点自身进行反思,不断改善自己本身的内容,图上表现为一个节点重新指向自己;

Generation指通过一个节点,产生了后续1个或者更多新的想法,图上表现为一个节点指向一个或多个节点。

在这里插入图片描述

ReAct

和langchain 中的Agent是一个道理

使用 LLM 以交错的方式生成推理轨迹和特定于任务的动作,从而实现两者之间更大的协同作用。

推理轨迹帮助模型归纳、跟踪和更新行动计划以及处理异常,而操作允许它与外部源(例如知识库或环境)交互,以收集附加信息。我们应用我们的方法,名为 ReAct,适应各种语言和决策任务,并证明其在最先进的基线上的有效性,以及比没有推理或行动组件的方法提高的人类可解释性和可信度。

具体来说,在问答(HotpotQA)和事实验证(Fever)方面,ReAct 通过与简单的维基百科 API 交互,克服了思维链推理中普遍存在的幻觉和错误传播问题,并生成类似人类的任务解决轨迹,比没有推理痕迹的基线更容易解释。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【方法】PDF不能转换成其它格式如何解决?

想把PDF文件转换成其他格式,比如Word、PPT,却发现无法操作,这是什么情况呢?又该如何解决?下面我们一起来看看吧。 原因1:没有使用PDF编辑器 如果是在线打开PDF,或者使用PDF阅读器打开PDF&…

将 mysql 数据迁移到 clickhouse (最新版)

一、前驱知识 已经在mysql中插入了海量的数据了,这个时候mysql 承载不了这么大的数据,并且数据只需要查询,修改和删除非常少,并且不需要支持事务,这个时候需要换一个底层存储,这里选用的是 clickhouse 来进…

【论文阅读】面向抽取和理解基于Transformer的自动作文评分模型的隐式评价标准(实验结果部分)

方法 结果 在这一部分,我们展示对于每个模型比较的聚合的统计分析当涉及到计算特征和独立的特征组(表格1),抽取功能组和对齐重要功能组(表格2),并且最后,我们提供从模型比较&#x…

解读非托管流动性协议Hover: 差异化、层次化的全新借贷体系

“Hover 是 DeFi 借贷赛道的另辟蹊径者,除了在自身机制(借贷模型、治理体系)上进行创新获得内生动力外,背靠日渐繁荣的 Kava、Cosmos 生态进一步获得外生动力,发展潜力俱佳” 与 DEX 类似,借贷也是 DeFi 世…

深度学习DAY3:FFNNLM前馈神经网络语言模型

1 神经网络语言模型NNLM的提出 文章:自然语言处理中的语言模型预训练方法(ELMo、GPT和BERT) https://www.cnblogs.com/robert-dlut/p/9824346.html 语言模型不需要人工标注语料(属于自监督模型),所以语言…

React js原生 详解 HTML 拖放 API(鼠标拖放功能)

最近碰到了个需求,大概就是要通过可视化拖拽的方式配置一个冰柜,需要把预设好的冰柜内部架子模板一个个拖到冰箱内。一开始的想法是用鼠标事件(mousedown、mouseup等)那一套去实现,能实现但是过程过于复杂,…

qt判断当前日期的当月的最后一天是几号

1、拖个dateTimeEdit在界面上,同时来判断输入的时间的最后一天的日期是什么? int year,month;int monthArr[12]{31,28,31,30,31,30,31,31,30,31,30,31};QDateTime time ui->dateTimeEdit->dateTime();year time.toString("yyyy").toIn…

uniapp 显示icon异常

按照文档创建的uni-ui项目,仿照示例程序写的代码中icon显示异常  异常情况: 正常情况: 通过比对代码发现,示例程序的App.vue中 有一个引用是问题的关键 正是因为多了这一个引用文件,图表的显示才能正常 …

3d tiles规范boundingVolume属性学习

3d tiles的瓦片(Tiles)包含一些属性,其中第一项是boundingVolume;下面学习boundingVolume; boundingVolume,这个翻译为边界范围框,如果直译为边界体积可能有问题,其实就是包围盒的意…

[Unity][VR]Passthrough2-创建一个基本的Passthrough应用

上一期我们对PassthroughXR项目做好了基本的项目设置,今天我们就开始构建一个基本的Passthrough应用。 我们还是从基本场景开始。先把默认的main camera删除。因为后续我们会引入OVR Rig对象,这个对象自带Camera用来实现VR视角。 在Project面板我们搜索OVR camera rig。看见…

[Mono Depth/3DOD]单目3D检测基础

1.数据增强 图像放缩和裁剪后,相机内参要做相应变化 import random def random_scale(image, calib, scale_range(0.8, 1.2)):scale random.uniform(*scale_range)width, height image.sizeimage image.resize((int(width * scale), int(height * scale)))cali…

10_10C++

X-mid #include <iostream> using namespace std; class Kun {//算术运算符friend const Kun operator(const Kun &k1,const Kun &k2);friend const Kun operator-(const Kun &k1,const Kun &k2);friend const Kun operator*(const Kun &k1,const Ku…

MFC扩展库BCGControlBar Pro v33.6 - 网格、报表控件功能升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v33.6已正式发布了&#xff0c;此版本包含了对图表组件的改进、带隐藏标签的单类功能区栏…

腾讯云 轻量云 上海 VPS 测评

description: 发布于 2023-07-05腾讯云 轻量云 上海 VPS 测评 腾讯云国内机非常稳定&#xff0c;一年用下来没有掉线丢包的情况。国内机适合与备案域名一起建站使用。带宽很小&#xff0c;图片资源使用CDN加速或海外机提供。 规格 CPU - 2核 内存 - 2GB 系统盘 - SSD云硬盘…

上海-华为全联接大会|竹云受邀参加华为云ROMAConnect行业生态联盟成立联合发布会

2023年9月22日&#xff0c;在上海举办的华为全联接大会上&#xff0c;竹云作为华为云全方位合作伙伴代表&#xff0c;受邀参加华为云ROMAConnect行业生态联盟成立联合发布会。华为云PaaS服务产品部副部长张甲磊以及联盟主要成员企业出席发布仪式&#xff0c;共同见证华为云ROMA…

Tabby All configured authentication methods failed

文章目录 重要序言错误原因tabby的连接设置 总结 重要序言 Tabby是一款美观耐用的软件&#xff0c;平常一直用来输入密码方法SSH公司服务器&#xff0c;后来为了另外一台服务器加了SSH私钥&#xff0c;之后Tabby SSH连接死活不成功&#xff0c;哎&#xff0c;折腾了好久&#…

Git分布式版本控制工具

Git分布式版本控制工具 一、概述 1.1开发中的实际场景 备份代码还原协同开发追溯问题代码的编写人和编写时间 1.2版本控制器的方式 集中式版本控制工具 版本库是集中存放在中央服务器的&#xff0c;团队里每个人工作时从中央服务器下载代码&#xff0c;是必须联网才能工作&…

Ubuntu编译安装colmap遇到的几个问题以及解决

总体安装过程已经很明白了&#xff0c;写的人很多了&#xff0c;我就不赘述了&#xff0c;可以参考这里或者其他博客。我主要记录几个我遇到的问题以及解决方法。 1、cmake报错&#xff1a;No CMAKE_CUDA_COMPILER could be found. 这个原因是没找到cuda和nvcc目录&#xff0…

解决Opencv dnn模块无法使用onnx模型的问题(将onnx的动态输入改成静态)

一、问题来源 最近做人脸识别项目&#xff0c;想只用OpenCV自带的人脸检测和识别模块实现&#xff0c;使用OpenCV传统方法&#xff1a;Haar级联分类器人脸检测LBPH算法人脸识别的教程已经有了&#xff0c;于是想着用OpenCV中的dnn模块来实现&#xff0c;dnn实现人脸检测也有&a…

Fisher辨别分析

问题要求 在UCI数据集上的Iris和Sonar数据上验证算法的有效性。训练和测试样本有三种方式&#xff08;三选一&#xff09;进行划分&#xff1a; &#xff08;一&#xff09; 将数据随机分训练和测试&#xff0c;多次平均求结果 &#xff08;二&#xff09;K折交叉验证 &…