还不知道怎么提示LLM?ChatGPT提示入门
文章目录
- 简介:
- 什么是人工智能?
- 什么是提示过程?
- 为什么会出现这样的差异?
- 为什么需要提示过程?
- 1) 文章摘要
- 2) 数学问题求解
- 如何进行提示过程?
- 角色提示:
- 多范例提示:
- 无范例提示
- 单范例提示
- 多范例提示
- 组合提示:
- 规范化提示:
- 风格提示:
- 提示过程的应用
- 写邮件:
- 代码辅助:
- 代码生成:
- 代码注释:
- Debug代码:
- 总结:
- 引用:
简介:
什么是人工智能?
从目的的角度出发,人工智能(AI)是人们创造的一些“聪明的”的算法,使得机器能够像人类一样“思考”。这些算法可以写论文、解决数学问题,并创造艺术。该领域的最新进展已经十分先进,以至于人工智能可以写出令人信服的销售邮件、新闻报道,甚至可以赢得艺术比赛。
什么是提示过程?
提示过程指的是人类如何指导 AI 执行任务,即指导人工智能执行任务的过程称为提示过程。我们向 AI 提供一组指令(提示),然后它执行任务。提示可以简单到一个问题,也可以复杂到多个段落。
而提示过程的好坏可以在很大程度上影响到AI大模型生成答案的能力!
为什么会出现这样的差异?
因为LLM本质上是自回归的语言模型,而自回归的语言模型训练是通过Decoder对每个词的位置只可见前面位置的词这样的Mask Self-Attention的形式来计算并生成的,每个词对后面未来的词是不可见的,简而言之,就是当前词的生成依赖于前面已经生成的文本,而这个过程是自回归模型结构决定的。
举个例子,如下图:
在自回归模型解码生成上面一句话的过程中,解码器是如何训练计算loss的呢?
<s>,北,京,欢,迎,你这个例子做生成过程来解释。(<s>为起始词,为结束词)
训练时:
把“<s> 北,京,欢,迎,你”的word embedding和position embedding处理后后输入到decoder中去,而用于指导其每个位置生成的ground-truth应该是 “北,京,欢,迎,你,”
- 将<s> 作为decoder的初始输入,将decoder的最大概率输出词向量A1和‘北’做cross entropy(交叉熵)计算error。
- 将<s>,“北” 作为decoder的输入,将decoder的最大概率输出词 A2 和‘京’做cross entropy计算error。
- 将<s>,“北”,“京” 作为decoder的输入,将decoder的最大概率输出词A3和’欢’ 做cross entropy计算error。
- 将<s>,“北”,“京”,“欢” 作为decoder的输入,将decoder最大概率输出词A4和‘迎’做cross entropy计算error。
- 将<s>,“北”,“京”,“欢” ,“迎” 作为decoder的输入,将decoder最大概率输出词A5和‘你’做cross entropy计算error。
- 将<s>,**“北”,“京”,“欢” ,“迎” ,“你”**作为decoder的输入,将decoder最大概率输出词A5和结束词做cross entropy计算error。
那么并行的时候是怎么做的呢,我们会有一个mask矩阵在这叫sequence mask,因为他起到的作用是在decoder编码我们的target sequence的时候对每一个词的生成遮盖它之后的词的信息,形状上图所示。
这也就是为什么LLM可以用海量的数据进行自回归模型的训练,因为每个token的解码是可以并行的,这也是RNN无法做到的,唯一的挑战就是对于GPU的资源消耗。
同时,因为LLM训练和生成解码的自回归特性,如何使用有效的提示过程,就可以让LLM在解码的时候捕捉到更加丰富的“前情提要”信息,从而生成出更加准确且连贯的答案!
为什么需要提示过程?
以下是两个提示的示例:
1) 文章摘要
假设你正在阅读一篇关于佛罗里达州降雪的文章。你想快速了解文章的主要内容,因此你向 AI 展示你正在阅读的内容,并要求进行摘要:
佛罗里达州很少下雪,特别是在中部和南部地区。除了州的极北部地区外,佛罗里达州大部分主要城市都没有记录到可测量的降雪量,尽管记录到了少量的痕迹,或者每个世纪观测到几次空气中的飘雪。根据国家气象局的数据,在佛罗里达群岛和基韦斯特群岛自欧洲殖民以来没有发生过飘雪的情况,已有超过300年时间。在迈阿密、劳德代尔堡和棕榈滩,超过200年中只有一次关于在空气中观察到飘雪的报告,发生在1977年1月。在任何情况下,自这次1977年的事件以来,迈阿密、劳德代尔堡和棕榈滩都没有看到过飘雪的情况。
以下是 AI 的回复。更简洁易读!
佛罗里达州很少下雪,除了州的极北部地区外,在过去的200年中迈阿密、劳德代尔堡和棕榈滩这些主要城市中只有一次观察到空气中飘雪的报告。
2) 数学问题求解
如果你有一个数学方程,想让语言模型来解决,你可以通过提问 “数学方程等于几” 来输入提示。
对于一个给定的问题,你的完整提示可能是这样的:
965 * 590 等于几?
对于这个提示,GPT-3(一种 AI 模型)有时会回答 569,050(不正确)。
而如果我们不是问965 * 590 等于几?,而是问确保你的答案完全正确。965*590 等于几?确保你的答案完全正确:,GPT-3 将会回答 569,350(正确)这就是提示工程的重要性所在。
如何进行提示过程?
有很多种提示方式
角色提示:
一种提示技术是给 AI 分配一个角色。例如,你的提示可以以"你是一名医生"或"你是一名律师"开始,然后要求 AI 回答一些医学或法律问题。举个例子:
你是一个能解决世界上任何问题的杰出数学家。试着解决下面的问题:100100/40056 是多少?
AI (GPT-3 davinci-003) 的答案:
答案是 1400。
例如:
我想让你充当软件开发人员。我将提供一些关于 Web 应用程序要求的具体信息,您的工作是提出用于使用 Golang 和 Angular 开发安全应用程序的架构和代码。我的第一个要求是’我想要一个允许用户根据他们的角色注册和保存他们的车辆信息的系统,并且会有管理员,用户和公司角色。我希望系统使用 JWT 来确保安全。
更多角色提示语句见
- 中文:150种ChatGPT最佳实践提示模版
- 英文:Awesome ChatGPT Prompts
多范例提示:
多范例提示(few shot prompting), 这种策略将为模型展示一些例子(shots),从而更形象地描述你的需求。通过给出少量例子来对模型进行提示,从而使得模型快速得到想要的结果模式,从而在指定的范式下生成
不同类型的范例提示
单词 shot 在该场景下与 example(范例) 一致。除了多范例提示(few-shot prompting)之外,还有另外两种不同的类型。它们之间唯一的区别就是你向模型展示了多少范例。
类型:
- 无范例提示(0 shot prompting): 不展示范例
- 单范例提示(1 shot prompting): 只展示 1 条范例
- 多范例提示(few shot prompting): 展示 2 条及以上的范例
无范例提示
无范例提示是最基本的提示形式。它仅仅是向模型展示提示信息,没有提供任何示例,并要求其生成回答。因此,你到目前为止看到的所有指令和角色提示都属于无范例提示。无范例提示的另一个例子是:
Add 2+2:
这是无范例提示,因为我们没有向模型展示任何完整的示例。
单范例提示
单范例提示是向模型展示一个示例。例如:
Add 3+3: 6
Add 2+2:
我们仅向模型展示了一个完整的示例(“Add 3+3: 6”),因此这是一个单范例提示。
多范例提示
多范例提示是向模型展示2个或更多示例。例如:
Add 3+3: 6
Add 5+5: 10
Add 2+2:
这是我们向模型展示了至少2个完整的示例(“Add 3+3: 6”和“Add 5+5: 10”)。通常,展示给模型的示例越多,输出结果就越好,因此在大多数情况下,多范例提示比另外两种提示更受欢迎。
组合提示:
以下是一个包含上下文、指令以及多示例提示的例子:
Twitter是一个社交媒体平台,用户可以发布称为“推文”的短消息。推文可以是积极的或消极的,我们希望能够将推文分类为积极或消极。以下是一些积极和消极推文的例子。请确保正确分类最后一个推文。
Q: 推文: "今天真是美好的一天!"这条推文是积极的还是消极的?
A: 积极的
Q: 推文: 我讨厌这个班级"这条推文是积极的还是消极的?
A: 消极的
Q: 推文: “我喜欢牛仔裤上的口袋”
A:
通过添加额外的上下文和示例,我们通常可以提高人工智能在不同任务上的表现。
规范化提示:
以下是在一个提示中将时常看到的一些组成部分:
- 角色
- 指令/任务
- 问题
- 上下文
- 示例(few shot)
我们发现,通过规范这样的语句往往可以提升LLM回答的准确程度
例如:
假如你是一名Python程序员。
请编写python代码,生成3个单词数组(每个数组6个单词)分别包括介词、动词和名词,名词也用作直接宾语,从中选出指定的词组成一个句子,并确保可以执行。
输出结果可能像下面一样:
import random
prepositions = [‘at’, ‘in’, ‘on’, ‘with’, ‘under’, ‘over’]
verbs = [‘run’, ‘jump’, ‘dance’, ‘sing’, ‘laugh’, ‘cry’]
nouns = [‘cat’, ‘dog’, ‘tree’, ‘flower’, ‘book’, ‘computer’]
preposition = random.choice(prepositions)
verb = random.choice(verbs)
noun = random.choice(nouns)
madlib = f"I {verb} {preposition} the {noun}."
print(madlib)
风格提示:
风格指导就是要求 AI 以某种特定的风格来表达。如果没有给出风格指导的问题,ChatGPT 通常会返回一两个短段落的回答,少数需要更长的回答时会返回更多内容。
一个更详细的风格提示的例子可能是:
[问题]“以拥有20多年经验和多个博士学位的[领域]专家的风格和水平写作。在回答中优先考虑有建设性的、不太知名的建议。使用详细的例子进行解释,尽量少离题和耍幽默。“
使用风格输入提示将大大提高回答的质量!
思维链提示:
思维链(CoT)提示过程是一种最近开发的提示方法,它鼓励大语言模型解释其推理过程。下图显示了 few shot standard prompt(左)与链式思维提示过程(右)的比较。
常规提示过程 vs 思维链提示过程(Wei et al.)
思维链的主要思想是通过向大语言模型展示一些少量的 exemplars,在样例中解释推理过程,大语言模型在回答提示时也会显示推理过程。这种推理的解释往往会引导出更准确的结果。由浅入深,提升问题质量
例子:
哪种方法是更快的回家方式?
选项1:乘坐10分钟的公共汽车,然后40分钟的公共汽车,最后10分钟的火车。
选项2:乘坐90分钟的火车,然后骑行45分钟,最后10分钟的公共汽车。
选项1需要60分钟,即10+40+10
提示过程的应用
学会一些提示语句还需要在具体的实战中应用,提升工作效率
写邮件:
想象一下,有一天你生病了,不能去上班。这里有一个简单的提示,可以写一封电子邮件给你的老板,告诉他们你病了。
我的名字:克洛丝
老板的名字:凯尔希
写一封严肃、专业的电子邮件给我的老板,告诉他我今天因为生病不能上班。请简洁明了:
AI生成:
尊敬的凯尔希先生:
我是克洛丝,很抱歉地通知您,我今天因为生病不能上班。我会尽快恢复健康,并尽快回到工作岗位。
谢谢您的理解,
克洛丝
代码辅助:
作为程序员,生成代码,注释代码,debug代码都是效率很低的事情,那在ChatGPT的帮助下,我们可以做到更高效地完成这些操作
代码生成:
和上述例子相同:
假如你是一名Python程序员。
请编写python代码,生成3个单词数组(每个数组6个单词)分别包括介词、动词和名词,名词也用作直接宾语,从中选出指定的词组成一个句子,并确保可以执行。
代码注释:
你可以要求ChatGPT为你的代码添加注释,并对其进行格式化以便阅读。在你的提示词指令之后,添加三个#号,然后粘贴你想要它清理的代码:
假如你是一名Python程序员。 请将下列Python代码添加行注释并重新构造代码结构以使其易于阅读:
Debug代码:
ChatGPT不仅可以检测代码中的语法错误,还可以找到执行代码时会出现的逻辑错误。下面是一个Python脚本的例子,由于第3行的逻辑错误,在第4行最终会导致“除以零”错误。尝试使用以下简单的提示词来查找并修复错误:
假如你是一名资深的程序员,负责python程序的开发,请debug此Python代码,找出错误:
当然,提示学习有很多很多有趣的应用,我们可以使用一些公开的提示文档进行使用,从而提升工作效率
总结:
GPT不止是技术,会带来一场产业革命;AI替代不了人,但会用AI的人能替代你。
引用:
Transformer解读:https://blog.csdn.net/fs1341825137/article/details/120247499?spm=1001.2014.3001.5501
提示工程学习文档:https://www.promptingguide.ai/zh
https://learnprompting.org/zh-Hans/docs/intro
github开源项目:https://github.com/dair-ai/Prompt-Engineering-Guide
思维链提示论文:Wei, J., Wang, X., Schuurmans, D., Bosma, M., Ichter, B., Xia,
F., Chi, E., Le, Q., & Zhou, D. (2022). Chain of Thought Prompting
Elicits Reasoning in Large Language Models.
相关文章:

