吴恩达ChatGPT《Prompt Engineering》笔记

ChatGPT 提示词工程师教程

1. 课程介绍

1.1 ChatGPT 相关术语

LLM:Large Language Model,大语言模型

Instruction Tuned LLM:经过指令微调的大语言模型

Prompt:提示词

RLHF:Reinforcement Learning from Human Feedback,人类反馈强化学习

Chat Completion:

Temperature:其范围是0到1,它用于控制模型响应的多样性,可以将其视为模型的探索程度或随机性。

1.2 Instruction Tuned LLM 训练流程

Instruction Tuned LLM 训练流程:已经有在大量语料上进行预训练的模型 Base LLM,然后使用输入和输出格式的指令数据集进行微调,让模型更好的遵循这些指令,然后使用 RLHF 的技术进一步优化,让模型能够更好地遵循指令。最终,模型可以根据提示词生成有用的,诚实的和无害的文本。
在这里插入图片描述

在使用 Instruction Tuned LLM 时,可以将其视为给一个聪明但不知道具体任务的人提供指令。因此,当LLM的效果不尽如人意时,有可能是因为提供的指令不够清晰。

2. 编写提示词指南

2.1 OpenAI API 使用

安装 OpenAI 的库

pip install openai

设置密钥

import openai
import os

from dotenv import load_dotenv, find_dotenv
# 读取本地 .env 文件
_ = load_dotenv(find_dotenv())

openai.api_key = os.getenv("OPENAI_API_LEY")
def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(model=model, messages=messages, temperature=0)
    return response.choices[0].message["content"]

2.2 原则1:编写明确和具体的指令

这样做的目的是让模型生成更详细和更相关的内容。

1)使用分隔符清楚地知识输入的不同部分

在这里插入图片描述

```{text}```指明了让模型需要总结的文本段落。这样做的目的是将提示词的其余部分与该部分文本明确地分隔开,防止无关的内容影响模型的输出结果。下面这些分隔符的作用在当前例子中是等价的。

在这里插入图片描述

2)要求模型的输出格式化为 JSON/HTML 类型

具体的Prompt:

在这里插入图片描述

3)要求模型检查是否满足某些条件

要求模型先检查是否满足某些条件,并让模型分别按照不同情况处理。

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

4)为模型提供少量提示

此举旨在要求模型执行任务之前,在Prompt中提供少量成功执行任务的示例,以让模型学会示例中的风格。

在这里插入图片描述

2.3 原则2:给模型思考的时间

如果模型急于给出回复而导致生成的内容出现推理错误,作为调用方,在模型提供最终答案之前,我们应该尝试重新构建查询请求相关推理的链或序列。

1)指定完成任务所需的步骤

在这里插入图片描述

在这里插入图片描述

2)要求模型在输出结果之前思考解决方案

如果在提示词中,人为规定了处理逻辑,那么默认情况下ChatGPT只会按照提示词中的逻辑处理,如果出错则报错,不会再自行计算。如果想为了规避人为指定处理逻辑出错的问题,可以添加提示词,让ChatGPT在按照人为指定计算逻辑计算出错时,返回ChatGPT按照自己的逻辑的计算结果。

在这里插入图片描述

修正之后的提示词:让模型按照规定的步骤(子任务)去执行。

在这里插入图片描述

上面的提示词说明了:让模型给出自己的解决方案,然后将其与提示词中的方案对比,并评估提示词中的方案是否正确。

在这里插入图片描述

2.4 模型的局限性

1)模型的幻觉

即使使用了大量的知识来训练模型,但它并没有完全记住这些信息。因此,它并不是非常了解其知识的边界,这导致的后果是当模型在尝试回答一些晦涩难懂的问题时,他可能会编造听起来合理但是不正确的内容。这称之为幻觉(Hallucination)。

一个关于牙刷的例子:模型输出了一个不存在的产品的描述。

在这里插入图片描述

2)应对策略

减少这种幻觉的策略是:要求模型首先从文本中找到任何相关的引用,然后要求它使用这些引用来回答问题。加上生成这些答案的引用也有助于减少幻觉。

3. 迭代演进提示词

在这里插入图片描述

以让模型总结一张椅子说明书为例

第一个prompt

在这里插入图片描述

上述提示模型生成的结果太长,不适合放到购物网站的介绍里。所以下一步的优化提示的思路是让模型编写简短的介绍。

在这里插入图片描述

更进一步,要求模型生成最多三句话的描述。

在这里插入图片描述

如果仔细阅读总结可以发现,其面向的对象更可能是面向消费者的,如果要是面向椅子的经销商,他们可能更关注技术细节和材料。所以更进一步,可以要求模型生成更精确地描述技术细节的总结。

在这里插入图片描述

更进一步,让模型生成的结果中包含说明书中的产品型号

在这里插入图片描述
在这里插入图片描述
指明模型的输出格式为 HTML
在这里插入图片描述
在这里插入图片描述

