1. 课程介绍

1.1 ChatGPT 相关术语

LLM:Large Language Model,大语言模型

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

Prompt:提示词

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

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 osfrom 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. 总结

吴恩达ChatGPT《Prompt Engineering》笔记相关推荐

  1. 吴恩达ChatGPT网课笔记Prompt Engineering——训练ChatGPT前请先训练自己

    吴恩达ChatGPT网课笔记Prompt Engineering--训练ChatGPT前请先训练自己 主要是吴恩达的网课,还有部分github的prompt-engineering-for-devel ...

  2. 第三课总结吴恩达 ChatGPT Prompt 免费视频

    前两课在这里: 总结吴恩达 ChatGPT Prompt 免费课程 第二弹进阶吴恩达 ChatGPT Prompt 技巧 今天第三课,两个技巧 第一个,Prompt 迭代开发 熟悉我号<有关SQ ...

  3. 总结吴恩达 ChatGPT Prompt 免费课程

    吴恩达联合 OpenAI 官方,发布了免费的 ChatGPT Prompt 视频教程. 链接:https://learn.deeplearning.ai/chatgpt-prompt-eng/less ...

  4. LLM 系列 | 07:吴恩达ChatGPT Prompt课程实践:以智能客服邮件为例

    简介 漠漠水田飞白鹭,阴阴夏木啭黄鹂.小伙伴们好,我是微信公众号<小窗幽记机器学习>的小编:卖铁观音的小女孩. 更多.更新文章欢迎关注 微信公众号:小窗幽记机器学习.后续会持续整理模型加速 ...

  5. 【吴恩达】prompt engineering(原则 迭代 文本概括 推断、订餐机器人)

    简介 Introduction 基础的LLM训练的模型,问法国的首都什么,可能会将答案预测为"法国最大的城市是什么,法国的人口是多少" 许多 LLMs 的研究和实践的动力正在指令调 ...

  6. 吴恩达 Chatgpt prompt 工程--6.Expanding

    生成客户服务电子邮件,这些电子邮件针对每个客户的评论进行定制. Setup import openai import osfrom dotenv import load_dotenv, find_do ...

  7. 吴恩达 Chatgpt prompt 工程--1.Guidelines

    课程链接 Setup #安装 !pip install openai #设置key !export OPENAI_API_KEY='sk-...' # or #import openai #opena ...

  8. 737 页《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容 ...

  9. 深度学习入门首推资料--吴恩达深度学习全程笔记分享

    本文首发于微信公众号"StrongerTang",可打开微信搜一搜,或扫描文末二维码,关注查看更多文章. 原文链接:(https://mp.weixin.qq.com/s?__bi ...

  10. 吴恩达深度学习课程笔记(初步认识神经网络)

    吴恩达深度学习课程笔记1 课程主要内容 1.神经网络与深度学习介绍 2.Improving Deep Neural Networks:超参数调整,正则化,优化方法 3.结构化机器学习工程:比如如何分割 ...

最新文章

  1. python的helper_SQLHelper ------ python实现
  2. c mysql 设置字符集_C语言如何查看和修改MySQL使用的字符集
  3. CVer入门必备:计算机视觉的深度学习实践
  4. boost::hana::make用法的测试程序
  5. Postman status: 415_415亩!白云首宗农村土地规模化流转成功签约
  6. IoT与大数据 如何激发数字营销最大潜能?
  7. ~~约数之和(附模板题)
  8. SQL Server 2008中的CTE递归查询
  9. 招行网银常见问题汇总
  10. Java分页工具实现方法
  11. 有替代CV520国产非接触式读写器读卡芯片CI520
  12. 服务器怎么设置自动拨号,网件路由器怎么设置自动拨号
  13. 阿里云服务器遭ddos攻击防御案例
  14. 高德地图获取城市所有小区的POI
  15. python找不到指定模块sklearn怎么办_python中sklearn找不到指定模块怎么办
  16. A-star 算法原理分析
  17. Python 把两张图片拼起来
  18. 东北大学软件项目管理与过程改进复习提纲(2020)——第一章
  19. 第一次书写标书和述标经历
  20. mysqlflush privileges;_mysql什么时候需要flush privileges?

热门文章

  1. Linux bash总结(二) 高级部分(适合初学者学习和非初学者参考)
  2. php php 序列化方法,PHP序列化的4种方法已公布,这是你PHP进阶之路必会的
  3. 2022-2028全球与中国商业和工业微电网市场现状及未来发展趋势
  4. qml 学习要点记录(2)
  5. 正则表达式解析_学习笔记
  6. JVM垃圾回收(GC)原理
  7. 先说好,千万别用这个 App 做坏事
  8. 河南省3加2计算机学校,河南省3+2有哪些学校
  9. JAVA多线程模拟1000米接力赛跑
  10. 第三章 Combining Steering Behavior