还不知道怎么提示LLM?ChatGPT提示入门
文章目录 简介:什么是人工智能?什么是提示过程?为什么会出现这样的差异? 为什么需要提示过程?1) 文章摘要2) 数学问题求解 如何进行提示过程?角色提示:多范例提示:无范例提示单范例提…...

反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)
// 举例01 public class Reflect{ // 静态性 public Person getInstance(){return new Person(); }// 动态性 public T<T> getInstance(String className) throws Exception{Calss clzz Class.forName(className);Constructor con class.getDeclaredConstructor();con…...

uniapp离线打包apk - Android Studio
uniapp 离线打包 基于uni-app的andiord 离线打包 开发工具及所需要的jar包1.将下载的App离线SDK解压打开,找到HBuilder-Integrate-AS ,在Android Studio打开2.打开HBuilder X,发行->原生app本地打包->生成本地打包app资源3.在“HBuil…...

cuda面试准备(一),架构调试
1 cuda架构 硬件方面 SP (streaming Process) ,SM (streaming multiprocessor) 是硬件(GPUhardware) 概念。而thread,block,grid,warp是软件上的(CUDA) 概念 SP:最基本的处理单元,streaming processor,也称为CUDA core,最后具体的指令和任务都是在SP上处理的。GPU进行并行…...
docker containers logs清理
容器的磁盘占用 每次创建一个容器时,都会有一些文件和目录被创建,例如: /var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。 /var/lib/docker/overlay2 目…...