4. 使用LLM总结文本

第一个例子,总结电商网站商品评论,限制30个单词。

在这里插入图片描述

为运输部分生成评论摘要:

在这里插入图片描述

生成的结果中可以看出,模型会更关注这些特定部门的相关信息。

为多条评论生成总结:

在这里插入图片描述

5. 使用LLM推理文本

以一个灯的评论为例,让模型推断这个评论的情感类型:

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

提取评论的情感:

在这里插入图片描述

给出是或否的回答:

将多个提示汇总到一个提示中,让模型统一给出结果:
在这里插入图片描述
在这里插入图片描述

找出一篇文档属于哪个主题:

在这里插入图片描述

其背后的实现是零样本学习算法。

基于上述的提示,可以制作一个新闻提醒的下游应用,当有新的主题文档发布时,可以通知订阅了某些主题的用户。

在这里插入图片描述

6. 使用LLM转换文本

一些文本转换的例子:文本翻译,json转html,word转pdf,csv转excel等等。

文本翻译:

在这里插入图片描述

推断语言:

在这里插入图片描述

翻译成多种语言:

在这里插入图片描述

根据不同的场合进行转换:

在这里插入图片描述

根据不同的语气进行转换:

在这里插入图片描述

json转html:

在这里插入图片描述

修正语法错误:

在这里插入图片描述

修正文本:

在这里插入图片描述

获得原始文本与修正之前文本的差异:

在这里插入图片描述

7. 使用LLM扩展文本

扩展文本旨在将短文本(一组说明或主体列表)通过大语言模型转换成更长的文本(比如一封电子邮件或者关于某个主体的文章)。

本小节将演示使用LLM生成个性化的电子邮件。

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

在使用LLM时,经常碰到的一个参数是温度(Temperature),其范围是0到1,它用于控制模型响应的多样性,可以将其视为模型的探索程度或随机性。

在这里插入图片描述

如果想让模型的响应更有多样性,则可以尝试提高温度值。如果想让模型的响应更稳定和更可预测,则可以将温度值设为0。

在这里插入图片描述

在这里插入图片描述

8. 使用LLM构建聊天机器人

在这里插入图片描述

在这里插入图片描述
系统(system)消息提供了整体的指导方针,通常用于设定助手的行为和人设,引导LLM模型生成内容。其好处是为开发者提供了一种在不将请求体本身作为对话一部分的情况下,引导助手生成更贴近用户意图的输出。

用户(user)消息是用户的输入。

助手(assistant)消息是LLM模型的输出。

聊天机器人构建依赖于另一个API,其传入的不再是单个提示,而是个消息列表。这个列表中包含了多种不同角色的多轮对话的消息。
在这里插入图片描述在这里插入图片描述
OpenAI 的 API 是无状态的,即不会保存聊天的上下文,所以如果要基于ChatGPT构建聊天机器人需要每次调用API前将用户的历史会话放到message列表里一起丢给ChatGPT,这样才可以让其具备上下文的记忆能力。

基于ChatGPT构建OrderBot的示例:
在这里插入图片描述
UI设置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
UI界面:
在这里插入图片描述
系统角色消息的编写:
在这里插入图片描述
结果:
在这里插入图片描述

9. 总结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器视觉初步6:图像分割专题

图像分割是一种图像处理技术,它将图像划分为具有相似特征的区域。常见的图像分割方法包括阈值分割、边缘分割、区域分割、基于阈值的方法、基于边缘的方法、基于区域的方法、聚类分割、基于图论的方法、基于深度学习的方法。 文章目录 1.阈值分割2.边缘分割3.区域分…

CloFormer实战:使用CloFormer实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整算法设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试热力图可视化展示…

kali常用ping命令探测

ping 判断目标主机网络是否畅通 ping $ip -c 1其中,-c 1 表示发送一个数据包 traceroute 跟踪路由 traceroute $domain ARPING 探测局域网IP ARP(地址解析协议),将IP地址转换成MAC地址arping $ip -c 1 #!/bin/ bash######…

基于matlab使用先导校准来补偿阵列不确定性(附源码)

一、前言 此示例说明如何使用先导校准来提高天线阵列在存在未知扰动时的性能。 原则上,可以轻松设计理想的均匀线性阵列(ULA)来执行阵列处理任务,例如波束成形或到达方向估计。在实践中,没有理想的阵列。例如&#xff…

初识轻量级分布式任务调度平台 xxl-job

文章目录 前言xxl-job的目录结构项目依赖 (父 pom.xml)xxl-job-admin 启动xxl-job-executor-sample (项目使用示例)xxl-job-executor-sample-frameless : 不使用框架的接入方式案例xxl-job-executor-sample-springboot : springboot接入方案案例 xxl-job执行器器启动流程分析调…

linux_centos7.9/ubuntu20.04_下载镜像及百度网盘分享链接