Ubuntu安装RabbitMQ
一、安装 更新系统软件包列表: sudo apt update安装RabbitMQ的依赖组件和GPG密钥: sudo apt install -y curl gnupg curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo gpg --dearmo…...
Vue3获取当前环境信息
获取.env.development和.env.production内的信息及环境信息 在业务逻辑文件中可以通过 import.meta.env的方式获取,例如: const { MODE, VITE_APP_BASE_API} import.meta.env在vite.config.js中获取: import { defineConfig, loadEnv } f…...
Linux 系统 diff 文件比较命令详解
diff 命令用于比较两个文件或目录之间的差异。它会逐行比较文件的内容,并且在不同的行上显示不同之处。下面是 diff 命令的使用方法和选项: 基本语法: diff [选项] 文件1 文件2常见选项: -c 或 --context:显示上下文…...

【负载均衡】Nacos简单入门
Nacos简单入门 快速安装 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: 下载完压缩包之后,放在任意目录下面进行解压: GitHub主页:https://github.com/alibaba/nacos G…...

实验一 ubuntu 网络环境配置
ubuntu 网络环境配置 【实验目的】 掌握 ubuntu 下网络配置的基本方法,能够通过有线网络连通 ubuntu 和开发板 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行,以“#”开头的…...
ubuntu can应用开发环境搭建指南
sudo apt-get update sudo apt-get install can-utils libsocketcan-dev can数据发送这个采用来自网上的一段代码进行测试: can_send.c代码内容如下: /* 1. 报文发送程序 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <…...

全流程R语言Meta分析核心技术高阶应用
查看原文>>>全流程R语言Meta分析核心技术高阶应用 目录 专题一、Meta分析的选题与检索 专题二、Meta分析与R语言数据清洗及统计方法 专题三、R语言Meta分析与作图 专题四、R语言Meta回归分析 专题五、R语言Meta诊断分析 专题六、R语言Meta分析的不确定性 专题…...
windows下安装使用git-lfs克隆大文件
下载安装git-lfs工具 首先去git-lfs这里,下载相应平台的工具,我下载的windows版本,非安装版本,直接配置到系统环境变量里 执行以下命令验证是否成功 git lfs install 克隆数据集 这样自动会下载里边的大文件 git clone https:/…...

Node.js下载安装及环境配置教程
一、进入官网地址下载安装包 https://nodejs.org/zh-cn/download/ 选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位 Tips:如果想下载指定版本,点击【以往的版本】,即可选择自己想要的版本下载 二、安装程序 &a…...

半导体低压热氧工艺中的真空度精密控制解决方案
摘要:在目前的各种半导体材料热氧化工艺中,往往需要对正负压力进行准确控制并对温度变化做出快速的响应,为此本文提出了热氧化工艺的正负压力控制解决方案。解决方案的核心是基于动态平衡法分别对进气和排气流量进行快速调节,具体…...

TCP的可靠性之道:确认重传和流量控制
TCP 全称为 Transmission Control Protocol(传输控制协议),是一种面向连接的、可靠的、基于字节流的传输层通信协议,其中可靠性是相对于其他传输协议的优势点。TCP 为了确保数据传输的可靠性主要做了以下几点: 发送确…...

基于spring boot校园疫情信息管理系统/疫情管理系统
摘要 随着计算机技术,网络技术的迅猛发展,Internet 的不断普及,网络在各个领域里发挥了越来越重要的作用。特别是随着近年人民生活水平不断提高,校园疫情信息管理系统给学校带来了更大的帮助。 由于当前疫情防控形势复杂ÿ…...

使用Python批量将飞书文档转为MD
说明:飞书是在线文档平台,本文介绍如何使用Python程序批量将飞书文档转为MD文档,并下载到本地; 复制地址 首先,把文档的URL都复制下来,这个需要一个一个点,并复制拷贝,但却是工作量…...

Nacos配置管理、Feign远程调用、Gateway服务网关
1.Nacos配置管理 1.1.将配置交给Nacos管理的步骤 1.在Nacos中添加配置 Data Id服务名称-环境名称.yaml eg:userservice-dev.yaml 2.引入nacos-config依赖 在user-service服务中,引入nacos-config的客户端依赖 <!--nacos配置管理依赖--> <dep…...
解决Spring Boot前后端分离开发模式中的跨域问题
在实际开发中,经常会遇到前端Vue应用与后端Spring Boot API接口存在跨域访问的问题。本篇博客将分享解决Spring Boot前端Vue跨域问题的实战经验,帮助开发者快速解决该问题。 一、跨域问题的原因 跨域问题是由于浏览器的同源策略引起的。同源策略限制了…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...