1、镜像下载站点 网易开源镜像:http://mirrors.163.com/ 搜狐开源镜像:http://mirrors.sohu.com/ 阿里开源镜像:https://developer.aliyun.com/mirror/ 首都在线科技股份有限公司:http://mirrors.yun-idc.com/ 常州贝特康姆软件技…

C++【红黑树】

✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2019 版本 16.11.17 文章目录 🌇前言🏙️正文1、认识红黑树1.1、红黑树的定义1.2、红黑树的性质1.3、红黑树的特点 2、红黑…

三分钟学习一个python小知识1-----------我的对python的基本语法的理解

文章目录 一、变量定义二、数据类型三、条件语句四、循环语句五、函数定义总结 一、变量定义 在Python中,使用等号()进行变量的定义,并不需要声明变量的类型,Python会自动根据赋值的数据类型来判断变量的类型&#xf…

chatgpt赋能python:Python构造和析构:介绍和实例

Python 构造和析构:介绍和实例 当你编写 Python 程序时,你可能会注意到一个名为构造函数和析构函数的概念。这些函数可以在创建和删除一个对象时自动执行一些操作。本文将深入介绍 Python 中的构造和析构概念。 构造函数 Python 使用一种名为 __init_…

戴尔U盘重装系统Win10步骤和详细教程

戴尔电脑深受用户们的喜欢,那么如何使用U盘给戴尔电脑重装Win10系统呢,这让很多用户都犯难了,以下就是小编给大家分享的戴尔U盘重装系统Win10步骤和详细教程,按照这个教程操作,就能顺利完成戴尔U盘重装Win10系统的操作…

3、互联网行业及产品经理分类

上一篇文章:2、产品经理的工作内容_阿杰学编程的博客-CSDN博客 1、产品经理分类 我们把产品经理划分成这样两个大的类型,一个是传统行业的,一个是互联网行业的。这个简单了解一下就行。 这个里面会发现绝大多数也是体育劳动,你比…

Nautilus Chain:模块化Layer3的先行者

“模块化特性的 Nautilus Chain 正在成为 Layer3 的早期定义者之一,并有望进一步推动区块链更广泛的应用与实践 ” 自以太坊创始人 Vitalik Buterin 在去年提出 Layer3 的概念后,行业始终对“Layer3”进行讨论,并期望推动该概念,从…

微服务框架

流量入口Nginx 在上图中可以看到,Nginx作为整个架构的流量入口,可以理解为一个外部的网关,它承担着请求的路由转发、负载均衡、动静分离等功能。作为一个核心入口点,Nginx肯定要采用多节点部署,同时通过keepalived来实…

【云原生 · Docker】轻松学会dockerfile构建镜像

目录 🍉dockerfile是什么 🍉镜像的缓存特性 🍉dockerfile命令 🍒FROM 🍒RUN 🍒CMD 🍒LABEL 🍒EXPOSE 🍒ENV 🍒ADD 🍒COPY 🍒ENTRYPOIN…

Background-1 基础知识 sqli-Labs Less1-Less-4

文章目录 一、Less-1二、Less-2三、Less-3四、Less-4总结 一、Less-1 http://sqli:8080/Less-1/?id1在第一关我们可以尝试增加一个单引号进行尝试 http://sqli:8080/Less-1/?id1错误显示如下: near 1 LIMIT 0,1 at line 1推测语法的结构 select *from where **…

【从零开始学习JAVA | 第六篇】面向对象综合训练

目录 前言: 1.文字版格斗游戏: 2.对象数组1 前言: 前面我们已经讲解了JAVA面向程序对象思想的关键要素:封装。我们将利用本篇进行几个小型的练习,帮助我们更好的理解面向对象编程这种思想。 1.文字版格斗游戏&#x…

SpringSecurity过滤指定url【.antMatchers(***).permitAll()】失效问题

SpringSecurity过滤指定url【.antMatchers(***).permitAll()】失效问题 问题描述 在使用SpringSecurity作为后端验证框架时,遇到配置一些接口不需要token验证,直接放行,但是配置之后没有生效,一直究其原因。 项目配置 因为要进…

ES6相关概念

什么是ES6? ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。 为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。 变量提升特性增加了程序运行…

SpringBoot整合jwt+redis+随机验证码+Vue的登录功能

一、运行效果展示 !注意:前端的Vue项目中要引入element-ui和axios # npm安装element-ui、axios npm insatll element-ui -S npm install axios -S # 在main中引入 // 引入ElementUI import ElementUI from element-ui import element-ui/lib/theme-chalk…

大数据Doris(四十七):开启Steam Load记录

文章目录 开启Steam Load记录 一、停止 Doris 集群 二、在 node3-node5 BE 节点上配置 be.conf 三、重新启动 Doris 集群 开启Steam Load记录 后续执行Stream Load 导入任务后,我们会在Doris集群中会查询对应Stream Load任务的情况,默认BE是不记录S…